This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Starterware/66AK2E05: custom board based on evm_k2e bring up. U-boot hung after relocation.

Part Number: 66AK2E05

Tool/software: Starterware

Hi to all!

I have a custom board based on K2E_EVM. On my board DDR3 placed directly on PCB, but not on SODIMM,

64-bit, no ECC. Memory chip is MT41J128M16-125 on 1600 MHz. I get latest u-boot source code and compile it with

small change in DDR init only part. (Add two structures with static DDR parameters for my chips). Than I load u-boot.bin

in on chip memory of Cortex-A15 Core 0, at address 0xC000000 as stated in u-boot/boart/ti/k2s_evm/README.  

U-boot started, and print init sequence (see below) and go in infinite loop after board_init_f() in hung().

CPU Is working in this moment and I can attach JTAG and connect to Cortex-A15 Core 0 in CCS. I can see DDR3 addresses 

from 0x80000000 and other memory. It seems to be correctly working and copy u-boot. But SP register has value 0x0BADCODE.

I don't know how I can debug this issue. Please give me any advise. I can init DDR via gel file from CCS and can fill it some values

in great range. The same parameters I use in u-boot code. And I disable DXEN bit in KS2_DDRPHY_DATX8_8_OFFSET as stated in datasheet.

register.

Here u-boot log:

initcall: 0c03c8e5

U-Boot 2017.01-dirty (Feb 02 2017 - 17:15:42 +0300)

initcall: 0c00d14d
U-Boot code: 0C000000 -> 0C05DD28 BSS: -> 0C0BEB94
initcall: 0c000ff5
CPU: 66AK2Ex SR1.0
initcall: 0c00d591
Model: Texas Instruments Keystone 2 Edison EVM
initcall: 0c00d17d
I2C: ready
initcall: 0c00d16d
DRAM: initcall: 0c001f49
dram_init()
Configure DDR3A from static params.
DDR3 speed 1600
DRAM: 1 GiB
dram_init(): ddr3_size = 1
get_ram_size(): 0x80000000 [0x40000000]
dram_init(): gd->ram_size = 1073741824
initcall: 0c00d339
Monitor len: 000BEB94
Ram size: 40000000
Ram top: C0000000
initcall: 0c00cff9
initcall: 0c00d105
TLB table from bfff0000 to bfff4000
initcall: 0c00d291
initcall: 0c00d0c5
Reserving 762k for U-Boot at: bff31000
initcall: 0c00d0a1
Reserving 33024k for malloc() at: bdef1000
initcall: 0c00d251
Reserving 80 Bytes for Board Info at: bdef0fb0
initcall: 0c00d295
initcall: 0c00d079
Reserving 200 Bytes for Global Data at: bdef0ee8
initcall: 0c00d029
Reserving 26208 Bytes for FDT at: bdeea888
initcall: 0c00d289
initcall: 0c00d3a1
initcall: 0c00d31d
initcall: 0c00d2a1

RAM Configuration:
Bank #0: 80000000 1 GiB

DRAM: 1 GiB
initcall: 0c00d015
New Stack Pointer is: bdeea860
initcall: 0c00d225
initcall: 0c00d1cd
Relocation Offset is: b3f31000
Relocating to bff31000, new gd at bdef0ee8, sp at bdeea860
board_init_f(): Complete!

Here the CCS window after I connect to CPU in this moment:

CCS window screenshot link. Can't attach large image.

here my ddr3 connection

Here my DDR3 settings from u-boot:

u-boot/board/ti/ks2_evm/ddr3_k2e.c

#define DEBUG
#include <common.h>
#include "ddr3_cfg.h"
#include <asm/arch/ddr3.h>

static struct pll_init_data ddr3_400 = DDR3_PLL_400;
static struct pll_init_data ddr3_333 = DDR3_PLL_333;

#ifdef CONFIG_TARGET_SWH101V
extern struct ddr3_phy_config ddr3phy_k2e_1600_2g;
extern struct ddr3_emif_config ddr3emif_k2e_1600_2g;
#endif

u32 ddr3_init(void)
{
struct ddr3_spd_cb spd_cb;

#ifdef CONFIG_TARGET_SWH101V
 printf("Configure DDR3A from static params.\n");
 spd_cb.ddrspdclock = 1600;
 spd_cb.phy_cfg = ddr3phy_k2e_1600_2g;
 spd_cb.emif_cfg = ddr3emif_k2e_1600_2g;
 spd_cb.ddr_size_gbyte = 1;
#else
if (ddr3_get_dimm_params_from_spd(&spd_cb)) {
printf("Sorry, I don't know how to configure DDR3A.\n"
"Bye :(\n");
for (;;)
;
 } else {
 printf("Detected SO-DIMM [%s]\n", spd_cb.dimm_name);
}
#endif

Custom files with DDR3 params:


u-boot/board/ti/ks2_evm/ddr3_k2e_cfg.c

#include <common.h>
#include <asm/arch/ddr3.h>
#include "ddr3_cfg.h"

struct ddr3_phy_config ddr3phy_k2e_1600_2g = {
 .pllcr = 0x0001C000ul,
 .pgcr1_mask = (IODDRM_MASK | ZCKSEL_MASK),
 .pgcr1_val = ((1 << 2) | (1 << 7) | (1 << 23)),
 .ptr0 = 0x426213CFul,
 .ptr1 = 0xCFC712B3ul,
 .ptr2 = 0, /* not set in gel */
 .ptr3 = 0x08861A80ul,
 .ptr4 = 0x0C827100ul,
 .dcr_mask = (PDQ_MASK | MPRDQ_MASK | BYTEMASK_MASK),
 .dcr_val = ((1 << 10)|(1<<27)),
 .dtpr0 = 0x011CBB66ul,
 .dtpr1 = 0x12840300ul,
 .dtpr2 = 0x5002CE00ul,
 .mr0 = 0x00001C70ul,
 .mr1 = 0x00000006ul,
 .mr2 = 0x00000058ul,
 .dtcr = 0x710035C7ul,
 .pgcr2 = 0x00F07A12ul,
 .zq0cr1 = 0x0001007Bul,
 .zq1cr1 = 0x0001007Bul,
 .zq2cr1 = 0x0001007Bul,
 .pir_v1 = 0x00000033ul,
 .pir_v2 = 0x0000FF81ul,
};

struct ddr3_emif_config ddr3emif_k2e_1600_2g = {
 .sdcfg = 0x6200CE62ul,
 .sdtim1 = 0x166C9855ul,
 .sdtim2 = 0x00001D4Aul,
 .sdtim3 = 0x321DFF53ul,
 .sdtim4 = 0x543F07FFul,
 .zqcfg = 0x70073200ul,
 .sdrfc = 0x00001869ul,
};

If you need and additional info I can provide it. Thank you.

  • Hi Vladimir,

    I've forwarded this to the SW experts. Their feedback should be posted here.

    BR
    Tsvetolin Shulev
  • Hi, Vladimir,

    After you click free-run in the CCS, are you able to hit any key to get u-boot prompt?

    Rex
  • Hi, Rex! 

    Thank you for your answer.

    No, u-bot does't boot to command line prompt.

    It is spinning in bad code handler (as I suspect).

    Update:

    Board by default boot in I2C master mode. And I can start u-bboot only via CCS without any additional initialization with gel-file.

    May be this information will be useful.

  • Hi to all!

    I fix some issues in DDR3 registers settings as stated in sprabx7 spreadsheet.

    At this moment I can boot board to the u-boot command line prompt. But can do it only when I call from CCS this function: Disable_MMU();

    After I load u-boot.bin and do free run. Here the boot log:

    initcall: 0c0359b1


    U-Boot 2017.01-00002-gac715ec-dirty (Feb 08 2017 - 14:52:35 +0300)

    initcall: 0c00c4f9
    U-Boot code: 0C000000 -> 0C0507B8 BSS: -> 0C0A0314
    initcall: 0c000f89
    CPU: 66AK2Ex SR1.0
    initcall: 0c00c929
    Model: Texas Instruments Keystone 2 Edison EVM
    initcall: 0c00c529
    I2C: ready
    initcall: 0c00c519
    DRAM: initcall: 0c001f9d
    dram_init()
    Configure DDR3A from static params.
    DDR3 speed 1600
    configure_secondary_pll()
    ddr3_reset_ddrphy()
    ddr3_init_ddrphy()
    ddr3_init_ddremif()
    DRAM: 1 GiB
    dram_init(): ddr3_size = 1
    get_ram_size(): 0x80000000 [0x40000000]
    dram_init(): gd->ram_size = 1073741824
    initcall: 0c00c6e5
    Monitor len: 000A0314
    Ram size: 40000000
    Ram top: C0000000
    initcall: 0c00c3ed
    initcall: 0c00c63d
    initcall: 0c00c4b9
    Reserving 640k for U-Boot at: bff5f000
    initcall: 0c00c495
    Reserving 33024k for malloc() at: bdf1f000
    initcall: 0c00c5fd
    Reserving 80 Bytes for Board Info at: bdf1efb0
    initcall: 0c00c641
    initcall: 0c00c46d
    Reserving 192 Bytes for Global Data at: bdf1eef0
    initcall: 0c00c41d
    Reserving 26208 Bytes for FDT at: bdf18890
    initcall: 0c00c635
    initcall: 0c00c74d
    initcall: 0c00c6c9
    initcall: 0c00c64d

    RAM Configuration:
    Bank #0: 80000000 1 GiB

    DRAM: 1 GiB
    initcall: 0c00c409
    New Stack Pointer is: bdf18870
    initcall: 0c00c5d1
    initcall: 0c00c579
    Relocation Offset is: b3f5f000
    Relocating to bff5f000, new gd at bdf1eef0, sp at bdf18870
    board_init_f(): Complete!
    board_init_r()
    initcall: bff6b8f3
    initcall: bff6b7a9
    initcall: 0c00c8e5 (relocated to bff6b8e5)
    initcall: 0c00c8bd (relocated to bff6b8bd)
    initcall: 0c00c8ef (relocated to bff6b8ef)
    initcall: 0c00c891 (relocated to bff6b891)
    Pre-reloc malloc() used 0x10c bytes (0 KB)
    initcall: 0c00c7bd (relocated to bff6b7bd)
    initcall: 0c00c7a5 (relocated to bff6b7a5)
    initcall: 0c00c87f (relocated to bff6b87f)
    initcall: 0c00c873 (relocated to bff6b873)
    initcall: 0c00200d (relocated to bff6100d)
    board_init()
    initcall: 0c030f75 (relocated to bff8ff75)
    initcall: 0c0121c9 (relocated to bff711c9)
    initcall: 0c00c869 (relocated to bff6b869)
    initcall: 0c00c855 (relocated to bff6b855)
    Now running in RAM - U-Boot at: bff5f000
    initcall: 0c00c7c1 (relocated to bff6b7c1)
    initcall: 0c00c80d (relocated to bff6b80d)
    spi_find_chip_select: plat=bdf1f308, cs=0
    spi_flash_std_probe: slave=bdf5f5f0, cs=0
    davinci_spi_set_speed speed 54000000
    davinci_spi_set_mode mode 0
    spi_flash_decode_fdt: Cannot decode address
    SF: Detected n25q256a with page size 256 Bytes, erase size 4 KiB, total 32 MiB
    davinci_spi_set_speed speed 30000000
    davinci_spi_set_mode mode 3
    spi_get_bus_and_cs: bus=bdf1f238, slave=bdf5f5f0
    initcall: 0c00c8f9 (relocated to bff6b8f9)
    initcall: 0c0121dd (relocated to bff711dd)
    initcall: 0c00c803 (relocated to bff6b803)
    initcall: 0c010a61 (relocated to bff6fa61)
    initcall: 0c001ec5 (relocated to bff60ec5)
    initcall: 0c000c05 (relocated to bff5fc05)
    initcall: 0c00c7f9 (relocated to bff6b7f9)
    initcall: 0c00c7e1 (relocated to bff6b7e1)
    initcall: 0c00c7cd (relocated to bff6b7cd)
    Net: eth_initialize()
    eth_common_init()
    No ethernet found.
    eth_initialize(): num_devices = 0
    initcall: 0c00c7c5 (relocated to bff6b7c5)
    Hit any key to stop autoboot: 0
    K2E EVM #

    I try to understand where in u-boot implemented MMU disabling? How I can implement this function in C and call it before u-boot relocation occur? Please help me! Thank you.

  • In u-boot code arch/cpu/arm/armv7/start.S I found a function cpu_init_cp15 where MMU and cache are disabled. But it is not compile in default u-boot configuration.  In file include/configs/ti_armv7_keystone2.h I edit macros and now board can get u-boot command line prompt without using gel file in CCS. But I still don't understand is correct behavior of u-boot by default or not? Why it is skip calling cpu_init_cp15 by default?

    /* #define CONFIG_SKIP_LOWLEVEL_INIT */ /* U-Boot is a 2nd stage loader */

    #define CONFIG_SKIP_LOWLEVEL_INIT_ONLY

    #define CONFIG_BOARD_EARLY_INIT_F

  • Hi, Vladimir,

    Keystone-2 platforms work a bit different from other devices. That low level init code is separated out of u-boot and is called boot monitor. The MMU disabling is done in boot monitor.

    Rex
  • Hi, Rex!

    Thank you for your answer! On this wiki page present a small bit information about boot monitor. I can build boot monitor, but how I can use it on my board I don't have clearly understanding. Where I can found more information about boot monitor usage and how I can run it on my board? Boot monitor is really need or I can use u-boot only if add some initialization code? Were I can found more information about K2 platforms bring up sequence? I have some trouble with Ethernet initialization, and disable it now, may be this is related to boot monitor too?

    P.S. On my board u-boot does not start correctly from the first time after adding cpu_init_cp15, only in the second time board started successfully:

    1) power up board, run CCS and connect to A15 core 0

    2) load u-boot.bin and set PC to 0x0C000000, F8, CPU starting. Console output is clear.

    3) I press pause, see that u-boot is cycling in _start() routing. I load u-boot.bin again, and set PC to 0x0C000000, F8 and see console output.

  • Hi, Vladimir,

    Where do you get the u-boot code from? I just noticed that your u-boot version is 2017.01. You should download TI Processor SDK for K2E instead of getting u-boot code from git repository. You can get it from git repository if you know your way around. Please take a look at the ProcSDK Linux developer's guide at

    processors.wiki.ti.com/.../Processor_SDK_Linux_Software_Developer’s_Guide

    if you have not seen this page yet. This page has link to the ProcSDK download page, and all other useful info.

    The document you refer to is from MCSDK which is OK as a reference, but a bit old. The MCSDK was merged to ProcSDK and things have been changed in many places. You need to be careful when getting info from MCSDK. One obvious difference which you may have noticed is the u-boot load address changed from 0x0c001000 in MCSDK to 0x0c000000 in ProcSDK.

    How do you build your u-boot image? do you configure the u-boot to be k2e_evm by making k2e_evm_config? The ProcSDK release includes u-boot, linux Kernel, and boot monitor source code in the package, and the wiki page has instructions on how to build them. I just use the u-boot.bin I built in ProcSDK, and boot up the EVM to u-boot prompt using CCS following the u-boot README instructions without any issues.


    Rex
  • Hi, Rex!

    Thank you for link on new documents.

    At the first time I use a  ProcSDK from this page:

    http://software-dl.ti.com/processor-sdk-linux/esd/K2E/latest/index_FDS.html

    and download and install ti-processor-sdk-linux-k2e-evm-03.02.00.05-Linux-x86-Install.bin (it is latest version of procSDK as I see)

    Rex, u-boot from ProcSDK and from git very similar. And I start use git u-boot from here:

    origin git://git.ti.com/ti-u-boot/ti-u-boot.git (fetch)
    origin git://git.ti.com/ti-u-boot/ti-u-boot.git (push)

    Today I test my code changes (in ddr3 initialization part from static structures not from SODIMM config EEPROM) on u-boot from SDK with the same result as in git version of u-boot.

    i.e ProcSDK:u-bbot == git:u-boot

    ******** ***** *******

    RAM Configuration:
    Bank #0: 80000000 1 GiB

    DRAM: 1 GiB
    initcall: 0c00c4b9
    New Stack Pointer is: bdef5860
    initcall: 0c00c6c9
    initcall: 0c00c671
    Relocation Offset is: b3f3c000
    Relocating to bff3c000, new gd at bdefbee8, sp at bdef5860
    board_init_f(): Complete!

    CPU will loopback with PC = 0x0BADC0DE after print this messsages in console.

    I rebild u-boot with instruction:

    make distclean && make k2e_evm_defconfig && make -j4 u-boot.bin

    use different Linaro toolchains:

    arm-linux-gnueabihf-gcc (Linaro GCC 6.2-2016.11) 6.2.1 20161016

    arm-linux-gnueabihf-gcc (crosstool-NG linaro-1.13.1-4.7-2013.03-20130313 - Linaro GCC 2013.03) 4.7.3 20130226 (prerelease)

    and from SDK

    arm-linux-gnueabihf-gcc (Linaro GCC 5.3-2016.02) 5.3.1 20160113

    with the same result.

    1) Rex, can you tell me, please, that boot mode on your EVM?

    2) I have I2C mode only (I2C ROM is clean), without possibility change it :( and may boot ROM made some changes of registers before I start loading the u-boot.bin?

    3) Can you tell me, please value of REG_CTXA15_CP15_C1_SCTLR register, when you connect to board before loading gel-file and u-boot.bin image? In my case it is:  0x00C5107D - MMU is enabled (bit0 == 1).

    If I clear MMU bit and set REG_CTXA15_CP15_C1_SCTLR =  0x00C5107C and then load u-boot.bin - all work fine!!! I have a console prompt and can test DDR3 range from 0x80000000 - 0xB0000000 without any errors many times.

    4) May be you can tell me how I can test DDR3 from CCS more complexl than u-boot test?

    I don't have any ideas more :( 

  • Hi, Vladimir,

    Using upstream u-boot is fine as I said, but it is for Open Source Community, not packaged for K2E EVM. I rarely work on upstream version, and am not sure if k2e_evm_config is upstreamed. If it is, then as long as you run the configuration, then it is ok. When you build, you need to specify CROSS_COMPILE. you should use "make CROSS_COMPILE=arm-linux-gnueabihf- O=k2e_evm k2e_evm_config all" command if you are not.

    1. I follow exactly the instruction in ks2_evm/README, and it says to set the SW1 dip switch to "No Boot/JTAG DSP Little Endian Boot Mode" (On-On-On-On).

    2. Not sure how this works

    3. Working on ARM Linux/uboot, you don't need to run gel file.It's irrelevant. Since it is in No Boot mode, nothing is configured, the memory from 0x00c00000-0x00d00000 are all 0's. In K2E datasheet, the 5M memory area starting at 0x00900000-0x00DFFFFF is reserved.

    4. TI supports 2 OS on ARM, either Linux or RTOS. Depending on which environment you want to be in. In Linux, u-boot will configure the system with basic features it needs to use. DDR is one of them. Once you have u-boot up, you can use memory dump command in uboot, md, to examine the memory. In RTOS, the gel file will do the system initialization, and from memory window, you can dump memory contents.

    Have you been able to use a TI K2E EVM and bring up the u-boot.bin image built from ProcSDK u-boot folder using CCS? I recommend you do that firstto get a baseline if you haven't tried it yet.

    Rex

  • Hi, Rex!

    Thank you for your detail answer!

    1) Rex, please can you tell me value of REG_CTXA15_CP15_C1_SCTLR register value, when you connect to board in No boot mode, before loading u-boot.bin image? I always see that it is:  0x00C5107D - MMU is enabled (bit0 == 1).

    Update:

    To boot from I2C:

    I convert spl/u-boot-spl.bin into GPH image and write it in i2c eeprom and also write u-boot-spi.gph in SPI NOR. After power up board I see that CPU ROM code start reading whole image from i2c but CPU not started :( and stalled. (CCS can't connect to A15_0 core)

    If I disable MMU in SCTLR and than load spl/u-boot-spl.bin via emulator my system bring up completely and I have a u-boot console.

  • Hi, Vladimir,

    Somehow my cut and paste of the screenshot didn't work. Here is another try to paste my screenshot.

  • Hi, Rex!

    Thank you for your answer! Now, I have u-boot.bin working on on my board. Problem was solved than we made some hardware changes on board and power up it in sleep mode. At this moment I can load and start u-boot.bin from CCS or boot board from SPI NOR flash via u-boot-spi.gph image. But only in u-boot console. Linux don't start properly. Here description of problem:

    All software components from Processor SDK and they was properly configured and build without errors as stated in appropriate manuals:

    u-boot-spi.gph

    skern-k2e.bin - compile with #define DEBUG 

    k2-fw-initrd.cpio.gz (not build - use from prebuilt images)

    keystone-k2e-evm.dtb

    zImage - compile with #define DEBUG in some files

    Here the boot messages:

    **** cut some output above ****

    initr_net()
    Net: board_eth_init()
    get_eth_env_param()
    get_eth_env_param()
    K2E_EMAC0, K2E_EMAC1
    Warning: K2E_EMAC1 (eth1) using random MAC address - 82:c7:db:cf:8a:56

    initr_net(): Complete!
    initcall: 0c00d4cd (relocated to bff474cd)
    Hit any key to stop autoboot: 0

    K2E_EMAC0 Waiting for SGMII auto negotiation to complete. done
    K2E_EMAC0 Waiting for PHY auto negotiation to complete. done
    Using K2E_EMAC0 device
    TFTP from server 192.168.0.102; our IP address is 192.168.0.241
    Filename 'swh101v/skern-k2e.bin'.
    Load address: 0xc1f0000
    Loading: #######
    5.9 KiB/s
    done
    Bytes transferred = 32832 (8040 hex)
    DEBUG: skern_init(): CPU0: from = 0x00000001 dsp_base = 0x01e80000 freq = 208333333

    DEBUG: skern_init(): Secure Mode: Core freq - 208333333 Hz

    K2_BM_15. 07-nogit SoC:k2e built:10:53:40, Mar 6 2017

    ## installed monitor @ 0xc1f0000, freq [208333333], status 203390975

    K2E_EMAC0 Waiting for SGMII auto negotiation to complete. done
    Using K2E_EMAC0 device
    TFTP from server 192.168.0.102; our IP address is 192.168.0.241
    Filename 'swh101v/k2-fw-initrd.cpio.gz'.
    Load address: 0x88080000
    Loading: #############
    1.7 MiB/s
    done
    Bytes transferred = 64887 (fd77 hex)

    K2E_EMAC0 Waiting for SGMII auto negotiation to complete. done
    Using K2E_EMAC0 device
    TFTP from server 192.168.0.102; our IP address is 192.168.0.241
    Filename 'swh101v/keystone-k2e-evm.dtb'.
    Load address: 0x88000000
    Loading: #########
    1.5 MiB/s
    done
    Bytes transferred = 44611 (ae43 hex)

    K2E_EMAC0 Waiting for SGMII auto negotiation to complete. done
    Using K2E_EMAC0 device
    TFTP from server 192.168.0.102; our IP address is 192.168.0.241
    Filename 'swh101v/zImage'.
    Load address: 0x82000000
    Loading: #################################################################
    #################################################################
    #################################################################
    #################################################################
    #################################################################
    #################################################################
    #################################################################
    #################################################################
    #################################################################
    #################################################################
    ##############################
    1.6 MiB/s
    done
    Bytes transferred = 3480832 (351d00 hex)
    Kernel image @ 0x82000000 [ 0x000000 - 0x351d00 ]
    ## Flattened Device Tree blob at 88000000
    Booting using the fdt blob at 0x88000000
    Loading Ramdisk to 8fff0000, end 8ffffd77 ... OK
    Loading Device Tree to 8ffe2000, end 8ffefe42 ... OK
    ft_board_setup()
    ft_board_setup_ex()

    Starting kernel ...

    Uncompressing Linux... done, booting the kernel.

    DEBUG: skern_poweron_cpu(): >>>> skern_poweron_cpu(1) >>>>

    DEBUG: skern_123_init(): Secure Mode: Core freq - 208333333 Hz

    DEBUG: skern_poweron_cpu(): >>>> skern_poweron_cpu(2) >>>>

    DEBUG: skern_123_init(): Secure Mode: Core freq - 208333333 Hz

    DEBUG: skern_poweron_cpu(): >>>> skern_poweron_cpu(3) >>>>

    DEBUG: skern_123_init(): Secure Mode: Core freq - 208333333 Hz

    And boot process stop here and I can't boot to linux :(

    I was try to debug this issue, and found that board is working in some linux or monitor area.

    Below I show dump of registers from CCS, than I connect to board via JTAG

    Core Registers
    PC 0xC029F114 Program Counter [Core]
    SP 0xEF04BBE8 General Purpose Register 13 [Core]
    LR 0xC0016E10 General Purpose Register 14 [Core]
    CPSR 0xA0000113 Stores the status of interrupt enables and critical processor status signals [Core]
    R0 0xC0933448 General Purpose Register 0 [Core]
    R1 0x00000007 General Purpose Register 1 [Core]
    R2 0x3C8CDC70 General Purpose Register 2 [Core]
    R3 0xC04EE124 General Purpose Register 3 [Core]
    R4 0xC0967D98 General Purpose Register 4 [Core]
    R5 0x00032DCC General Purpose Register 5 [Core]
    R6 0x4E07F67A General Purpose Register 6 [Core]
    R7 0x0001F8B0 General Purpose Register 7 [Core]
    R8 0xC0906FB4 General Purpose Register 8 [Core]
    R9 0x00000056 General Purpose Register 9 [Core]
    R10 0x066665B0 General Purpose Register 10 [Core]
    R11 0xEF04BC04 General Purpose Register 11 [Core]
    R12 0xEF04BBD8 General Purpose Register 12 [Core]
    R13 0xEF04BBE8 General Purpose Register 13 [Core]
    R14 0xC0016E10 General Purpose Register 14 [Core]

    Rex, can you tell me, please about possible reasons of such behavior and how I can debug this issue? If you need any additional information I will provide it. Thank you.

    P.S. U-boot environment settings:

    addr_mon=0x0C1F0000
    addr_secdb_key=0xc000000
    addr_ubi=0x82000000
    arch=arm
    args_all=setenv bootargs console=ttyS0,115200n8 rootwait=1
    args_net=setenv bootargs ${bootargs} rootfstype=nfs root=/dev/nfs rw nfsroot=${serverip}:${nfs_root},${nfs_options} ip=dhcp
    args_ramfs=setenv bootargs ${bootargs} rdinit=/sbin/init rw root=/dev/ram0 initrd=0x808080000,80M
    args_ubi=setenv bootargs ${bootargs} rootfstype=ubifs root=ubi0:rootfs rootflags=sync rw ubi.mtd=ubifs,2048
    baudrate=115200
    board=ks2_evm
    board_name=ks2_evm
    boot=net
    boot_fdt=try
    bootargs=console=ttyS0,115200n8 rootwait=1 rootfstype=nfs root=/dev/nfs rw nfsroot=192.168.0.102:/home/karak/targetfs-swh101v,v3,tcp,rsize=4096,wsize=4096 ip=dhcp
    bootcmd=run init_${boot} get_mon_${boot} run_mon init_fw_rd_${boot} get_fdt_${boot} get_kern_${boot} run_kern
    bootcmd_old=run init_${boot} get_mon_${boot} run_mon init_fw_rd_${boot} get_fdt_${boot} get_kern_${boot} run_kern
    bootdelay=2
    bootdir=/boot
    bootm_size=0x10000000
    burn_ubi=nand erase.part ubifs; nand write ${addr_ubi} ubifs ${filesize}
    burn_uboot_nand=nand erase 0 0x100000; nand write ${loadaddr} 0 ${filesize}
    burn_uboot_spi=sf probe; sf erase 0 0x90000; sf write ${loadaddr} 0 ${filesize}
    cpu=armv7
    ethact=K2E_EMAC0
    ethaddr=b4:99:4c:11:64:36
    fdt_addr_r=0x88000000
    fdtaddr=0x88000000
    fdtcontroladdr=beef3388
    fileaddr=88000000
    filesize=ae43
    get_fdt_net=tftp ${fdtaddr} ${tftp_root}/${name_fdt}
    get_fdt_nfs=nfs ${fdtaddr} ${nfs_root}/boot/${name_fdt}
    get_fdt_ramfs=dhcp ${fdtaddr} ${tftp_root}/${name_fdt}
    get_fdt_ubi=ubifsload ${fdtaddr} ${bootdir}/${name_fdt}
    get_fs_ramfs=dhcp ${rdaddr} ${tftp_root}/${name_fs}
    get_kern_net=tftp ${loadaddr} ${tftp_root}/${name_kern}
    get_kern_nfs=nfs ${loadaddr} ${nfs_root}/boot/${name_kern}
    get_kern_ramfs=dhcp ${loadaddr} ${tftp_root}/${name_kern}
    get_kern_ubi=ubifsload ${loadaddr} ${bootdir}/${name_kern}
    get_mon_net=tftp ${addr_mon} ${tftp_root}/${name_mon}
    get_mon_nfs=nfs ${addr_mon} ${nfs_root}/boot/${name_mon}
    get_mon_ramfs=dhcp ${addr_mon} ${tftp_root}/${name_mon}
    get_mon_ubi=ubifsload ${addr_mon} ${bootdir}/${name_mon}
    get_ubi_net=dhcp ${addr_ubi} ${tftp_root}/${name_ubi}
    get_ubi_nfs=nfs ${addr_ubi} ${nfs_root}/boot/${name_ubi}
    get_uboot_net=tftp ${loadaddr} ${tftp_root}/${name_uboot}
    get_uboot_nfs=nfs ${loadaddr} ${nfs_root}/boot/${name_uboot}
    init_fw_rd_net=tftp ${rdaddr} ${tftp_root}/${name_fw_rd}; run set_rd_spec
    init_fw_rd_ramfs=setenv rd_spec -
    init_fw_rd_ubi=ubifsload ${rdaddr} ${bootdir}/${name_fw_rd}; run set_rd_spec
    init_net=run args_all args_net
    init_nfs=setenv autoload no; dhcp; run args_all args_net
    init_ramfs=run args_all args_ramfs get_fs_ramfs
    init_ubi=run args_all args_ubi; ubi part ubifs; ubifsmount ubi:rootfs;
    ipaddr=192.168.0.241
    kernel_addr_r=0x82000000
    loadaddr=0x82000000
    mem_lpae=0
    mtdparts=mtdparts=davinci_nand.0:1024k(bootloader)ro,512k(params)ro,-(ubifs)
    name_fdt=keystone-k2e-evm.dtb
    name_fs=arago-console-image-k2e-evm.cpio.gz
    name_fw_rd=k2-fw-initrd.cpio.gz
    name_kern=zImage
    name_mon=skern-k2e.bin
    name_ubi=k2e-evm-ubifs.ubi
    name_uboot=u-boot-spi.gph
    nfs_options=v3,tcp,rsize=4096,wsize=4096
    nfs_root=/home/karak/targetfs-swh101v
    no_post=1
    pxefile_addr_r=0x80100000
    ramdisk_addr_r=0x88080000
    rd_spec=0x88080000:8040
    rdaddr=0x88080000
    run_kern=bootz ${loadaddr} ${rd_spec} ${fdtaddr}
    run_mon=mon_install ${addr_mon}
    scriptaddr=0x80000000
    serverip=192.168.0.102
    set_rd_spec=setenv rd_spec ${rdaddr}:${filesize}
    soc=keystone
    stderr=serial@02530c00
    stdin=serial@02530c00
    stdout=serial@02530c00
    tftp_root=swh101v
    vendor=ti
    ver=U-Boot 2016.05-00304-ged00144-dirty (Mar 02 2017 - 16:51:47 +0300)