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.

AM4378: AM4378 error in booting from SPI Flash

Part Number: AM4378
Other Parts Discussed in Thread: TPS65218, AM4372, TPS62362, SEGGER,

Hi,

   My objective is boot from SPI Flash, however I am getting this error -->> 

=> sf probe
Invalid bus 0 (err=-19)
Failed to initialize SPI flash at 0:0 (error -19)
=> 

SPI Flash: AT45DB161E

Not able to find drivers in the code, can you please provide the drivers too for AT45DB161E chip.

Please help me resolve this, I am new to this development. The board boots successfully from SD Card.

I am trying to follow this link- 3.1. U-Boot — Processor SDK Linux Documentation for SPI Boot. Are there any other prerequisites before starting with this link. Buildroot is used as base code.

Thx,

Kiran.

output_2022-01-05_22-41-34.log
U-Boot SPL 2017.01 (Dec 30 2021 - 11:21:36)
Trying to boot from MMC1
SPL: Please implement spl_start_uboot() for your board
SPL: Direct Linux boot not active!
reading u-boot.img
reading u-boot.img
reading u-boot.img
No matching DT out of these options:
   tco_am437x_pascal


U-Boot 2017.01 (Dec 30 2021 - 11:21:36 +0530)

CPU  : AM437X-GP rev 1.2
Model: TI AM437x GP EVM
DRAM:  512 MiB
PMIC:  TPS65218
MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1
reading uboot.env

** Unable to read "uboot.env" from mmc0:1 **
Using default environment

Net:   <ethaddr> not set. Validating first E-fuse MAC
Could not get PHY for cpsw: addr 0
cpsw, usb_ether
Hit any key to stop autoboot:  0  0
=> 
=> 
=> 
=> 
=> 
=> 
=> 
=> dm tree
 Class       Probed   Name
----------------------------------------
 root        [ + ]    root_driver
 simple_bus  [ + ]    `-- ocp
 simple_bus  [   ]        |-- l4_wkup@44c00000
 simple_bus  [   ]        |   `-- scm@210000
 serial      [ + ]        |-- serial@44e09000
 serial      [   ]        |-- serial@481a8000
 timer       [ + ]        |-- timer@48040000
 gpio        [ + ]        |-- gpio@44e07000
 gpio        [ + ]        |-- gpio@4804c000
 gpio        [ + ]        |-- gpio@481ae000
 gpio        [ + ]        |-- gpio@48320000
 gpio        [ + ]        |-- gpio@48322000
 i2c         [ + ]        `-- i2c@44e0b000
 i2c_generic [ + ]            `-- generic_24
=> 
 Class       Probed   Name
----------------------------------------
 root        [ + ]    root_driver
 simple_bus  [ + ]    `-- ocp
 simple_bus  [   ]        |-- l4_wkup@44c00000
 simple_bus  [   ]        |   `-- scm@210000
 serial      [ + ]        |-- serial@44e09000
 serial      [   ]        |-- serial@481a8000
 timer       [ + ]        |-- timer@48040000
 gpio        [ + ]        |-- gpio@44e07000
 gpio        [ + ]        |-- gpio@4804c000
 gpio        [ + ]        |-- gpio@481ae000
 gpio        [ + ]        |-- gpio@48320000
 gpio        [ + ]        |-- gpio@48322000
 i2c         [ + ]        `-- i2c@44e0b000
 i2c_generic [ + ]            `-- generic_24
=> sf probe
Invalid bus 0 (err=-19)
Failed to initialize SPI flash at 0:0 (error -19)
=> 
=> mmc rescan
=> 
=> mmc part

Partition Map for MMC device 0  --   Partition Type: DOS

Part	Start Sector	Num Sectors	UUID		Type
  1	2048      	102400    	2c09d3d2-01	0e Boot
  2	104448    	1024000   	2c09d3d2-02	83
  3	1128448   	204800    	2c09d3d2-03	83
  4	1333248   	6072320   	2c09d3d2-04	0c
=> 

Partition Map for MMC device 0  --   Partition Type: DOS

Part	Start Sector	Num Sectors	UUID		Type
  1	2048      	102400    	2c09d3d2-01	0e Boot
  2	104448    	1024000   	2c09d3d2-02	83
  3	1128448   	204800    	2c09d3d2-03	83
  4	1333248   	6072320   	2c09d3d2-04	0c
=> sf probe 0:0
Invalid bus 0 (err=-19)
Failed to initialize SPI flash at 0:0 (error -19)
=> 
Invalid bus 0 (err=-19)
Failed to initialize SPI flash at 0:0 (error -19)
=> 
U-Boot SPL 2017.01 (Dec 30 2021 - 11:21:36)
Trying to boot from MMC1
SPL: Please implement spl_start_uboot() for your board
SPL: Direct Linux boot not active!
reading u-boot.img
reading u-boot.img
reading u-boot.img
No matching DT out of these options:
   tco_am437x_pascal


U-Boot 2017.01 (Dec 30 2021 - 11:21:36 +0530)

CPU  : AM437X-GP rev 1.2
Model: TI AM437x GP EVM
DRAM:  512 MiB
PMIC:  TPS65218
MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1
reading uboot.env

** Unable to read "uboot.env" from mmc0:1 **
Using default environment

# 

dts snap:


&spi0 {
pinctrl-names = "default";
pinctrl-0 = <&spi0_pins>;
status = "okay";
ti,spi-num-cs = <3>;
/* D0 for MOSI, D1 for MISO */
ti,pindir-d0-out-d1-in = <1>;

/* 2MiB flash. Contains U-boot. */
at45db161e@0 {
compatible = "atmel,at45", "atmel,dataflash";
reg = <0>;
/* Max speed of OMAP SPI controller is 48MHz. The flash can handle 70MHz. */
spi-max-frequency = <1000000>;

partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;

spl {
reg = <0x0 0x020000>; //128KiB
read-only;
};

uboot {
reg = <0x020000 0x080000>; //512KiB
read-only;
};

env {
reg = <0x0A0000 0x02000>; //8KiB
};

extra {
reg = <0x0A2000 0x15e000>; //1400KiB
};

};
};

};

dtsi snap:


target-module@30000 { /* 0x48030000, ap 65 08.0 */
compatible = "ti,sysc-omap2", "ti,sysc";
ti,hwmods = "spi0";
reg = <0x30000 0x4>,
<0x30110 0x4>,
<0x30114 0x4>;
reg-names = "rev", "sysc", "syss";
ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY |
SYSC_OMAP2_SOFTRESET |
SYSC_OMAP2_AUTOIDLE)>;
ti,sysc-sidle = <SYSC_IDLE_FORCE>,
<SYSC_IDLE_NO>,
<SYSC_IDLE_SMART>;
ti,syss-mask = <1>;
/* Domains (P, C): per_pwrdm, l4ls_clkdm */
clocks = <&l4ls_clkctrl AM4_L4LS_SPI0_CLKCTRL 0>;
clock-names = "fck";
#address-cells = <1>;
#size-cells = <1>;
ranges = <0x0 0x30000 0x1000>;

spi0: spi@0 {
compatible = "ti,am4372-mcspi","ti,omap4-mcspi";
reg = <0x0 0x400>;
interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled";
};
};

  • Hi Kiran,
    Which TI SDK release package is used in your design?
    A good reference on board porting
    software-dl.ti.com/.../How_to_Guides_Board_Port.html
    Best,
    -Hong

  • Hi,

        U-boot version is uboot-ti2017.04-rc2. Linux version is 5.4.0, we are using buildroot-2020.02.01.

    Thx,

    Kiran

  • Hi Kiran,
    Some general pointers:
    1. Are you trying to boot from SPI or use SPI after booting?
    If booting from SPI is required, you may refer to AM43xx TRM 5.2.6.6 SPI, especially on Table 5-34. Pins Used for SPI Boot.
    2. In TI Linux SDK release, the default AM43xx u-boot defconfig file "$uboot/configs/am43xx_evm_defconfig" includes some flags for supporting QSPI flash on some TI AM43xx reference boards:
    CONFIG_SPI=y
    CONFIG_TI_QSPI=y
    ...
    I think you may refer to the AM335x u-boot defconfig file "$uboot/configs/am335x_evm_defconfig" to include the following flag(s) instead to include "$uboot/drivers/spi/omap3_spi.c" file into the u-boot build:
    CONFIG_OMAP3_SPI=y
    ...
    3. You may also refer to kernel driver section on SPI usage.
    software-dl.ti.com/.../SPI.html

    Best,
    -Hong

  • Hi,

        I have already enabled the config flags as mentioned above. So far I think the drivers for SPI are getting triggered, SPI is getting listed in dm tree command. However the sf probe command still fails. Please find below my debug log. SPI status command is sent but reads back 0xFF. Also I have enabled MTD configuration, is anything else required to get this resolved.


    U-Boot SPL 2017.01 (Jan 19 2022 - 15:07:10)
    Trying to boot from MMC1
    SPL: Please implement spl_start_uboot() for your board
    SPL: Direct Linux boot not active!
    reading u-boot.img
    reading u-boot.img
    reading u-boot.img


    U-Boot 2017.01 (Jan 19 2022 - 15:07:10 +0530)

    CPU : AM437X-GP rev 1.2
    Model: TI AM437x GP EVM
    DRAM: 512 MiB

    uclass_get_device_by_seq: id 20 seq 0
    PMIC: TPS65218
    MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1
    reading uboot.env

    ** Unable to read "uboot.env" from mmc0:1 **
    Using default environment

    Net: <ethaddr> not set. Validating first E-fuse MAC
    Could not get PHY for cpsw: addr 0
    cpsw, usb_ether
    Hit any key to stop autoboot: 0 0
    =>
    => dm tree
    Class Probed Name
    ----------------------------------------
    root [ + ] root_driver
    simple_bus [ + ] `-- ocp
    simple_bus [ ] |-- l4_wkup@44c00000
    simple_bus [ ] | `-- scm@210000
    serial [ + ] |-- serial@44e09000
    serial [ ] |-- serial@481a8000
    timer [ + ] |-- timer@48040000
    gpio [ + ] |-- gpio@44e07000
    gpio [ + ] |-- gpio@4804c000
    gpio [ + ] |-- gpio@481ae000
    gpio [ + ] |-- gpio@48320000
    gpio [ + ] |-- gpio@48322000
    i2c [ + ] |-- i2c@44e0b000
    i2c_generic [ + ] | `-- generic_24
    spi [ ] `-- spi@48030000
    spi_flash [ ] `-- at45db161e@0
    =>
    => dm uclass
    uclass 0: root
    - * root_driver @ 9df1f028, seq 0, (req -1)

    uclass 9: simple_bus
    - * ocp @ 9df1f0b0, seq 0, (req -1)
    - l4_wkup@44c00000 @ 9df1f118
    - scm@210000 @ 9df1f180

    uclass 19: gpio
    - * gpio@44e07000 @ 9df1f380, seq 0, (req -1)
    - * gpio@4804c000 @ 9df1f3e8, seq 1, (req -1)
    - * gpio@481ae000 @ 9df1f450, seq 2, (req -1)
    - * gpio@48320000 @ 9df1f4b8, seq 3, (req -1)
    - * gpio@48322000 @ 9df1f520, seq 4, (req -1)

    uclass 20: i2c
    - * i2c@44e0b000 @ 9df1f5a8, seq 0, (req 0)

    uclass 22: i2c_generic
    - * generic_24 @ 9df1f920, seq 0, (req -1)

    uclass 33: mtd
    uclass 54: serial
    - * serial@44e09000 @ 9df1f208, seq 0, (req 0)
    - serial@481a8000 @ 9df1f278

    uclass 55: spi
    - spi@48030000 @ 9df1f620, seq -1, (req 0)

    uclass 57: spi_flash
    - at45db161e@0 @ 9df1f698

    uclass 58: spi_generic
    uclass 62: timer
    - * timer@48040000 @ 9df1f308, seq 0, (req -1)


    => sf probe

    uclass_get_device_by_seq: id 55 seq 0

    Kiran Inside spi_get_bus_and_cs - spi@48030000

    Inside spi_dataflash_probe

    spi_flash_read_write: 9f len 1

    spi_flash_read_write: returned 0 data_in 255

    Calling spi_flash_cmd

    spi_flash_read_write: d7 len 1

    spi_flash_read_write: returned 0 data_in 255

    dataflash_status: ret = 0 status = 255
    dataflash: read status error 255

    spi_flash @0:0 spi_flash@0:0
    Failed to initialize SPI flash at 0:0 (error -19)
    =>

    Thx,

    Kiran.

     

  • Hi Kiran,
    I tested the SPI flash on TI AM335x GP EVM as I don't have AM43xx board with the SPI flash installed.
    As shown below, the SPL flash on AM335x GP EVM is Winbond W25Q64CV:

    => sf probe
    SF: Detected w25q64cv with page size 256 Bytes, erase size 4 KiB, total 8 MiB

    I uploaded in attachment the call flow I captured using T32 JTAG debugger when running "sf probe":
    1. Some relevant SPI functions in the call flow:
    - spi_claim_bus() is from "$u-boot/drivers/spi/omap3_spi.c"
    - spi_flash_probe() is in "$u-boot/drivers/mtd/spi/spi-nor-core.c"
    2. The MCSPI_CH0CONF register @4803012C changes to "0x000913C7" from the default one "0x00060000" with "sf probe"

    Do we have JTAG access on your HW setup?
    Best,
    -Hong

    am3_spi_probe_flow.txt
    B::Register
    N N  R0   9DF4F9E0  R8          0  ^S+ ^Stack_+
    Z _  R1          0  R9   9DF46EB8
    C C  R2   FFFFFFFC  R10         2
    V _  R3          0  R11         3
    Q _  R4   9DF4FA20  R12  9DF4FB9C
         R5   9DF4F9E0  R13  9DF385C0
    0 _  R6          0  R14  9FF8E557
    1 _  R7   016E3600  PC   9FF912BC
    2 _  SPSR        0  CPSR A00001B3
    3 _
    4 _  USR:           FIQ:
         R8          0  R8   10800008
         R9   9DF46EB8  R9       0100
    I I  R10         2  R10  10000000
    F _  R11         3  R11  18200000
         R12  9DF4FB9C  R12  08040080
    T T  R13         0  R13         0
    J _  R14         0  R14         0
    svc                 SPSR        0
    nsec
         SVC:           IRQ:
    A A  R13  9DF385C0  R13  C95FAFF8
    E _  R14  9FF8E557  R14  D53BBBB5
         SPSR        0  SPSR        0
    0 _
    1 _  UND:           ABT:
    2 _  R13  00108000  R13         0
    3 _  R14      10C0  R14         0
         SPSR        0  SPSR        0
    
         MON:
         R13
         R14
         SPSR
    B::Var.Frame_/Locals_/Caller
    -000|spi_claim_bus(
        |    slave = 0x9DF4F9E0)
        |  priv = 0x9DF4F9E0
        |  __v = 0x2
        |  __v = 0x15
        |  __v = 0x1
        |
    -001|spi_flash_probe_slave(inline)
    -001|spi_flash_probe(
        |  ?,
        |  ?,
        |  ?,
        |  ?)
        |  bus = 0x9DF4F9E0
        |  flash = 0x9DF4FA20
        |  flash = 0x9DF4FA20
        |  spi = 0x9DF4F9E0
        |  ret = 0x9DF4F9E0
        |
        |...
        |#include "sf_internal.h"
        |
        |/**
        | * spi_flash_probe_slave() - Probe for a SPI flash device on a bus
        | *
        | * @flashp: Pointer to place to put flash info, which may be NULL if the
        | * space should be allocated
        | */
        |static int spi_flash_probe_slave(struct spi_flash *flash)
        |{
        |        struct spi_slave *spi = flash->spi;
        |        int ret;
        |
        |        /* Setup spi_slave */
        |        if (!spi) {
        |                printf("SF: Failed to set up slave\n");
        |                return -ENODEV;
        |        }
        |
        |        /* Claim spi bus */
        |        ret = spi_claim_bus(spi);
        |        if (spi_flash_probe_slave(flash)) {
    -002|do_spi_flash_probe(inline)
    -002|do_spi_flash(
        |  ?,
        |  ?,
        |  ?,
        |  ?)
        |  mode = 0x3
        |  endp = 0x0
        |  new = 0x9DF4F9E0
        |
        |        new = spi_flash_probe(bus, cs, speed, mode);
    -003|cmd_call(inline)
    -003|cmd_process(
        |  ?,
        |  ?,argc = 0x2,
        |  ?,argv = 0x9DF4F920,
        |  ?,repeatable = 0x9FFD3AD4,
        |  ?)ticks = 0x0)
        |  cmdtp = 0x9FFD22D0
        |  argv = 0x9DF4F920
        |  argc = 0x2
        |  flag = 0x0
        |  cmdtp = 0x9FFD22D0
        |
        |...
        | * executing a command.
        | *
        | * @param cmdtp         Pointer to the command to execute
        | * @param flag          Some flags normally 0 (see CMD_FLAG_.. above)
        | * @param argc          Number of arguments (arg 0 must be the command text)
        | * @param argv          Arguments
        | * @return 0 if command succeeded, else non-zero (CMD_RET_...)
        | */
        |static int cmd_call(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        |{
        |        int result;
        |
        |        result = (cmdtp->cmd)(cmdtp, flag, argc, argv);
        |                rc = cmd_call(cmdtp, flag, argc, argv);
     ---|end of frame
    

  • Hi,

        I am able to move forward after enabling OMAP3_SPI driver. In the Linux space I can see 2 MTD partitions also. However in the uboot the sf probe command still doesn't give the Flash details.

    Please help, attached are few logs.

    U-Boot SPL 2017.01 (Feb 07 2022 - 19:17:32)
    Trying to boot from MMC1
    SPL: Please implement spl_start_uboot() for your board
    SPL: Direct Linux boot not active!
    reading u-boot.img
    reading u-boot.img
    reading u-boot.img
    No matching DT out of these options:
    tco_am437x_pascal


    U-Boot 2017.01 (Feb 07 2022 - 19:17:32 +0530)

    CPU : AM437X-GP rev 1.2
    Model: TI AM437x GP EVM
    DRAM: 512 MiB

    uclass_get_device_by_seq: id 20 seq 0
    PMIC: TPS65218
    MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1
    reading uboot.env

    ** Unable to read "uboot.env" from mmc0:1 **
    Using default environment

    Net: <ethaddr> not set. Validating first E-fuse MAC
    Could not get PHY for cpsw: addr 0
    cpsw, usb_ether
    Hit any key to stop autoboot: 0 0
    =>
    => sf probe 0

    uclass_get_device_by_seq: id 55 seq 0

    Inside omap3_spi_probe

    Inside spi_get_bus_and_cs - spi@48030000

    spi_flash @0:0 ret = 0
    =>

    No error is returned here, but even the Flash state is not listed here.

    Linuxflashlog1.log
    dmesg | grep spi
    [    1.031397] pinctrl-single 44e10800.pinmux: spi0_pins index: 0x150 value: 0x60000
    [    1.031412] pinctrl-single 44e10800.pinmux: spi0_pins index: 0x154 value: 0x60000
    [    1.031421] pinctrl-single 44e10800.pinmux: spi0_pins index: 0x158 value: 0x60000
    [    1.031429] pinctrl-single 44e10800.pinmux: spi0_pins index: 0x15c value: 0x60000
    [    1.031436] pinctrl-single 44e10800.pinmux: spi0_pins index: 0x160 value: 0x60000
    [    1.031444] pinctrl-single 44e10800.pinmux: spi0_pins index: 0x274 value: 0x60001
    [    1.031495] pinctrl-single 44e10800.pinmux: found group selector 6 for spi0_pins
    [    1.031510] pinctrl-single 44e10800.pinmux: request pin 84 (PIN84) for 48030000.spi
    [    1.031519] pinctrl-single 44e10800.pinmux: request pin 85 (PIN85) for 48030000.spi
    [    1.031526] pinctrl-single 44e10800.pinmux: request pin 86 (PIN86) for 48030000.spi
    [    1.031533] pinctrl-single 44e10800.pinmux: request pin 87 (PIN87) for 48030000.spi
    [    1.031540] pinctrl-single 44e10800.pinmux: request pin 88 (PIN88) for 48030000.spi
    [    1.031548] pinctrl-single 44e10800.pinmux: request pin 157 (PIN157) for 48030000.spi
    [    1.032002] omap2_mcspi 48030000.spi: registered master spi0
                   Kiran spi->cs_gpio -2 
    [    1.037107] spi spi0.0: not using DMA for McSPI (-19)
    [    1.042216] spi spi0.0: setup: speed 1000000, sample leading edge, clk normal
    [    1.042233] spi spi0.0: setup mode 0, 8 bits/w, 1000000 Hz max --> 0
    [    1.042658] mtd_dataflash spi0.0: AT45DB161x (2112 KBytes) pagesize 528 bytes
    [    1.049860] 2 fixed-partitions partitions found on MTD device spi0.0-AT45DB161x
    [    1.057223] Creating 2 MTD partitions on "spi0.0-AT45DB161x":
    [    1.073586] omap2_mcspi 48030000.spi: registered child spi0.0
                   Kiran spi->cs_gpio -2 
    [    1.078526] spi spi0.1: not using DMA for McSPI (-19)
    [    1.083634] spi spi0.1: setup: speed 100000, sample leading edge, clk normal
    [    1.083650] spi spi0.1: setup mode 0, cs_high, 8 bits/w, 100000 Hz max --> 0
    [    1.083821] omap2_mcspi 48030000.spi: registered child spi0.1
                   Kiran spi->cs_gpio -2 
    [    1.088751] spi spi0.2: not using DMA for McSPI (-19)
    [    1.093848] spi spi0.2: setup: speed 100000, sample leading edge, clk normal
    [    1.093861] spi spi0.2: setup mode 0, 8 bits/w, 100000 Hz max --> 0
    [    1.112066] tpm_tis_spi spi0.2: 2.0 TPM (device-id 0x1B, rev-id 22)
    [    1.833013] omap2_mcspi 48030000.spi: registered child spi0.2
    [    1.833206] pinctrl-single 44e10800.pinmux: spi2_pins index: 0x260 value: 0x10000
    [    1.833219] pinctrl-single 44e10800.pinmux: spi2_pins index: 0x264 value: 0x10000
    [    1.833228] pinctrl-single 44e10800.pinmux: spi2_pins index: 0x268 value: 0x10000
    [    1.833236] pinctrl-single 44e10800.pinmux: spi2_pins index: 0x26c value: 0x10000
    [    1.833283] pinctrl-single 44e10800.pinmux: found group selector 7 for spi2_pins
    [    1.833298] pinctrl-single 44e10800.pinmux: request pin 152 (PIN152) for 481a2000.spi
    [    1.833306] pinctrl-single 44e10800.pinmux: request pin 153 (PIN153) for 481a2000.spi
    [    1.833313] pinctrl-single 44e10800.pinmux: request pin 154 (PIN154) for 481a2000.spi
    [    1.833320] pinctrl-single 44e10800.pinmux: request pin 155 (PIN155) for 481a2000.spi
    [    1.833681] omap2_mcspi 481a2000.spi: registered master spi1
                   Kiran spi->cs_gpio -2 
    [    1.838759] spi spi1.0: not using DMA for McSPI (-19)
    [    1.843883] spi spi1.0: setup: speed 1000000, sample leading edge, clk normal
    [    1.843899] spi spi1.0: setup mode 0, cs_high, 8 bits/w, 1000000 Hz max --> 0
                   Kiran spidev minor num 0 bus num 1 chip sel 0 status 0
    [    1.852094] omap2_mcspi 481a2000.spi: registered child spi1.0
    [    2.173267] rtc-pcf2123 spi0.1: clock was stopped. Time is not valid
    [    2.180428] rtc-pcf2123 spi0.1: spiclk 100 KHz.
    [    2.186067] rtc-pcf2123 spi0.1: clock was stopped. Time is not valid
    [    2.192747] rtc-pcf2123 spi0.1: registered as rtc0
    [    2.509608] rtc-pcf2123 spi0.1: clock was stopped. Time is not valid
    [    2.516032] rtc-pcf2123 spi0.1: hctosys: unable to read the hardware clock
    # 
    # cat /proc/mtd
    dev:    size   erasesize  name
    mtd0: 00400000 00020000 "mtdram test device"
    mtd1: 00020000 00000210 "spl"
    mtd2: 00080000 00000210 "uboot"
    # 
    # 

     

  • Hi,

        The SPI Flash is getting detected although differently, because on CS 0 is SPI Flash, CS 1 is RTC & CS 2 is TPM chip. 

        sf probe 0 command doesn't return anything.

        sf robe 1 

    SF: Timeout!
    SF: Detected at45db161e with page size 256 Bytes, erase size 4 KiB, total 2 MiB

    Is there anything wrong in above scenario.

    Below is snap of dts file.


    &spi0 {
    status = "okay";
    pinctrl-names = "default";
    pinctrl-0 = <&spi0_pins>;
    ti,spi-num-cs = <3>;
    /* D0 for MOSI, D1 for MISO */
    ti,pindir-d0-out-d1-in = <1>;

    /* 2MiB flash. Contains U-boot. ,"m25p80","cfi-flash",*/
    at45db161e@0 {
    compatible = "ti,omap2-mcspi","spi-flash","atmel,at45", "atmel,dataflash","atmel,at45db161e","ti,am4372-mcspi","ti,omap4-mcspi";
    reg = <0>;
    /* Max speed of OMAP SPI controller is 48MHz. The flash can handle 70MHz. <1000000>*/
    spi-max-frequency = <20000000>;

    #address-cells = <1>;
    #size-cells = <1>;

    partition@0 {
    label = "SPL";
    reg = <0x0 0x040000>; // 256 0x020000 128KiB
    };
    partition@1 {
    label = "u-boot";
    reg = <0x040000 0x0C0000>; //512KiB
    };
    partition@2 {
    label = "env";
    reg = <0x0C0000 0x02000>; //8KiB
    };
    };

    sentinel-rtc@1 {
    compatible = "nxp,pcf2123";
    reg = <1>;
    spi-max-frequency = <100000>;
    };

    /* Infineon SLM9670 TPM */
    slm9670@2 {
    compatible = "infineon,slb9670";
    reg = <2>;
    spi-max-frequency = <100000>;
    };
    };

    Below is snap of am4372.dtsi file


    spi0: spi@48030000 {
    compatible = "ti,am4372-mcspi","ti,omap4-mcspi";
    reg = <0x48030000 0x400>;
    interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
    ti,hwmods = "spi0";
    #address-cells = <1>;
    #size-cells = <0>;
    };


    spi1: spi@481a0000 {
    compatible = "ti,am4372-mcspi","ti,omap4-mcspi";
    reg = <0x481a0000 0x400>;
    interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>;
    ti,hwmods = "spi1";
    #address-cells = <1>;
    #size-cells = <0>;
    status = "disabled";
    };

    Also while erasing the Flash error code is shown, but I am able to save the environment file successfully to the Flash.

    => sf write ${loadaddr} 0 ${filesize}
    device 0 offset 0x0, size 0x27020
    SF: Timeout!
    SF: 159776 bytes @ 0x0 Written: ERROR -110


    => saveenv
    Saving Environment to FAT...
    writing uboot.env
    done

    I am following below sequence of commands:


    => sf probe 1
    => sf erase 0 0200000
    => mmc dev 0
    => fatload mmc 0 ${loadaddr} MLO
    => sf write ${loadaddr} 0 ${filesize}
    => fatload mmc 0 ${loadaddr} u-boot.img
    => sf write ${loadaddr} 0x40000 ${filesize}
    =>

    Please tell what should be the next steps to boot from SPI Flash (2MiB), which I think can contain only SPL & U-boot only & not the ZImage.

    Also, if it boots from SPI Flash what should be the steps to direct it to the SD card to run the Linux Kernel.

  • Hi Kiran,

    1. It looks like something not working right from "spi..." cmds on your setup.
    "saveenv" might save to SD/MMC other than SPI.

    2. I'm not able to find the similar SPI flash on TI board.
    The closest one is AM335x GP EVM, and this is an earlier e2e on SPI flashing/booting on AM335x GP EVM for your reference.
    e2e.ti.com/.../am3352-boot-from-external-spi-flash

    Another e2e on AM43xx SPI
    e2e.ti.com/.../linux-am4378-spi-flash-issue

    Have you tried to get in touch with the SPI flash vendor for SPI driver support in u-boot/Linux?

    Also in order to boot from SPI flash out of HW reset, please refer to AM43xx TRM 5.2.6.6 SPI, especially on Table 5-34. Pins Used for SPI Boot.

    Best,
    -Hong

  • Hi,

    Can you suggest what might be the issue with sf probe 0 not working and sf probe 1 able to detect the Flash?

    One point here is that omap3_spi_probe function is called in case of sf probe 0 command & not in case of sf probe 1 command.

    Also, please confirm whether the dts and dtsi configurations are correct as per my previous post.

    spi0 pinmux:


    spi0_pins: spi0_pins {
    pinctrl-single,pins = <
    AM4372_IOPAD(0x950, PIN_OUTPUT | MUX_MODE0) /* (P23) spi0_sclk.spi0_sclk */
    AM4372_IOPAD(0x954, PIN_OUTPUT| MUX_MODE0) /* (T22) spi0_d0.spi0_d0 */
    AM4372_IOPAD(0x958, PIN_INPUT | MUX_MODE0) /* (T21) spi0_d1.spi0_d1 */
    AM4372_IOPAD(0x95c, PIN_OUTPUT | MUX_MODE0) /* (T20) spi0_cs0.spi0_cs0 */
    AM4372_IOPAD(0x960, PIN_OUTPUT | MUX_MODE0) /* (R25) spi0_cs1.spi0_cs1 */
    AM4372_IOPAD(0xa74, PIN_OUTPUT | MUX_MODE1) /* (C24) xdma_event_intr1.spi0_cs2 */
    >;
    };

    Low level debug:
    int spi_find_bus_and_cs(int busnum, int cs, struct udevice **busp,
    struct udevice **devp)
    {
    struct udevice *bus, *dev;
    int ret;

    printf("%s: busnum %d\n", __func__, busnum);
    ret = uclass_find_device_by_seq(UCLASS_SPI, busnum, false, &bus);
    if (ret) {
    debug("%s: No bus %d\n", __func__, busnum);

    Comes here in case of sf probe 0
    return ret;
    }
    ret = spi_find_chip_select(bus, cs, &dev);
    if (ret) {
    debug("%s: No cs %d\n", __func__, cs);

    Comes here in case of sf probe 1

    return ret;
    }
    *busp = bus;
    *devp = dev;

    return ret;
    }

     Please see if following logs help.

    Thx,

    Kiran more.

    output_2022-02-16_16-33-06.log
    U-Boot SPL 2017.01 (Feb 16 2022 - 15:33:37)
    Trying to boot from MMC1
    reading u-boot.img
    reading u-boot.img
    reading u-boot.img
    No matching DT out of these options:
       tco_am437x_pascal
    
    
    U-Boot 2017.01 (Feb 16 2022 - 15:33:37 +0530)
    
    CPU  : AM437X-GP rev 1.2
    Model: TI AM437x GP EVM
    DRAM:  512 MiB
    PMIC:  TPS65218
    MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1
    reading uboot.env
    Net:   Could not get PHY for cpsw: addr 0
    cpsw, usb_ether
    Hit any key to stop autoboot:  0  0
    => 
    => sf probe 0
    spi_find_bus_and_cs: busnum 0
    
    spi_find_bus_and_cs: No bus 0
    
    spi_find_chip_select: plat=9df1c748, cs=0
    
    Inside spi_get_bus_and_cs - spi@48030000
    
    spi_find_chip_select: plat=9df1c748, cs=0
    
    spi_get_bus_and_cs ret = 0
    
    Inside omap3_spi_probe....
    
    spi_flash @0:0 ret = 0
    
    => sf probe 1
    spi_find_bus_and_cs: busnum 0
    
    spi_find_chip_select: plat=9df1c748, cs=0
    
    Inside spi_get_bus_and_cs - spi@48030000
    
    spi_find_chip_select: plat=9df1c748, cs=0
    
    spi_find_bus_and_cs: No cs 1
    
    spi_get_bus_and_cs ret = -19
    
    Inside spi_flash_read_id
    
    spi_flash_read_write: Cmd: 9f len: 1
    
    spi_flash_read_id info->id 1f info->id_len 3
    
    Reading Flash status
    spi_flash_read_write: Cmd: 5 len: 1
    SF: Timeout!
    
    write_sr ret -110 
    SF: Detected at45db161e with page size 256 Bytes, erase size 4 KiB, total 2 MiB
    
    spi_flash @0:1 ret = 0
    => 

  • Hi Kiran,
    Since CS0 is connected to SPI flash on your HW, "sf probe 0" or "sf probe" should be used to probe SPI.
    Fyi, Driver Model (DM) is not "ON" in u-boot SPI driver when I tested on AM335x GP EVM.
    Best,
    -Hong

  • Hi,

    Please see my uboot.cfg file below:

    #define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION 1
    #define CONFIG_OMAP_HSMMC
    #define CONFIG_SYS_PL310_BASE 0x48242000
    #define CONFIG_CMD_FAT 1
    #define CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS 2
    #define CONFIG_BOOTM_NETBSD 1
    #define CONFIG_OF_SPL_REMOVE_PROPS "pinctrl-0 pinctrl-names clocks clock-names interrupt-parent"
    #define CONFIG_CMD_FDT 1
    #define CONFIG_USB_GADGET_DOWNLOAD 1
    #define CONFIG_SPI_FLASH_DATAFLASH 1
    #define CONFIG_TARGET_ABC_AM4_INDUSTRIAL 1
    #define CONFIG_CMD_ITEST 1
    #define CONFIG_BOOTM_VXWORKS 1
    #define CONFIG_CMD_EDITENV 1
    #define CONFIG_CMD_MTDPARTS
    #define CONFIG_TI_SPI_MMAP
    #define CONFIG_CMD_PART
    #define CONFIG_HAS_VBAR 1
    #define CONFIG_CMD_ENV_EXISTS 1
    #define CONFIG_VERSION_VARIABLE 1
    #define CONFIG_CMD_CRC32 1
    #define CONFIG_SF_DEFAULT_MODE SPI_MODE_3
    #define CONFIG_SYS_LONGHELP
    #define CONFIG_SPL_NET_SUPPORT 1
    #define CONFIG_IS_MODULE(option) config_enabled(CONFIG_VAL(option ##_MODULE))
    #define CONFIG_SYS_LOAD_ADDR 0x82000000
    #define CONFIG_USE_ARCH_MEMSET 1
    #define CONFIG_DISPLAY_BOARDINFO 1
    #define CONFIG_CMD_XIMG 1
    #define CONFIG_EXPERT 1
    #define CONFIG_CMDLINE 1
    #define CONFIG_BOOTDELAY 0
    #define CONFIG_CMD_BOOTEFI 1
    #define CONFIG_SPI_FLASH 1
    #define CONFIG_OF_EMBED 1
    #define CONFIG_BOOTP_BOOTPATH
    #define CONFIG_SYS_HELP_CMD_WIDTH 8
    #define CONFIG_NR_DRAM_BANKS 1
    #define CONFIG_POWER_TPS62362
    #define CONFIG_EFI_PARTITION
    #define CONFIG_AM437X_USB2PHY2_HOST
    #define CONFIG_SPL_SEPARATE_BSS 1
    #define CONFIG_FS_FAT
    #define CONFIG_BOOTM_RTEMS 1
    #define CONFIG_SYS_CBSIZE 1024
    #define CONFIG_SKIP_LOWLEVEL_INIT
    #define CONFIG_ISW_ENTRY_ADDR 0x402F4000
    #define CONFIG_DM_I2C 1
    #define CONFIG_SYS_SPL_MALLOC_SIZE SZ_8M
    #define CONFIG_MD5
    #define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR 0x300
    #define CONFIG_BOOTM_LINUX 1
    #define CONFIG_BOOTP_SEND_HOSTNAME
    #define CONFIG_DEFAULT_FDT_FILE ""
    #define CONFIG_BOARD_LATE_INIT
    #define CONFIG_CREATE_ARCH_SYMLINK 1
    #define CONFIG_CMD_CONSOLE 1
    #define CONFIG_SUPPORT_OF_CONTROL 1
    #define CONFIG_SYS_CPU "armv7"
    #define CONFIG_MII
    #define CONFIG_SPL_BOARD_INIT
    #define CONFIG_SPL_STACK_R_ADDR 0x82000000
    #define CONFIG_BOOTP_PXE_CLIENTARCH 0x15
    #define CONFIG_SPL_YMODEM_SUPPORT 1
    #define CONFIG_BOOTP_GATEWAY
    #define CONFIG_SYS_THUMB_BUILD
    #define CONFIG_SYS_CACHELINE_SIZE 64
    #define CONFIG_MMC 1
    #define CONFIG_SPL_OF_CONTROL 1
    #define CONFIG_SYS_SPL_ARGS_ADDR (CONFIG_SYS_SDRAM_BASE + (128 << 20))
    #define CONFIG_CMD_USB_MASS_STORAGE 1
    #define CONFIG_SPL_OS_BOOT 1
    #define CONFIG_SMBIOS_PRODUCT_NAME "am4-industrial"
    #define CONFIG_CMD_MISC 1
    #define CONFIG_FIT 1
    #define CONFIG_USB_DWC3 1
    #define CONFIG_TI_I2C_BOARD_DETECT 1
    #define CONFIG_SPL_LIBCOMMON_SUPPORT 1
    #define CONFIG_PHY_GIGE
    #define CONFIG_DM_DEVICE_REMOVE 1
    #define CONFIG_QSPI_SEL_GPIO 48
    #define CONFIG_ENV_OVERWRITE
    #define CONFIG_CMD_NET 1
    #define CONFIG_TIMER 1
    #define CONFIG_USB_GADGET_VBUS_DRAW 2
    #define CONFIG_CMD_NFS 1
    #define CONFIG_DFU_SF 1
    #define CONFIG_ENV_SIZE (64 << 10)
    #define CONFIG_G_DNL_VENDOR_NUM 0x0403
    #define CONFIG_USB_XHCI_DWC3 1
    #define CONFIG_SUPPORT_RAW_INITRD
    #define CONFIG_CMD_FS_GENERIC 1
    #define CONFIG_CMD_PING 1
    #define CONFIG_SYS_L2_PL310
    #define CONFIG_SYS_MALLOC_LEN SZ_32M
    #define CONFIG_USBNET_HOST_ADDR "de:ad:be:af:00:00"
    #define CONFIG_INITRD_TAG
    #define CONFIG_SPL_LIBDISK_SUPPORT 1
    #define CONFIG_LOCALVERSION ""
    #define CONFIG_EEPROM_CHIP_ADDRESS 0x50
    #define CONFIG_SYS_TEXT_BASE 0x80800000
    #define CONFIG_CC_OPTIMIZE_FOR_SIZE 1
    #define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR 1
    #define CONFIG_SYS_DEF_EEPROM_ADDR 0
    #define CONFIG_REGEX 1
    #define CONFIG_SYS_CONFIG_NAME "ABC_am4_industrial"
    #define CONFIG_SPL_SYS_MALLOC_SIMPLE 1
    #define CONFIG_CMD_FLASH 1
    #define CONFIG_USB_FUNCTION_MASS_STORAGE
    #define CONFIG_SPL_FS_LOAD_ARGS_NAME "args"
    #define CONFIG_CMD_SAVEENV 1
    #define CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTOR 0x1500
    #define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE
    #define CONFIG_BOOTM_PLAN9 1
    #define CONFIG_IS_BUILTIN(option) config_enabled(CONFIG_VAL(option))
    #define CONFIG_SPL_TEXT_BASE CONFIG_ISW_ENTRY_ADDR
    #define CONFIG_SERIAL_PRESENT 1
    #define CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN 0x100000
    #define CONFIG_SYS_CONSOLE_INFO_QUIET 1
    #define CONFIG_OF_LIST "tco_am437x_pascal"
    #define CONFIG_CMD_GPT
    #define CONFIG_PUB_ROM_DATA_SIZE 0x8400
    #define CONFIG_USB_DWC3_PHY_OMAP 1
    #define CONFIG_USB_ETHER
    #define CONFIG_SYS_OMAP24_I2C_SPEED 100000
    #define CONFIG_POWER_I2C
    #define CONFIG_DM_WARN 1
    #define CONFIG_BOOTP_DNS
    #define CONFIG_SYS_CACHE_SHIFT_6 1
    #define CONFIG_CMD_MEMORY 1
    #define CONFIG_SYS_MAXARGS 64
    #define CONFIG_SUPPORT_SPL 1
    #define CONFIG_CMD_RUN 1
    #define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
    #define CONFIG_ENV_VARS_UBOOT_CONFIG
    #define CONFIG_DM_SPI_FLASH 1
    #define CONFIG_USB 1
    #define CONFIG_BOOTP_HOSTNAME
    #define CONFIG_BOARDDIR board/ABC/am4-industrial
    #define CONFIG_POWER
    #define CONFIG_SPL_LEGACY_IMAGE_SUPPORT 1
    #define CONFIG_SPL_LOAD_FIT_ADDRESS 0x80800000
    #define CONFIG_NET 1
    #define CONFIG_CPU_V7 1
    #define CONFIG_OF_LIBFDT 1
    #define CONFIG_USB_XHCI_OMAP
    #define CONFIG_USB_DWC3_GADGET 1
    #define CONFIG_SYS_MAX_FLASH_SECT 512
    #define CONFIG_PHYLIB
    #define CONFIG_GENERATE_SMBIOS_TABLE 1
    #define CONFIG_CMDLINE_EDITING
    #define CONFIG_CMD_USB 1
    #define CONFIG_DM_SERIAL 1
    #define CONFIG_CMD_EXT2 1
    #define CONFIG_CMD_EXT4 1
    #define CONFIG_TI_EDMA3
    #define CONFIG_BOOTCOMMAND "if fatload mmc 0:4 $loadaddr tco_fw_update.scr; then " "if imi $loadaddr; then " "source $loadaddr; " "fi; " "fi; " "setenv bootargs root=/dev/mmcblk0p2 console=ttyS0,115200 norootwait vram=16M omapfb.vram=0:8M,1:4M,2:4M vt.global_cursor_default=0; " "fatload mmc 0 $loadaddr $bootfile; " "bootz $loadaddr;"
    #define CONFIG_QSPI_QUAD_SUPPORT
    #define CONFIG_ARCH_FIXUP_FDT_MEMORY 1
    #define CONFIG_ARCH_OMAP2 1
    #define CONFIG_SPL_SIMPLE_BUS 1
    #define CONFIG_SPL_I2C_SUPPORT 1
    #define CONFIG_MAX_RAM_BANK_SIZE (1024 << 21)
    #define CONFIG_USB_XHCI_HCD 1
    #define CONFIG_ISO_PARTITION
    #define CONFIG_SYS_MALLOC_CLEAR_ON_INIT 1
    #define CONFIG_NET_RETRY_COUNT 10
    #define CONFIG_CMD_EEPROM
    #define CONFIG_SYS_EXTRA_OPTIONS ""
    #define CONFIG_CMD_DFU 1
    #define CONFIG_EEPROM_BUS_ADDRESS 0
    #define CONFIG_SPL_GPIO_SUPPORT 1
    #define CONFIG_CMD_BOOTEFI_HELLO_COMPILE 1
    #define CONFIG_G_DNL_PRODUCT_NUM 0xbd00
    #define CONFIG_HUSH_PARSER 1
    #define CONFIG_CMD_DM 1
    #define CONFIG_BOOTP_VCI_STRING "U-Boot.armv7"
    #define CONFIG_DM 1
    #define CONFIG_ZLIB 1
    #define CONFIG_USB_GADGET_DUALSPEED 1
    #define CONFIG_LIB_UUID
    #define CONFIG_G_DNL_MANUFACTURER "Texas Instruments"
    #define CONFIG_BOOTP_DNS2
    #define CONFIG_SYS_I2C_OMAP24XX
    #define CONFIG_CMD_GO 1
    #define CONFIG_USB_HOST 1
    #define CONFIG_CMD_BOOTD 1
    #define CONFIG_CMD_BOOTM 1
    #define CONFIG_SPL_SPI_FLASH_SUPPORT 1
    #define CONFIG_CMD_BOOTZ 1
    #define CONFIG_SYS_NS16550 1
    #define CONFIG_SYS_MALLOC_F 1
    #define CONFIG_SYS_RX_ETH_BUFFER 64
    #define CONFIG_AUTO_COMPLETE
    #define CONFIG_SPI_FLASH_USE_4K_SECTORS 1
    #define CONFIG_OMAP_TIMER 1
    #define CONFIG_SYS_SOC "am33xx"
    #define CONFIG_SYS_HZ 1000
    #define CONFIG_SYS_MALLOC_F_LEN 0x2000
    #define CONFIG_SYS_NS16550_CLK 48000000
    #define CONFIG_DOS_PARTITION
    #define CONFIG_GZIP 1
    #define CONFIG_SYS_VENDOR "ABC"
    #define CONFIG_DFU_MMC 1
    #define CONFIG_DM_I2C_COMPAT
    #define CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTORS 0x200
    #define CONFIG_USB_FUNCTION_DFU 1
    #define CONFIG_CMD_SF 1
    #define CONFIG_BOOTSTAGE_USER_COUNT 0x20
    #define CONFIG_REQUIRE_SERIAL_CONSOLE 1
    #define CONFIG_CMD_FPGA 1
    #define CONFIG_IDENT_STRING ""
    #define CONFIG_ENV_IS_IN_FAT
    #define CONFIG_SYS_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 }
    #define CONFIG_SYS_NS16550_COM1 0x44e09000
    #define CONFIG_SPL_ETH_SUPPORT 1
    #define CONFIG_VAL(option) config_val(option)
    #define CONFIG_SPL_LIBGENERIC_SUPPORT 1
    #define CONFIG_DM_STDIO 1
    #define CONFIG_LOCALVERSION_AUTO 1
    #define CONFIG_SPL_MMC_SUPPORT 1
    #define CONFIG_AM43XX 1
    #define CONFIG_SYS_SDRAM_BASE 0x80000000
    #define CONFIG_DRIVER_TI_CPSW
    #define CONFIG_IMAGE_FORMAT_LEGACY
    #define CONFIG_SYS_BOOT_RAMDISK_HIGH
    #define CONFIG_NET_TFTP_VARS 1
    #define CONFIG_SPL_LDSCRIPT "arch/arm/mach-omap2/u-boot-spl.lds"
    #define CONFIG_USE_PRIVATE_LIBGCC 1
    #define CONFIG_CMD_SPI 1
    #define CONFIG_CMD_SPL
    #define CONFIG_CMD_DHCP 1
    #define CONFIG_SPL_SERIAL_SUPPORT 1
    #define CONFIG_CMD_ECHO 1
    #define CONFIG_GENERIC_MMC
    #define CONFIG_SYS_SPL_MALLOC_START (CONFIG_SPL_BSS_START_ADDR + CONFIG_SPL_BSS_MAX_SIZE)
    #define CONFIG_USB_DWC3_OMAP 1
    #define CONFIG_FAT_WRITE
    #define CONFIG_SYS_TIMERBASE 0x48040000
    #define CONFIG_CMD_TIME
    #define CONFIG_USE_ARCH_MEMCPY 1
    #define CONFIG_SPL_DM 1
    #define CONFIG_SPL_BSS_MAX_SIZE 0x80000
    #define CONFIG_SPL_FS_LOAD_KERNEL_NAME "uImage"
    #define CONFIG_SPL_BSS_START_ADDR 0x80a00000
    #define CONFIG_SPL_PAD_TO CONFIG_SPL_MAX_SIZE
    #define CONFIG_BOOTP_DEFAULT
    #define CONFIG_OF_CONTROL 1
    #define CONFIG_EXTRA_ENV_SETTINGS DEFAULT_LINUX_BOOT_ENV DEFAULT_MMC_TI_ARGS DEFAULT_FIT_TI_ARGS "fdtfile=undefined\0" "bootpart=0:2\0" "bootdir=/boot\0" "bootfile=zImage\0" "console=ttyO0,115200n8\0" "displaytype=dataimage480x800\0" "partitions=" "uuid_disk=${uuid_gpt_disk};" "name=rootfs,start=2MiB,size=-,uuid=${uuid_gpt_rootfs}\0" "optargs=\0" "usbroot=/dev/sda2 rw\0" "usbrootfstype=ext4 rootwait\0" "usbdev=0\0" "ramroot=/dev/ram0 rw\0" "ramrootfstype=ext2\0" "usbargs=setenv bootargs console=${console} " "${optargs} " "root=${usbroot} " "rootfstype=${usbrootfstype}\0" "ramargs=setenv bootargs console=${console} " "${optargs} " "root=${ramroot} " "rootfstype=${ramrootfstype}\0" "loadramdisk=load ${devtype} ${devnum} ${rdaddr} ramdisk.gz\0" "usbboot=" "setenv devnum ${usbdev}; " "setenv devtype usb; " "usb start ${usbdev}; " "if usb dev ${usbdev}; then " "if run loadbootenv; then " "echo Loaded environment from ${bootenv};" "run importbootenv;" "fi;" "if test -n $uenvcmd; then " "echo Running uenvcmd ...;" "run uenvcmd;" "fi;" "if run loadimage; then " "run loadfdt; " "echo Booting from usb ${usbdev}...; " "run usbargs;" "bootz ${loadaddr} - ${fdtaddr}; " "fi;" "fi\0" "fi;" "usb stop ${usbdev};\0" "findfdt=" "if test $board_name = AM43EPOS; then " "setenv fdtfile am43x-epos-evm.dtb; fi; " "if test $board_name = AM43__GP; then " "setenv fdtfile am437x-gp-evm.dtb; fi; " "if test $board_name = AM43XXHS; then " "setenv fdtfile am437x-gp-evm.dtb; fi; " "if test $board_name = AM43__SK; then " "setenv fdtfile am437x-sk-evm.dtb; fi; " "if test $board_name = AM43_IDK; then " "setenv fdtfile am437x-idk-evm.dtb; fi; " "if test $fdtfile = undefined; then " "echo WARNING: Could not determine device tree; fi; \0" NANDARGS NETARGS DFUARGS
    #define CONFIG_BOOTP_PXE
    #define CONFIG_HAS_THUMB2 1
    #define CONFIG_SYS_INIT_SP_ADDR (NON_SECURE_SRAM_END - GENERATED_GBL_DATA_SIZE)
    #define CONFIG_SYS_ARCH "arm"
    #define CONFIG_CMD_ASKENV 1
    #define CONFIG_BAUDRATE 115200
    #define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 2
    #define CONFIG_SYS_BOARD "am4-industrial"
    #define CONFIG_PARTITION_UUIDS
    #define CONFIG_DM_GPIO 1
    #define CONFIG_SYS_PTV 2
    #define CONFIG_CMDLINE_TAG
    #define CONFIG_SYS_ARM_ARCH 7
    #define CONFIG_BOOTSTAGE_STASH_SIZE 0x4096
    #define CONFIG_ENV_EEPROM_IS_ON_I2C
    #define CONFIG_CMD_IMPORTENV 1
    #define CONFIG_HAVE_PRIVATE_LIBGCC 1
    #define CONFIG_CMD_EXPORTENV 1
    #define CONFIG_PARTITIONS 1
    #define CONFIG_OMAP_GPIO
    #define CONFIG_OF_TRANSLATE 1
    #define CONFIG_SPL_STACK_R 1
    #define CONFIG_CMD_I2C 1
    #define CONFIG_ARCH_CPU_INIT
    #define CONFIG_SPL_NET_VCI_STRING "AM43xx U-Boot SPL"
    #define CONFIG_CMD_ELF 1
    #define CONFIG_EFI_LOADER 1
    #define CONFIG_SMBIOS_MANUFACTURER "ABC"
    #define CONFIG_SYS_NO_FLASH
    #define CONFIG_SPI_FLASH_ATMEL 1
    #define CONFIG_DM_SEQ_ALIAS 1
    #define CONFIG_OMAP
    #define CONFIG_FS_EXT4
    #define CONFIG_SYS_USB_FAT_BOOT_PARTITION 1
    #define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - CONFIG_SPL_TEXT_BASE)
    #define CONFIG_SPL_FRAMEWORK
    #define CONFIG_BOOTSTAGE_STASH_ADDR 0x0
    #define CONFIG_USB_ETH_RNDIS
    #define CONFIG_SPI
    #define CONFIG_SPL 1
    #define CONFIG_MTD_DEVICE
    #define CONFIG_SPL_ENV_SUPPORT 1
    #define CONFIG_CMD_SOURCE 1
    #define CONFIG_SYS_PROMPT "=> "
    #define CONFIG_USB_STORAGE 1
    #define CONFIG_DISPLAY_CPUINFO 1
    #define CONFIG_SHA1
    #define CONFIG_SETUP_MEMORY_TAGS
    #define CONFIG_CRC32
    #define CONFIG_DFU_RAM 1
    #define CONFIG_EXT4_WRITE
    #define CONFIG_SPL_FAT_SUPPORT 1
    #define CONFIG_SYS_I2C_EEPROM_ADDR 0x50
    #define CONFIG_CMD_LOADB 1
    #define CONFIG_CMD_LOADS 1
    #define CONFIG_CMD_IMI 1
    #define CONFIG_CMD_EXT4_WRITE 1
    #define CONFIG_SF_DEFAULT_SPEED 48000000
    #define CONFIG_SPL_USBETH_SUPPORT 1
    #define CONFIG_POWER_TPS65218
    #define CONFIG_LMB
    #define CONFIG_AUTOBOOT 1
    #define CONFIG_ARM 1
    #define CONFIG_SYS_OMAP24_I2C_SLAVE 1
    #define CONFIG_SPL_USB_GADGET_SUPPORT 1
    #define CONFIG_IS_ENABLED(option) (config_enabled(CONFIG_VAL(option)) || config_enabled(CONFIG_VAL(option ##_MODULE)))
    #define CONFIG_SPI_BOOT 1
    #define CONFIG_CMD_GPIO 1
    #define CONFIG_CMD_BDI 1
    #define CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
    #define CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR 0x1700
    #define CONFIG_SHA256
    #define CONFIG_BOOTP_SUBNETMASK
    #define CONFIG_SPL_OF_TRANSLATE 1
    #define CONFIG_DEFAULT_DEVICE_TREE "tco_am437x_pascal"
    #define CONFIG_USBNET_DEVADDR "de:ad:be:ef:00:01"
    #define CONFIG_SPL_RAW_IMAGE_SUPPORT 1
    #define CONFIG_CMD_MII 1
    #define CONFIG_USB_GADGET 1
    #define CONFIG_SPL_EXT_SUPPORT 1
    #define CONFIG_I2C
    #define CONFIG_SIMPLE_BUS 1
    #define CONFIG_CMD_MMC 1
    #define CONFIG_SPL_POWER_SUPPORT 1
    #define CONFIG_SPL_SPI_SUPPORT 1
    #define CONFIG_SPL_DM_SEQ_ALIAS 1
    #define CONFIG_OMAP_USB_PHY
    #define CONFIG_DM_SPI 1
    #define CONFIG_SPL_OF_LIBFDT 1
    #define CONFIG_SPL_LOAD_FIT 1
    #define CONFIG_SPL_SERIAL_PRESENT 1
    #define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME "u-boot.img"
    #define #define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION 1
    #define CONFIG_OMAP_HSMMC
    #define CONFIG_SYS_PL310_BASE 0x48242000
    #define CONFIG_CMD_FAT 1
    #define CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS 2
    #define CONFIG_BOOTM_NETBSD 1
    #define CONFIG_OF_SPL_REMOVE_PROPS "pinctrl-0 pinctrl-names clocks clock-names interrupt-parent"
    #define CONFIG_CMD_FDT 1
    #define CONFIG_USB_GADGET_DOWNLOAD 1
    #define CONFIG_SPI_FLASH_DATAFLASH 1
    #define CONFIG_TARGET_ABC_AM4_INDUSTRIAL 1
    #define CONFIG_CMD_ITEST 1
    #define CONFIG_BOOTM_VXWORKS 1
    #define CONFIG_CMD_EDITENV 1
    #define CONFIG_CMD_MTDPARTS
    #define CONFIG_TI_SPI_MMAP
    #define CONFIG_CMD_PART
    #define CONFIG_HAS_VBAR 1
    #define CONFIG_CMD_ENV_EXISTS 1
    #define CONFIG_VERSION_VARIABLE 1
    #define CONFIG_CMD_CRC32 1
    #define CONFIG_SF_DEFAULT_MODE SPI_MODE_3
    #define CONFIG_SYS_LONGHELP
    #define CONFIG_SPL_NET_SUPPORT 1
    #define CONFIG_IS_MODULE(option) config_enabled(CONFIG_VAL(option ##_MODULE))
    #define CONFIG_SYS_LOAD_ADDR 0x82000000
    #define CONFIG_USE_ARCH_MEMSET 1
    #define CONFIG_DISPLAY_BOARDINFO 1
    #define CONFIG_CMD_XIMG 1
    #define CONFIG_EXPERT 1
    #define CONFIG_CMDLINE 1
    #define CONFIG_BOOTDELAY 0
    #define CONFIG_CMD_BOOTEFI 1
    #define CONFIG_SPI_FLASH 1
    #define CONFIG_OF_EMBED 1
    #define CONFIG_BOOTP_BOOTPATH
    #define CONFIG_SYS_HELP_CMD_WIDTH 8
    #define CONFIG_NR_DRAM_BANKS 1
    #define CONFIG_POWER_TPS62362
    #define CONFIG_EFI_PARTITION
    #define CONFIG_AM437X_USB2PHY2_HOST
    #define CONFIG_SPL_SEPARATE_BSS 1
    #define CONFIG_FS_FAT
    #define CONFIG_BOOTM_RTEMS 1
    #define CONFIG_SYS_CBSIZE 1024
    #define CONFIG_SKIP_LOWLEVEL_INIT
    #define CONFIG_ISW_ENTRY_ADDR 0x402F4000
    #define CONFIG_DM_I2C 1
    #define CONFIG_SYS_SPL_MALLOC_SIZE SZ_8M
    #define CONFIG_MD5
    #define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR 0x300
    #define CONFIG_BOOTM_LINUX 1
    #define CONFIG_BOOTP_SEND_HOSTNAME
    #define CONFIG_DEFAULT_FDT_FILE ""
    #define CONFIG_BOARD_LATE_INIT
    #define CONFIG_CREATE_ARCH_SYMLINK 1
    #define CONFIG_CMD_CONSOLE 1
    #define CONFIG_SUPPORT_OF_CONTROL 1
    #define CONFIG_SYS_CPU "armv7"
    #define CONFIG_MII
    #define CONFIG_SPL_BOARD_INIT
    #define CONFIG_SPL_STACK_R_ADDR 0x82000000
    #define CONFIG_BOOTP_PXE_CLIENTARCH 0x15
    #define CONFIG_SPL_YMODEM_SUPPORT 1
    #define CONFIG_BOOTP_GATEWAY
    #define CONFIG_SYS_THUMB_BUILD
    #define CONFIG_SYS_CACHELINE_SIZE 64
    #define CONFIG_MMC 1
    #define CONFIG_SPL_OF_CONTROL 1
    #define CONFIG_SYS_SPL_ARGS_ADDR (CONFIG_SYS_SDRAM_BASE + (128 << 20))
    #define CONFIG_CMD_USB_MASS_STORAGE 1
    #define CONFIG_SPL_OS_BOOT 1
    #define CONFIG_SMBIOS_PRODUCT_NAME "am4-industrial"
    #define CONFIG_CMD_MISC 1
    #define CONFIG_FIT 1
    #define CONFIG_USB_DWC3 1
    #define CONFIG_TI_I2C_BOARD_DETECT 1
    #define CONFIG_SPL_LIBCOMMON_SUPPORT 1
    #define CONFIG_PHY_GIGE
    #define CONFIG_DM_DEVICE_REMOVE 1
    #define CONFIG_QSPI_SEL_GPIO 48
    #define CONFIG_ENV_OVERWRITE
    #define CONFIG_CMD_NET 1
    #define CONFIG_TIMER 1
    #define CONFIG_USB_GADGET_VBUS_DRAW 2
    #define CONFIG_CMD_NFS 1
    #define CONFIG_DFU_SF 1
    #define CONFIG_ENV_SIZE (64 << 10)
    #define CONFIG_G_DNL_VENDOR_NUM 0x0403
    #define CONFIG_USB_XHCI_DWC3 1
    #define CONFIG_SUPPORT_RAW_INITRD
    #define CONFIG_CMD_FS_GENERIC 1
    #define CONFIG_CMD_PING 1
    #define CONFIG_SYS_L2_PL310
    #define CONFIG_SYS_MALLOC_LEN SZ_32M
    #define CONFIG_USBNET_HOST_ADDR "de:ad:be:af:00:00"
    #define CONFIG_INITRD_TAG
    #define CONFIG_SPL_LIBDISK_SUPPORT 1
    #define CONFIG_LOCALVERSION ""
    #define CONFIG_EEPROM_CHIP_ADDRESS 0x50
    #define CONFIG_SYS_TEXT_BASE 0x80800000
    #define CONFIG_CC_OPTIMIZE_FOR_SIZE 1
    #define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR 1
    #define CONFIG_SYS_DEF_EEPROM_ADDR 0
    #define CONFIG_REGEX 1
    #define CONFIG_SYS_CONFIG_NAME "ABC_am4_industrial"
    #define CONFIG_SPL_SYS_MALLOC_SIMPLE 1
    #define CONFIG_CMD_FLASH 1
    #define CONFIG_USB_FUNCTION_MASS_STORAGE
    #define CONFIG_SPL_FS_LOAD_ARGS_NAME "args"
    #define CONFIG_CMD_SAVEENV 1
    #define CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTOR 0x1500
    #define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE
    #define CONFIG_BOOTM_PLAN9 1
    #define CONFIG_IS_BUILTIN(option) config_enabled(CONFIG_VAL(option))
    #define CONFIG_SPL_TEXT_BASE CONFIG_ISW_ENTRY_ADDR
    #define CONFIG_SERIAL_PRESENT 1
    #define CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN 0x100000
    #define CONFIG_SYS_CONSOLE_INFO_QUIET 1
    #define CONFIG_OF_LIST "tco_am437x_pascal"
    #define CONFIG_CMD_GPT
    #define CONFIG_PUB_ROM_DATA_SIZE 0x8400
    #define CONFIG_USB_DWC3_PHY_OMAP 1
    #define CONFIG_USB_ETHER
    #define CONFIG_SYS_OMAP24_I2C_SPEED 100000
    #define CONFIG_POWER_I2C
    #define CONFIG_DM_WARN 1
    #define CONFIG_BOOTP_DNS
    #define CONFIG_SYS_CACHE_SHIFT_6 1
    #define CONFIG_CMD_MEMORY 1
    #define CONFIG_SYS_MAXARGS 64
    #define CONFIG_SUPPORT_SPL 1
    #define CONFIG_CMD_RUN 1
    #define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
    #define CONFIG_ENV_VARS_UBOOT_CONFIG
    #define CONFIG_DM_SPI_FLASH 1
    #define CONFIG_USB 1
    #define CONFIG_BOOTP_HOSTNAME
    #define CONFIG_BOARDDIR board/ABC/am4-industrial
    #define CONFIG_POWER
    #define CONFIG_SPL_LEGACY_IMAGE_SUPPORT 1
    #define CONFIG_SPL_LOAD_FIT_ADDRESS 0x80800000
    #define CONFIG_NET 1
    #define CONFIG_CPU_V7 1
    #define CONFIG_OF_LIBFDT 1
    #define CONFIG_USB_XHCI_OMAP
    #define CONFIG_USB_DWC3_GADGET 1
    #define CONFIG_SYS_MAX_FLASH_SECT 512
    #define CONFIG_PHYLIB
    #define CONFIG_GENERATE_SMBIOS_TABLE 1
    #define CONFIG_CMDLINE_EDITING
    #define CONFIG_CMD_USB 1
    #define CONFIG_DM_SERIAL 1
    #define CONFIG_CMD_EXT2 1
    #define CONFIG_CMD_EXT4 1
    #define CONFIG_TI_EDMA3
    #define CONFIG_BOOTCOMMAND "if fatload mmc 0:4 $loadaddr tco_fw_update.scr; then " "if imi $loadaddr; then " "source $loadaddr; " "fi; " "fi; " "setenv bootargs root=/dev/mmcblk0p2 console=ttyS0,115200 norootwait vram=16M omapfb.vram=0:8M,1:4M,2:4M vt.global_cursor_default=0; " "fatload mmc 0 $loadaddr $bootfile; " "bootz $loadaddr;"
    #define CONFIG_QSPI_QUAD_SUPPORT
    #define CONFIG_ARCH_FIXUP_FDT_MEMORY 1
    #define CONFIG_ARCH_OMAP2 1
    #define CONFIG_SPL_SIMPLE_BUS 1
    #define CONFIG_SPL_I2C_SUPPORT 1
    #define CONFIG_MAX_RAM_BANK_SIZE (1024 << 21)
    #define CONFIG_USB_XHCI_HCD 1
    #define CONFIG_ISO_PARTITION
    #define CONFIG_SYS_MALLOC_CLEAR_ON_INIT 1
    #define CONFIG_NET_RETRY_COUNT 10
    #define CONFIG_CMD_EEPROM
    #define CONFIG_SYS_EXTRA_OPTIONS ""
    #define CONFIG_CMD_DFU 1
    #define CONFIG_EEPROM_BUS_ADDRESS 0
    #define CONFIG_SPL_GPIO_SUPPORT 1
    #define CONFIG_CMD_BOOTEFI_HELLO_COMPILE 1
    #define CONFIG_G_DNL_PRODUCT_NUM 0xbd00
    #define CONFIG_HUSH_PARSER 1
    #define CONFIG_CMD_DM 1
    #define CONFIG_BOOTP_VCI_STRING "U-Boot.armv7"
    #define CONFIG_DM 1
    #define CONFIG_ZLIB 1
    #define CONFIG_USB_GADGET_DUALSPEED 1
    #define CONFIG_LIB_UUID
    #define CONFIG_G_DNL_MANUFACTURER "Texas Instruments"
    #define CONFIG_BOOTP_DNS2
    #define CONFIG_SYS_I2C_OMAP24XX
    #define CONFIG_CMD_GO 1
    #define CONFIG_USB_HOST 1
    #define CONFIG_CMD_BOOTD 1
    #define CONFIG_CMD_BOOTM 1
    #define CONFIG_SPL_SPI_FLASH_SUPPORT 1
    #define CONFIG_CMD_BOOTZ 1
    #define CONFIG_SYS_NS16550 1
    #define CONFIG_SYS_MALLOC_F 1
    #define CONFIG_SYS_RX_ETH_BUFFER 64
    #define CONFIG_AUTO_COMPLETE
    #define CONFIG_SPI_FLASH_USE_4K_SECTORS 1
    #define CONFIG_OMAP_TIMER 1
    #define CONFIG_SYS_SOC "am33xx"
    #define CONFIG_SYS_HZ 1000
    #define CONFIG_SYS_MALLOC_F_LEN 0x2000
    #define CONFIG_SYS_NS16550_CLK 48000000
    #define CONFIG_DOS_PARTITION
    #define CONFIG_GZIP 1
    #define CONFIG_SYS_VENDOR "ABC"
    #define CONFIG_DFU_MMC 1
    #define CONFIG_DM_I2C_COMPAT
    #define CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTORS 0x200
    #define CONFIG_USB_FUNCTION_DFU 1
    #define CONFIG_CMD_SF 1
    #define CONFIG_BOOTSTAGE_USER_COUNT 0x20
    #define CONFIG_REQUIRE_SERIAL_CONSOLE 1
    #define CONFIG_CMD_FPGA 1
    #define CONFIG_IDENT_STRING ""
    #define CONFIG_ENV_IS_IN_FAT
    #define CONFIG_SYS_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 }
    #define CONFIG_SYS_NS16550_COM1 0x44e09000
    #define CONFIG_SPL_ETH_SUPPORT 1
    #define CONFIG_VAL(option) config_val(option)
    #define CONFIG_SPL_LIBGENERIC_SUPPORT 1
    #define CONFIG_DM_STDIO 1
    #define CONFIG_LOCALVERSION_AUTO 1
    #define CONFIG_SPL_MMC_SUPPORT 1
    #define CONFIG_AM43XX 1
    #define CONFIG_SYS_SDRAM_BASE 0x80000000
    #define CONFIG_DRIVER_TI_CPSW
    #define CONFIG_IMAGE_FORMAT_LEGACY
    #define CONFIG_SYS_BOOT_RAMDISK_HIGH
    #define CONFIG_NET_TFTP_VARS 1
    #define CONFIG_SPL_LDSCRIPT "arch/arm/mach-omap2/u-boot-spl.lds"
    #define CONFIG_USE_PRIVATE_LIBGCC 1
    #define CONFIG_CMD_SPI 1
    #define CONFIG_CMD_SPL
    #define CONFIG_CMD_DHCP 1
    #define CONFIG_SPL_SERIAL_SUPPORT 1
    #define CONFIG_CMD_ECHO 1
    #define CONFIG_GENERIC_MMC
    #define CONFIG_SYS_SPL_MALLOC_START (CONFIG_SPL_BSS_START_ADDR + CONFIG_SPL_BSS_MAX_SIZE)
    #define CONFIG_USB_DWC3_OMAP 1
    #define CONFIG_FAT_WRITE
    #define CONFIG_SYS_TIMERBASE 0x48040000
    #define CONFIG_CMD_TIME
    #define CONFIG_USE_ARCH_MEMCPY 1
    #define CONFIG_SPL_DM 1
    #define CONFIG_SPL_BSS_MAX_SIZE 0x80000
    #define CONFIG_SPL_FS_LOAD_KERNEL_NAME "uImage"
    #define CONFIG_SPL_BSS_START_ADDR 0x80a00000
    #define CONFIG_SPL_PAD_TO CONFIG_SPL_MAX_SIZE
    #define CONFIG_BOOTP_DEFAULT
    #define CONFIG_OF_CONTROL 1
    #define CONFIG_EXTRA_ENV_SETTINGS DEFAULT_LINUX_BOOT_ENV DEFAULT_MMC_TI_ARGS DEFAULT_FIT_TI_ARGS "fdtfile=undefined\0" "bootpart=0:2\0" "bootdir=/boot\0" "bootfile=zImage\0" "console=ttyO0,115200n8\0" "displaytype=dataimage480x800\0" "partitions=" "uuid_disk=${uuid_gpt_disk};" "name=rootfs,start=2MiB,size=-,uuid=${uuid_gpt_rootfs}\0" "optargs=\0" "usbroot=/dev/sda2 rw\0" "usbrootfstype=ext4 rootwait\0" "usbdev=0\0" "ramroot=/dev/ram0 rw\0" "ramrootfstype=ext2\0" "usbargs=setenv bootargs console=${console} " "${optargs} " "root=${usbroot} " "rootfstype=${usbrootfstype}\0" "ramargs=setenv bootargs console=${console} " "${optargs} " "root=${ramroot} " "rootfstype=${ramrootfstype}\0" "loadramdisk=load ${devtype} ${devnum} ${rdaddr} ramdisk.gz\0" "usbboot=" "setenv devnum ${usbdev}; " "setenv devtype usb; " "usb start ${usbdev}; " "if usb dev ${usbdev}; then " "if run loadbootenv; then " "echo Loaded environment from ${bootenv};" "run importbootenv;" "fi;" "if test -n $uenvcmd; then " "echo Running uenvcmd ...;" "run uenvcmd;" "fi;" "if run loadimage; then " "run loadfdt; " "echo Booting from usb ${usbdev}...; " "run usbargs;" "bootz ${loadaddr} - ${fdtaddr}; " "fi;" "fi\0" "fi;" "usb stop ${usbdev};\0" "findfdt=" "if test $board_name = AM43EPOS; then " "setenv fdtfile am43x-epos-evm.dtb; fi; " "if test $board_name = AM43__GP; then " "setenv fdtfile am437x-gp-evm.dtb; fi; " "if test $board_name = AM43XXHS; then " "setenv fdtfile am437x-gp-evm.dtb; fi; " "if test $board_name = AM43__SK; then " "setenv fdtfile am437x-sk-evm.dtb; fi; " "if test $board_name = AM43_IDK; then " "setenv fdtfile am437x-idk-evm.dtb; fi; " "if test $fdtfile = undefined; then " "echo WARNING: Could not determine device tree; fi; \0" NANDARGS NETARGS DFUARGS
    #define CONFIG_BOOTP_PXE
    #define CONFIG_HAS_THUMB2 1
    #define CONFIG_SYS_INIT_SP_ADDR (NON_SECURE_SRAM_END - GENERATED_GBL_DATA_SIZE)
    #define CONFIG_SYS_ARCH "arm"
    #define CONFIG_CMD_ASKENV 1
    #define CONFIG_BAUDRATE 115200
    #define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 2
    #define CONFIG_SYS_BOARD "am4-industrial"
    #define CONFIG_PARTITION_UUIDS
    #define CONFIG_DM_GPIO 1
    #define CONFIG_SYS_PTV 2
    #define CONFIG_CMDLINE_TAG
    #define CONFIG_SYS_ARM_ARCH 7
    #define CONFIG_BOOTSTAGE_STASH_SIZE 0x4096
    #define CONFIG_ENV_EEPROM_IS_ON_I2C
    #define CONFIG_CMD_IMPORTENV 1
    #define CONFIG_HAVE_PRIVATE_LIBGCC 1
    #define CONFIG_CMD_EXPORTENV 1
    #define CONFIG_PARTITIONS 1
    #define CONFIG_OMAP_GPIO
    #define CONFIG_OF_TRANSLATE 1
    #define CONFIG_SPL_STACK_R 1
    #define CONFIG_CMD_I2C 1
    #define CONFIG_ARCH_CPU_INIT
    #define CONFIG_SPL_NET_VCI_STRING "AM43xx U-Boot SPL"
    #define CONFIG_CMD_ELF 1
    #define CONFIG_EFI_LOADER 1
    #define CONFIG_SMBIOS_MANUFACTURER "ABC"
    #define CONFIG_SYS_NO_FLASH
    #define CONFIG_SPI_FLASH_ATMEL 1
    #define CONFIG_DM_SEQ_ALIAS 1
    #define CONFIG_OMAP
    #define CONFIG_FS_EXT4
    #define CONFIG_SYS_USB_FAT_BOOT_PARTITION 1
    #define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - CONFIG_SPL_TEXT_BASE)
    #define CONFIG_SPL_FRAMEWORK
    #define CONFIG_BOOTSTAGE_STASH_ADDR 0x0
    #define CONFIG_USB_ETH_RNDIS
    #define CONFIG_SPI
    #define CONFIG_SPL 1
    #define CONFIG_MTD_DEVICE
    #define CONFIG_SPL_ENV_SUPPORT 1
    #define CONFIG_CMD_SOURCE 1
    #define CONFIG_SYS_PROMPT "=> "
    #define CONFIG_USB_STORAGE 1
    #define CONFIG_DISPLAY_CPUINFO 1
    #define CONFIG_SHA1
    #define CONFIG_SETUP_MEMORY_TAGS
    #define CONFIG_CRC32
    #define CONFIG_DFU_RAM 1
    #define CONFIG_EXT4_WRITE
    #define CONFIG_SPL_FAT_SUPPORT 1
    #define CONFIG_SYS_I2C_EEPROM_ADDR 0x50
    #define CONFIG_CMD_LOADB 1
    #define CONFIG_CMD_LOADS 1
    #define CONFIG_CMD_IMI 1
    #define CONFIG_CMD_EXT4_WRITE 1
    #define CONFIG_SF_DEFAULT_SPEED 48000000
    #define CONFIG_SPL_USBETH_SUPPORT 1
    #define CONFIG_POWER_TPS65218
    #define CONFIG_LMB
    #define CONFIG_AUTOBOOT 1
    #define CONFIG_ARM 1
    #define CONFIG_SYS_OMAP24_I2C_SLAVE 1
    #define CONFIG_SPL_USB_GADGET_SUPPORT 1
    #define CONFIG_IS_ENABLED(option) (config_enabled(CONFIG_VAL(option)) || config_enabled(CONFIG_VAL(option ##_MODULE)))
    #define CONFIG_SPI_BOOT 1
    #define CONFIG_CMD_GPIO 1
    #define CONFIG_CMD_BDI 1
    #define CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
    #define CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR 0x1700
    #define CONFIG_SHA256
    #define CONFIG_BOOTP_SUBNETMASK
    #define CONFIG_SPL_OF_TRANSLATE 1
    #define CONFIG_DEFAULT_DEVICE_TREE "tco_am437x_pascal"
    #define CONFIG_USBNET_DEVADDR "de:ad:be:ef:00:01"
    #define CONFIG_SPL_RAW_IMAGE_SUPPORT 1
    #define CONFIG_CMD_MII 1
    #define CONFIG_USB_GADGET 1
    #define CONFIG_SPL_EXT_SUPPORT 1
    #define CONFIG_I2C
    #define CONFIG_SIMPLE_BUS 1
    #define CONFIG_CMD_MMC 1
    #define CONFIG_SPL_POWER_SUPPORT 1
    #define CONFIG_SPL_SPI_SUPPORT 1
    #define CONFIG_SPL_DM_SEQ_ALIAS 1
    #define CONFIG_OMAP_USB_PHY
    #define CONFIG_DM_SPI 1
    #define CONFIG_SPL_OF_LIBFDT 1
    #define CONFIG_SPL_LOAD_FIT 1
    #define CONFIG_SPL_SERIAL_PRESENT 1
    #define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME "u-boot.img"
    #define #define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION 1
    #define CONFIG_OMAP_HSMMC
    #define CONFIG_SYS_PL310_BASE 0x48242000
    #define CONFIG_CMD_FAT 1
    #define CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS 2
    #define CONFIG_BOOTM_NETBSD 1
    #define CONFIG_OF_SPL_REMOVE_PROPS "pinctrl-0 pinctrl-names clocks clock-names interrupt-parent"
    #define CONFIG_CMD_FDT 1
    #define CONFIG_USB_GADGET_DOWNLOAD 1
    #define CONFIG_SPI_FLASH_DATAFLASH 1
    #define CONFIG_TARGET_ABC_AM4_INDUSTRIAL 1
    #define CONFIG_CMD_ITEST 1
    #define CONFIG_BOOTM_VXWORKS 1
    #define CONFIG_CMD_EDITENV 1
    #define CONFIG_CMD_MTDPARTS
    #define CONFIG_TI_SPI_MMAP
    #define CONFIG_CMD_PART
    #define CONFIG_HAS_VBAR 1
    #define CONFIG_CMD_ENV_EXISTS 1
    #define CONFIG_VERSION_VARIABLE 1
    #define CONFIG_CMD_CRC32 1
    #define CONFIG_SF_DEFAULT_MODE SPI_MODE_3
    #define CONFIG_SYS_LONGHELP
    #define CONFIG_SPL_NET_SUPPORT 1
    #define CONFIG_IS_MODULE(option) config_enabled(CONFIG_VAL(option ##_MODULE))
    #define CONFIG_SYS_LOAD_ADDR 0x82000000
    #define CONFIG_USE_ARCH_MEMSET 1
    #define CONFIG_DISPLAY_BOARDINFO 1
    #define CONFIG_CMD_XIMG 1
    #define CONFIG_EXPERT 1
    #define CONFIG_CMDLINE 1
    #define CONFIG_BOOTDELAY 0
    #define CONFIG_CMD_BOOTEFI 1
    #define CONFIG_SPI_FLASH 1
    #define CONFIG_OF_EMBED 1
    #define CONFIG_BOOTP_BOOTPATH
    #define CONFIG_SYS_HELP_CMD_WIDTH 8
    #define CONFIG_NR_DRAM_BANKS 1
    #define CONFIG_POWER_TPS62362
    #define CONFIG_EFI_PARTITION
    #define CONFIG_AM437X_USB2PHY2_HOST
    #define CONFIG_SPL_SEPARATE_BSS 1
    #define CONFIG_FS_FAT
    #define CONFIG_BOOTM_RTEMS 1
    #define CONFIG_SYS_CBSIZE 1024
    #define CONFIG_SKIP_LOWLEVEL_INIT
    #define CONFIG_ISW_ENTRY_ADDR 0x402F4000
    #define CONFIG_DM_I2C 1
    #define CONFIG_SYS_SPL_MALLOC_SIZE SZ_8M
    #define CONFIG_MD5
    #define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR 0x300
    #define CONFIG_BOOTM_LINUX 1
    #define CONFIG_BOOTP_SEND_HOSTNAME
    #define CONFIG_DEFAULT_FDT_FILE ""
    #define CONFIG_BOARD_LATE_INIT
    #define CONFIG_CREATE_ARCH_SYMLINK 1
    #define CONFIG_CMD_CONSOLE 1
    #define CONFIG_SUPPORT_OF_CONTROL 1
    #define CONFIG_SYS_CPU "armv7"
    #define CONFIG_MII
    #define CONFIG_SPL_BOARD_INIT
    #define CONFIG_SPL_STACK_R_ADDR 0x82000000
    #define CONFIG_BOOTP_PXE_CLIENTARCH 0x15
    #define CONFIG_SPL_YMODEM_SUPPORT 1
    #define CONFIG_BOOTP_GATEWAY
    #define CONFIG_SYS_THUMB_BUILD
    #define CONFIG_SYS_CACHELINE_SIZE 64
    #define CONFIG_MMC 1
    #define CONFIG_SPL_OF_CONTROL 1
    #define CONFIG_SYS_SPL_ARGS_ADDR (CONFIG_SYS_SDRAM_BASE + (128 << 20))
    #define CONFIG_CMD_USB_MASS_STORAGE 1
    #define CONFIG_SPL_OS_BOOT 1
    #define CONFIG_SMBIOS_PRODUCT_NAME "am4-industrial"
    #define CONFIG_CMD_MISC 1
    #define CONFIG_FIT 1
    #define CONFIG_USB_DWC3 1
    #define CONFIG_TI_I2C_BOARD_DETECT 1
    #define CONFIG_SPL_LIBCOMMON_SUPPORT 1
    #define CONFIG_PHY_GIGE
    #define CONFIG_DM_DEVICE_REMOVE 1
    #define CONFIG_QSPI_SEL_GPIO 48
    #define CONFIG_ENV_OVERWRITE
    #define CONFIG_CMD_NET 1
    #define CONFIG_TIMER 1
    #define CONFIG_USB_GADGET_VBUS_DRAW 2
    #define CONFIG_CMD_NFS 1
    #define CONFIG_DFU_SF 1
    #define CONFIG_ENV_SIZE (64 << 10)
    #define CONFIG_G_DNL_VENDOR_NUM 0x0403
    #define CONFIG_USB_XHCI_DWC3 1
    #define CONFIG_SUPPORT_RAW_INITRD
    #define CONFIG_CMD_FS_GENERIC 1
    #define CONFIG_CMD_PING 1
    #define CONFIG_SYS_L2_PL310
    #define CONFIG_SYS_MALLOC_LEN SZ_32M
    #define CONFIG_USBNET_HOST_ADDR "de:ad:be:af:00:00"
    #define CONFIG_INITRD_TAG
    #define CONFIG_SPL_LIBDISK_SUPPORT 1
    #define CONFIG_LOCALVERSION ""
    #define CONFIG_EEPROM_CHIP_ADDRESS 0x50
    #define CONFIG_SYS_TEXT_BASE 0x80800000
    #define CONFIG_CC_OPTIMIZE_FOR_SIZE 1
    #define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR 1
    #define CONFIG_SYS_DEF_EEPROM_ADDR 0
    #define CONFIG_REGEX 1
    #define CONFIG_SYS_CONFIG_NAME "ABC_am4_industrial"
    #define CONFIG_SPL_SYS_MALLOC_SIMPLE 1
    #define CONFIG_CMD_FLASH 1
    #define CONFIG_USB_FUNCTION_MASS_STORAGE
    #define CONFIG_SPL_FS_LOAD_ARGS_NAME "args"
    #define CONFIG_CMD_SAVEENV 1
    #define CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTOR 0x1500
    #define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE
    #define CONFIG_BOOTM_PLAN9 1
    #define CONFIG_IS_BUILTIN(option) config_enabled(CONFIG_VAL(option))
    #define CONFIG_SPL_TEXT_BASE CONFIG_ISW_ENTRY_ADDR
    #define CONFIG_SERIAL_PRESENT 1
    #define CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN 0x100000
    #define CONFIG_SYS_CONSOLE_INFO_QUIET 1
    #define CONFIG_OF_LIST "tco_am437x_pascal"
    #define CONFIG_CMD_GPT
    #define CONFIG_PUB_ROM_DATA_SIZE 0x8400
    #define CONFIG_USB_DWC3_PHY_OMAP 1
    #define CONFIG_USB_ETHER
    #define CONFIG_SYS_OMAP24_I2C_SPEED 100000
    #define CONFIG_POWER_I2C
    #define CONFIG_DM_WARN 1
    #define CONFIG_BOOTP_DNS
    #define CONFIG_SYS_CACHE_SHIFT_6 1
    #define CONFIG_CMD_MEMORY 1
    #define CONFIG_SYS_MAXARGS 64
    #define CONFIG_SUPPORT_SPL 1
    #define CONFIG_CMD_RUN 1
    #define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
    #define CONFIG_ENV_VARS_UBOOT_CONFIG
    #define CONFIG_DM_SPI_FLASH 1
    #define CONFIG_USB 1
    #define CONFIG_BOOTP_HOSTNAME
    #define CONFIG_BOARDDIR board/ABC/am4-industrial
    #define CONFIG_POWER
    #define CONFIG_SPL_LEGACY_IMAGE_SUPPORT 1
    #define CONFIG_SPL_LOAD_FIT_ADDRESS 0x80800000
    #define CONFIG_NET 1
    #define CONFIG_CPU_V7 1
    #define CONFIG_OF_LIBFDT 1
    #define CONFIG_USB_XHCI_OMAP
    #define CONFIG_USB_DWC3_GADGET 1
    #define CONFIG_SYS_MAX_FLASH_SECT 512
    #define CONFIG_PHYLIB
    #define CONFIG_GENERATE_SMBIOS_TABLE 1
    #define CONFIG_CMDLINE_EDITING
    #define CONFIG_CMD_USB 1
    #define CONFIG_DM_SERIAL 1
    #define CONFIG_CMD_EXT2 1
    #define CONFIG_CMD_EXT4 1
    #define CONFIG_TI_EDMA3
    #define CONFIG_BOOTCOMMAND "if fatload mmc 0:4 $loadaddr tco_fw_update.scr; then " "if imi $loadaddr; then " "source $loadaddr; " "fi; " "fi; " "setenv bootargs root=/dev/mmcblk0p2 console=ttyS0,115200 norootwait vram=16M omapfb.vram=0:8M,1:4M,2:4M vt.global_cursor_default=0; " "fatload mmc 0 $loadaddr $bootfile; " "bootz $loadaddr;"
    #define CONFIG_QSPI_QUAD_SUPPORT
    #define CONFIG_ARCH_FIXUP_FDT_MEMORY 1
    #define CONFIG_ARCH_OMAP2 1
    #define CONFIG_SPL_SIMPLE_BUS 1
    #define CONFIG_SPL_I2C_SUPPORT 1
    #define CONFIG_MAX_RAM_BANK_SIZE (1024 << 21)
    #define CONFIG_USB_XHCI_HCD 1
    #define CONFIG_ISO_PARTITION
    #define CONFIG_SYS_MALLOC_CLEAR_ON_INIT 1
    #define CONFIG_NET_RETRY_COUNT 10
    #define CONFIG_CMD_EEPROM
    #define CONFIG_SYS_EXTRA_OPTIONS ""
    #define CONFIG_CMD_DFU 1
    #define CONFIG_EEPROM_BUS_ADDRESS 0
    #define CONFIG_SPL_GPIO_SUPPORT 1
    #define CONFIG_CMD_BOOTEFI_HELLO_COMPILE 1
    #define CONFIG_G_DNL_PRODUCT_NUM 0xbd00
    #define CONFIG_HUSH_PARSER 1
    #define CONFIG_CMD_DM 1
    #define CONFIG_BOOTP_VCI_STRING "U-Boot.armv7"
    #define CONFIG_DM 1
    #define CONFIG_ZLIB 1
    #define CONFIG_USB_GADGET_DUALSPEED 1
    #define CONFIG_LIB_UUID
    #define CONFIG_G_DNL_MANUFACTURER "Texas Instruments"
    #define CONFIG_BOOTP_DNS2
    #define CONFIG_SYS_I2C_OMAP24XX
    #define CONFIG_CMD_GO 1
    #define CONFIG_USB_HOST 1
    #define CONFIG_CMD_BOOTD 1
    #define CONFIG_CMD_BOOTM 1
    #define CONFIG_SPL_SPI_FLASH_SUPPORT 1
    #define CONFIG_CMD_BOOTZ 1
    #define CONFIG_SYS_NS16550 1
    #define CONFIG_SYS_MALLOC_F 1
    #define CONFIG_SYS_RX_ETH_BUFFER 64
    #define CONFIG_AUTO_COMPLETE
    #define CONFIG_SPI_FLASH_USE_4K_SECTORS 1
    #define CONFIG_OMAP_TIMER 1
    #define CONFIG_SYS_SOC "am33xx"
    #define CONFIG_SYS_HZ 1000
    #define CONFIG_SYS_MALLOC_F_LEN 0x2000
    #define CONFIG_SYS_NS16550_CLK 48000000
    #define CONFIG_DOS_PARTITION
    #define CONFIG_GZIP 1
    #define CONFIG_SYS_VENDOR "ABC"
    #define CONFIG_DFU_MMC 1
    #define CONFIG_DM_I2C_COMPAT
    #define CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTORS 0x200
    #define CONFIG_USB_FUNCTION_DFU 1
    #define CONFIG_CMD_SF 1
    #define CONFIG_BOOTSTAGE_USER_COUNT 0x20
    #define CONFIG_REQUIRE_SERIAL_CONSOLE 1
    #define CONFIG_CMD_FPGA 1
    #define CONFIG_IDENT_STRING ""
    #define CONFIG_ENV_IS_IN_FAT
    #define CONFIG_SYS_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 }
    #define CONFIG_SYS_NS16550_COM1 0x44e09000
    #define CONFIG_SPL_ETH_SUPPORT 1
    #define CONFIG_VAL(option) config_val(option)
    #define CONFIG_SPL_LIBGENERIC_SUPPORT 1
    #define CONFIG_DM_STDIO 1
    #define CONFIG_LOCALVERSION_AUTO 1
    #define CONFIG_SPL_MMC_SUPPORT 1
    #define CONFIG_AM43XX 1
    #define CONFIG_SYS_SDRAM_BASE 0x80000000
    #define CONFIG_DRIVER_TI_CPSW
    #define CONFIG_IMAGE_FORMAT_LEGACY
    #define CONFIG_SYS_BOOT_RAMDISK_HIGH
    #define CONFIG_NET_TFTP_VARS 1
    #define CONFIG_SPL_LDSCRIPT "arch/arm/mach-omap2/u-boot-spl.lds"
    #define CONFIG_USE_PRIVATE_LIBGCC 1
    #define CONFIG_CMD_SPI 1
    #define CONFIG_CMD_SPL
    #define CONFIG_CMD_DHCP 1
    #define CONFIG_SPL_SERIAL_SUPPORT 1
    #define CONFIG_CMD_ECHO 1
    #define CONFIG_GENERIC_MMC
    #define CONFIG_SYS_SPL_MALLOC_START (CONFIG_SPL_BSS_START_ADDR + CONFIG_SPL_BSS_MAX_SIZE)
    #define CONFIG_USB_DWC3_OMAP 1
    #define CONFIG_FAT_WRITE
    #define CONFIG_SYS_TIMERBASE 0x48040000
    #define CONFIG_CMD_TIME
    #define CONFIG_USE_ARCH_MEMCPY 1
    #define CONFIG_SPL_DM 1
    #define CONFIG_SPL_BSS_MAX_SIZE 0x80000
    #define CONFIG_SPL_FS_LOAD_KERNEL_NAME "uImage"
    #define CONFIG_SPL_BSS_START_ADDR 0x80a00000
    #define CONFIG_SPL_PAD_TO CONFIG_SPL_MAX_SIZE
    #define CONFIG_BOOTP_DEFAULT
    #define CONFIG_OF_CONTROL 1
    #define CONFIG_EXTRA_ENV_SETTINGS DEFAULT_LINUX_BOOT_ENV DEFAULT_MMC_TI_ARGS DEFAULT_FIT_TI_ARGS "fdtfile=undefined\0" "bootpart=0:2\0" "bootdir=/boot\0" "bootfile=zImage\0" "console=ttyO0,115200n8\0" "displaytype=dataimage480x800\0" "partitions=" "uuid_disk=${uuid_gpt_disk};" "name=rootfs,start=2MiB,size=-,uuid=${uuid_gpt_rootfs}\0" "optargs=\0" "usbroot=/dev/sda2 rw\0" "usbrootfstype=ext4 rootwait\0" "usbdev=0\0" "ramroot=/dev/ram0 rw\0" "ramrootfstype=ext2\0" "usbargs=setenv bootargs console=${console} " "${optargs} " "root=${usbroot} " "rootfstype=${usbrootfstype}\0" "ramargs=setenv bootargs console=${console} " "${optargs} " "root=${ramroot} " "rootfstype=${ramrootfstype}\0" "loadramdisk=load ${devtype} ${devnum} ${rdaddr} ramdisk.gz\0" "usbboot=" "setenv devnum ${usbdev}; " "setenv devtype usb; " "usb start ${usbdev}; " "if usb dev ${usbdev}; then " "if run loadbootenv; then " "echo Loaded environment from ${bootenv};" "run importbootenv;" "fi;" "if test -n $uenvcmd; then " "echo Running uenvcmd ...;" "run uenvcmd;" "fi;" "if run loadimage; then " "run loadfdt; " "echo Booting from usb ${usbdev}...; " "run usbargs;" "bootz ${loadaddr} - ${fdtaddr}; " "fi;" "fi\0" "fi;" "usb stop ${usbdev};\0" "findfdt=" "if test $board_name = AM43EPOS; then " "setenv fdtfile am43x-epos-evm.dtb; fi; " "if test $board_name = AM43__GP; then " "setenv fdtfile am437x-gp-evm.dtb; fi; " "if test $board_name = AM43XXHS; then " "setenv fdtfile am437x-gp-evm.dtb; fi; " "if test $board_name = AM43__SK; then " "setenv fdtfile am437x-sk-evm.dtb; fi; " "if test $board_name = AM43_IDK; then " "setenv fdtfile am437x-idk-evm.dtb; fi; " "if test $fdtfile = undefined; then " "echo WARNING: Could not determine device tree; fi; \0" NANDARGS NETARGS DFUARGS
    #define CONFIG_BOOTP_PXE
    #define CONFIG_HAS_THUMB2 1
    #define CONFIG_SYS_INIT_SP_ADDR (NON_SECURE_SRAM_END - GENERATED_GBL_DATA_SIZE)
    #define CONFIG_SYS_ARCH "arm"
    #define CONFIG_CMD_ASKENV 1
    #define CONFIG_BAUDRATE 115200
    #define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 2
    #define CONFIG_SYS_BOARD "am4-industrial"
    #define CONFIG_PARTITION_UUIDS
    #define CONFIG_DM_GPIO 1
    #define CONFIG_SYS_PTV 2
    #define CONFIG_CMDLINE_TAG
    #define CONFIG_SYS_ARM_ARCH 7
    #define CONFIG_BOOTSTAGE_STASH_SIZE 0x4096
    #define CONFIG_ENV_EEPROM_IS_ON_I2C
    #define CONFIG_CMD_IMPORTENV 1
    #define CONFIG_HAVE_PRIVATE_LIBGCC 1
    #define CONFIG_CMD_EXPORTENV 1
    #define CONFIG_PARTITIONS 1
    #define CONFIG_OMAP_GPIO
    #define CONFIG_OF_TRANSLATE 1
    #define CONFIG_SPL_STACK_R 1
    #define CONFIG_CMD_I2C 1
    #define CONFIG_ARCH_CPU_INIT
    #define CONFIG_SPL_NET_VCI_STRING "AM43xx U-Boot SPL"
    #define CONFIG_CMD_ELF 1
    #define CONFIG_EFI_LOADER 1
    #define CONFIG_SMBIOS_MANUFACTURER "ABC"
    #define CONFIG_SYS_NO_FLASH
    #define CONFIG_SPI_FLASH_ATMEL 1
    #define CONFIG_DM_SEQ_ALIAS 1
    #define CONFIG_OMAP
    #define CONFIG_FS_EXT4
    #define CONFIG_SYS_USB_FAT_BOOT_PARTITION 1
    #define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - CONFIG_SPL_TEXT_BASE)
    #define CONFIG_SPL_FRAMEWORK
    #define CONFIG_BOOTSTAGE_STASH_ADDR 0x0
    #define CONFIG_USB_ETH_RNDIS
    #define CONFIG_SPI
    #define CONFIG_SPL 1
    #define CONFIG_MTD_DEVICE
    #define CONFIG_SPL_ENV_SUPPORT 1
    #define CONFIG_CMD_SOURCE 1
    #define CONFIG_SYS_PROMPT "=> "
    #define CONFIG_USB_STORAGE 1
    #define CONFIG_DISPLAY_CPUINFO 1
    #define CONFIG_SHA1
    #define CONFIG_SETUP_MEMORY_TAGS
    #define CONFIG_CRC32
    #define CONFIG_DFU_RAM 1
    #define CONFIG_EXT4_WRITE
    #define CONFIG_SPL_FAT_SUPPORT 1
    #define CONFIG_SYS_I2C_EEPROM_ADDR 0x50
    #define CONFIG_CMD_LOADB 1
    #define CONFIG_CMD_LOADS 1
    #define CONFIG_CMD_IMI 1
    #define CONFIG_CMD_EXT4_WRITE 1
    #define CONFIG_SF_DEFAULT_SPEED 48000000
    #define CONFIG_SPL_USBETH_SUPPORT 1
    #define CONFIG_POWER_TPS65218
    #define CONFIG_LMB
    #define CONFIG_AUTOBOOT 1
    #define CONFIG_ARM 1
    #define CONFIG_SYS_OMAP24_I2C_SLAVE 1
    #define CONFIG_SPL_USB_GADGET_SUPPORT 1
    #define CONFIG_IS_ENABLED(option) (config_enabled(CONFIG_VAL(option)) || config_enabled(CONFIG_VAL(option ##_MODULE)))
    #define CONFIG_SPI_BOOT 1
    #define CONFIG_CMD_GPIO 1
    #define CONFIG_CMD_BDI 1
    #define CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
    #define CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR 0x1700
    #define CONFIG_SHA256
    #define CONFIG_BOOTP_SUBNETMASK
    #define CONFIG_SPL_OF_TRANSLATE 1
    #define CONFIG_DEFAULT_DEVICE_TREE "tco_am437x_pascal"
    #define CONFIG_USBNET_DEVADDR "de:ad:be:ef:00:01"
    #define CONFIG_SPL_RAW_IMAGE_SUPPORT 1
    #define CONFIG_CMD_MII 1
    #define CONFIG_USB_GADGET 1
    #define CONFIG_SPL_EXT_SUPPORT 1
    #define CONFIG_I2C
    #define CONFIG_SIMPLE_BUS 1
    #define CONFIG_CMD_MMC 1
    #define CONFIG_SPL_POWER_SUPPORT 1
    #define CONFIG_SPL_SPI_SUPPORT 1
    #define CONFIG_SPL_DM_SEQ_ALIAS 1
    #define CONFIG_OMAP_USB_PHY
    #define CONFIG_DM_SPI 1
    #define CONFIG_SPL_OF_LIBFDT 1
    #define CONFIG_SPL_LOAD_FIT 1
    #define CONFIG_SPL_SERIAL_PRESENT 1
    #define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME "u-boot.img"
    #define #define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION 1
    #define CONFIG_OMAP_HSMMC
    #define CONFIG_SYS_PL310_BASE 0x48242000
    #define CONFIG_CMD_FAT 1
    #define CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS 2
    #define CONFIG_BOOTM_NETBSD 1
    #define CONFIG_OF_SPL_REMOVE_PROPS "pinctrl-0 pinctrl-names clocks clock-names interrupt-parent"
    #define CONFIG_CMD_FDT 1
    #define CONFIG_USB_GADGET_DOWNLOAD 1
    #define CONFIG_SPI_FLASH_DATAFLASH 1
    #define CONFIG_TARGET_ABC_AM4_INDUSTRIAL 1
    #define CONFIG_CMD_ITEST 1
    #define CONFIG_BOOTM_VXWORKS 1
    #define CONFIG_CMD_EDITENV 1
    #define CONFIG_CMD_MTDPARTS
    #define CONFIG_TI_SPI_MMAP
    #define CONFIG_CMD_PART
    #define CONFIG_HAS_VBAR 1
    #define CONFIG_CMD_ENV_EXISTS 1
    #define CONFIG_VERSION_VARIABLE 1
    #define CONFIG_CMD_CRC32 1
    #define CONFIG_SF_DEFAULT_MODE SPI_MODE_3
    #define CONFIG_SYS_LONGHELP
    #define CONFIG_SPL_NET_SUPPORT 1
    #define CONFIG_IS_MODULE(option) config_enabled(CONFIG_VAL(option ##_MODULE))
    #define CONFIG_SYS_LOAD_ADDR 0x82000000
    #define CONFIG_USE_ARCH_MEMSET 1
    #define CONFIG_DISPLAY_BOARDINFO 1
    #define CONFIG_CMD_XIMG 1
    #define CONFIG_EXPERT 1
    #define CONFIG_CMDLINE 1
    #define CONFIG_BOOTDELAY 0
    #define CONFIG_CMD_BOOTEFI 1
    #define CONFIG_SPI_FLASH 1
    #define CONFIG_OF_EMBED 1
    #define CONFIG_BOOTP_BOOTPATH
    #define CONFIG_SYS_HELP_CMD_WIDTH 8
    #define CONFIG_NR_DRAM_BANKS 1
    #define CONFIG_POWER_TPS62362
    #define CONFIG_EFI_PARTITION
    #define CONFIG_AM437X_USB2PHY2_HOST
    #define CONFIG_SPL_SEPARATE_BSS 1
    #define CONFIG_FS_FAT
    #define CONFIG_BOOTM_RTEMS 1
    #define CONFIG_SYS_CBSIZE 1024
    #define CONFIG_SKIP_LOWLEVEL_INIT
    #define CONFIG_ISW_ENTRY_ADDR 0x402F4000
    #define CONFIG_DM_I2C 1
    #define CONFIG_SYS_SPL_MALLOC_SIZE SZ_8M
    #define CONFIG_MD5
    #define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR 0x300
    #define CONFIG_BOOTM_LINUX 1
    #define CONFIG_BOOTP_SEND_HOSTNAME
    #define CONFIG_DEFAULT_FDT_FILE ""
    #define CONFIG_BOARD_LATE_INIT
    #define CONFIG_CREATE_ARCH_SYMLINK 1
    #define CONFIG_CMD_CONSOLE 1
    #define CONFIG_SUPPORT_OF_CONTROL 1
    #define CONFIG_SYS_CPU "armv7"
    #define CONFIG_MII
    #define CONFIG_SPL_BOARD_INIT
    #define CONFIG_SPL_STACK_R_ADDR 0x82000000
    #define CONFIG_BOOTP_PXE_CLIENTARCH 0x15
    #define CONFIG_SPL_YMODEM_SUPPORT 1
    #define CONFIG_BOOTP_GATEWAY
    #define CONFIG_SYS_THUMB_BUILD
    #define CONFIG_SYS_CACHELINE_SIZE 64
    #define CONFIG_MMC 1
    #define CONFIG_SPL_OF_CONTROL 1
    #define CONFIG_SYS_SPL_ARGS_ADDR (CONFIG_SYS_SDRAM_BASE + (128 << 20))
    #define CONFIG_CMD_USB_MASS_STORAGE 1
    #define CONFIG_SPL_OS_BOOT 1
    #define CONFIG_SMBIOS_PRODUCT_NAME "am4-industrial"
    #define CONFIG_CMD_MISC 1
    #define CONFIG_FIT 1
    #define CONFIG_USB_DWC3 1
    #define CONFIG_TI_I2C_BOARD_DETECT 1
    #define CONFIG_SPL_LIBCOMMON_SUPPORT 1
    #define CONFIG_PHY_GIGE
    #define CONFIG_DM_DEVICE_REMOVE 1
    #define CONFIG_QSPI_SEL_GPIO 48
    #define CONFIG_ENV_OVERWRITE
    #define CONFIG_CMD_NET 1
    #define CONFIG_TIMER 1
    #define CONFIG_USB_GADGET_VBUS_DRAW 2
    #define CONFIG_CMD_NFS 1
    #define CONFIG_DFU_SF 1
    #define CONFIG_ENV_SIZE (64 << 10)
    #define CONFIG_G_DNL_VENDOR_NUM 0x0403
    #define CONFIG_USB_XHCI_DWC3 1
    #define CONFIG_SUPPORT_RAW_INITRD
    #define CONFIG_CMD_FS_GENERIC 1
    #define CONFIG_CMD_PING 1
    #define CONFIG_SYS_L2_PL310
    #define CONFIG_SYS_MALLOC_LEN SZ_32M
    #define CONFIG_USBNET_HOST_ADDR "de:ad:be:af:00:00"
    #define CONFIG_INITRD_TAG
    #define CONFIG_SPL_LIBDISK_SUPPORT 1
    #define CONFIG_LOCALVERSION ""
    #define CONFIG_EEPROM_CHIP_ADDRESS 0x50
    #define CONFIG_SYS_TEXT_BASE 0x80800000
    #define CONFIG_CC_OPTIMIZE_FOR_SIZE 1
    #define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR 1
    #define CONFIG_SYS_DEF_EEPROM_ADDR 0
    #define CONFIG_REGEX 1
    #define CONFIG_SYS_CONFIG_NAME "ABC_am4_industrial"
    #define CONFIG_SPL_SYS_MALLOC_SIMPLE 1
    #define CONFIG_CMD_FLASH 1
    #define CONFIG_USB_FUNCTION_MASS_STORAGE
    #define CONFIG_SPL_FS_LOAD_ARGS_NAME "args"
    #define CONFIG_CMD_SAVEENV 1
    #define CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTOR 0x1500
    #define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE
    #define CONFIG_BOOTM_PLAN9 1
    #define CONFIG_IS_BUILTIN(option) config_enabled(CONFIG_VAL(option))
    #define CONFIG_SPL_TEXT_BASE CONFIG_ISW_ENTRY_ADDR
    #define CONFIG_SERIAL_PRESENT 1
    #define CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN 0x100000
    #define CONFIG_SYS_CONSOLE_INFO_QUIET 1
    #define CONFIG_OF_LIST "tco_am437x_pascal"
    #define CONFIG_CMD_GPT
    #define CONFIG_PUB_ROM_DATA_SIZE 0x8400
    #define CONFIG_USB_DWC3_PHY_OMAP 1
    #define CONFIG_USB_ETHER
    #define CONFIG_SYS_OMAP24_I2C_SPEED 100000
    #define CONFIG_POWER_I2C
    #define CONFIG_DM_WARN 1
    #define CONFIG_BOOTP_DNS
    #define CONFIG_SYS_CACHE_SHIFT_6 1
    #define CONFIG_CMD_MEMORY 1
    #define CONFIG_SYS_MAXARGS 64
    #define CONFIG_SUPPORT_SPL 1
    #define CONFIG_CMD_RUN 1
    #define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
    #define CONFIG_ENV_VARS_UBOOT_CONFIG
    #define CONFIG_DM_SPI_FLASH 1
    #define CONFIG_USB 1
    #define CONFIG_BOOTP_HOSTNAME
    #define CONFIG_BOARDDIR board/ABC/am4-industrial
    #define CONFIG_POWER
    #define CONFIG_SPL_LEGACY_IMAGE_SUPPORT 1
    #define CONFIG_SPL_LOAD_FIT_ADDRESS 0x80800000
    #define CONFIG_NET 1
    #define CONFIG_CPU_V7 1
    #define CONFIG_OF_LIBFDT 1
    #define CONFIG_USB_XHCI_OMAP
    #define CONFIG_USB_DWC3_GADGET 1
    #define CONFIG_SYS_MAX_FLASH_SECT 512
    #define CONFIG_PHYLIB
    #define CONFIG_GENERATE_SMBIOS_TABLE 1
    #define CONFIG_CMDLINE_EDITING
    #define CONFIG_CMD_USB 1
    #define CONFIG_DM_SERIAL 1
    #define CONFIG_CMD_EXT2 1
    #define CONFIG_CMD_EXT4 1
    #define CONFIG_TI_EDMA3
    #define CONFIG_BOOTCOMMAND "if fatload mmc 0:4 $loadaddr tco_fw_update.scr; then " "if imi $loadaddr; then " "source $loadaddr; " "fi; " "fi; " "setenv bootargs root=/dev/mmcblk0p2 console=ttyS0,115200 norootwait vram=16M omapfb.vram=0:8M,1:4M,2:4M vt.global_cursor_default=0; " "fatload mmc 0 $loadaddr $bootfile; " "bootz $loadaddr;"
    #define CONFIG_QSPI_QUAD_SUPPORT
    #define CONFIG_ARCH_FIXUP_FDT_MEMORY 1
    #define CONFIG_ARCH_OMAP2 1
    #define CONFIG_SPL_SIMPLE_BUS 1
    #define CONFIG_SPL_I2C_SUPPORT 1
    #define CONFIG_MAX_RAM_BANK_SIZE (1024 << 21)
    #define CONFIG_USB_XHCI_HCD 1
    #define CONFIG_ISO_PARTITION
    #define CONFIG_SYS_MALLOC_CLEAR_ON_INIT 1
    #define CONFIG_NET_RETRY_COUNT 10
    #define CONFIG_CMD_EEPROM
    #define CONFIG_SYS_EXTRA_OPTIONS ""
    #define CONFIG_CMD_DFU 1
    #define CONFIG_EEPROM_BUS_ADDRESS 0
    #define CONFIG_SPL_GPIO_SUPPORT 1
    #define CONFIG_CMD_BOOTEFI_HELLO_COMPILE 1
    #define CONFIG_G_DNL_PRODUCT_NUM 0xbd00
    #define CONFIG_HUSH_PARSER 1
    #define CONFIG_CMD_DM 1
    #define CONFIG_BOOTP_VCI_STRING "U-Boot.armv7"
    #define CONFIG_DM 1
    #define CONFIG_ZLIB 1
    #define CONFIG_USB_GADGET_DUALSPEED 1
    #define CONFIG_LIB_UUID
    #define CONFIG_G_DNL_MANUFACTURER "Texas Instruments"
    #define CONFIG_BOOTP_DNS2
    #define CONFIG_SYS_I2C_OMAP24XX
    #define CONFIG_CMD_GO 1
    #define CONFIG_USB_HOST 1
    #define CONFIG_CMD_BOOTD 1
    #define CONFIG_CMD_BOOTM 1
    #define CONFIG_SPL_SPI_FLASH_SUPPORT 1
    #define CONFIG_CMD_BOOTZ 1
    #define CONFIG_SYS_NS16550 1
    #define CONFIG_SYS_MALLOC_F 1
    #define CONFIG_SYS_RX_ETH_BUFFER 64
    #define CONFIG_AUTO_COMPLETE
    #define CONFIG_SPI_FLASH_USE_4K_SECTORS 1
    #define CONFIG_OMAP_TIMER 1
    #define CONFIG_SYS_SOC "am33xx"
    #define CONFIG_SYS_HZ 1000
    #define CONFIG_SYS_MALLOC_F_LEN 0x2000
    #define CONFIG_SYS_NS16550_CLK 48000000
    #define CONFIG_DOS_PARTITION
    #define CONFIG_GZIP 1
    #define CONFIG_SYS_VENDOR "ABC"
    #define CONFIG_DFU_MMC 1
    #define CONFIG_DM_I2C_COMPAT
    #define CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTORS 0x200
    #define CONFIG_USB_FUNCTION_DFU 1
    #define CONFIG_CMD_SF 1
    #define CONFIG_BOOTSTAGE_USER_COUNT 0x20
    #define CONFIG_REQUIRE_SERIAL_CONSOLE 1
    #define CONFIG_CMD_FPGA 1
    #define CONFIG_IDENT_STRING ""
    #define CONFIG_ENV_IS_IN_FAT
    #define CONFIG_SYS_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 }
    #define CONFIG_SYS_NS16550_COM1 0x44e09000
    #define CONFIG_SPL_ETH_SUPPORT 1
    #define CONFIG_VAL(option) config_val(option)
    #define CONFIG_SPL_LIBGENERIC_SUPPORT 1
    #define CONFIG_DM_STDIO 1
    #define CONFIG_LOCALVERSION_AUTO 1
    #define CONFIG_SPL_MMC_SUPPORT 1
    #define CONFIG_AM43XX 1
    #define CONFIG_SYS_SDRAM_BASE 0x80000000
    #define CONFIG_DRIVER_TI_CPSW
    #define CONFIG_IMAGE_FORMAT_LEGACY
    #define CONFIG_SYS_BOOT_RAMDISK_HIGH
    #define CONFIG_NET_TFTP_VARS 1
    #define CONFIG_SPL_LDSCRIPT "arch/arm/mach-omap2/u-boot-spl.lds"
    #define CONFIG_USE_PRIVATE_LIBGCC 1
    #define CONFIG_CMD_SPI 1
    #define CONFIG_CMD_SPL
    #define CONFIG_CMD_DHCP 1
    #define CONFIG_SPL_SERIAL_SUPPORT 1
    #define CONFIG_CMD_ECHO 1
    #define CONFIG_GENERIC_MMC
    #define CONFIG_SYS_SPL_MALLOC_START (CONFIG_SPL_BSS_START_ADDR + CONFIG_SPL_BSS_MAX_SIZE)
    #define CONFIG_USB_DWC3_OMAP 1
    #define CONFIG_FAT_WRITE
    #define CONFIG_SYS_TIMERBASE 0x48040000
    #define CONFIG_CMD_TIME
    #define CONFIG_USE_ARCH_MEMCPY 1
    #define CONFIG_SPL_DM 1
    #define CONFIG_SPL_BSS_MAX_SIZE 0x80000
    #define CONFIG_SPL_FS_LOAD_KERNEL_NAME "uImage"
    #define CONFIG_SPL_BSS_START_ADDR 0x80a00000
    #define CONFIG_SPL_PAD_TO CONFIG_SPL_MAX_SIZE
    #define CONFIG_BOOTP_DEFAULT
    #define CONFIG_OF_CONTROL 1
    #define CONFIG_EXTRA_ENV_SETTINGS DEFAULT_LINUX_BOOT_ENV DEFAULT_MMC_TI_ARGS DEFAULT_FIT_TI_ARGS "fdtfile=undefined\0" "bootpart=0:2\0" "bootdir=/boot\0" "bootfile=zImage\0" "console=ttyO0,115200n8\0" "displaytype=dataimage480x800\0" "partitions=" "uuid_disk=${uuid_gpt_disk};" "name=rootfs,start=2MiB,size=-,uuid=${uuid_gpt_rootfs}\0" "optargs=\0" "usbroot=/dev/sda2 rw\0" "usbrootfstype=ext4 rootwait\0" "usbdev=0\0" "ramroot=/dev/ram0 rw\0" "ramrootfstype=ext2\0" "usbargs=setenv bootargs console=${console} " "${optargs} " "root=${usbroot} " "rootfstype=${usbrootfstype}\0" "ramargs=setenv bootargs console=${console} " "${optargs} " "root=${ramroot} " "rootfstype=${ramrootfstype}\0" "loadramdisk=load ${devtype} ${devnum} ${rdaddr} ramdisk.gz\0" "usbboot=" "setenv devnum ${usbdev}; " "setenv devtype usb; " "usb start ${usbdev}; " "if usb dev ${usbdev}; then " "if run loadbootenv; then " "echo Loaded environment from ${bootenv};" "run importbootenv;" "fi;" "if test -n $uenvcmd; then " "echo Running uenvcmd ...;" "run uenvcmd;" "fi;" "if run loadimage; then " "run loadfdt; " "echo Booting from usb ${usbdev}...; " "run usbargs;" "bootz ${loadaddr} - ${fdtaddr}; " "fi;" "fi\0" "fi;" "usb stop ${usbdev};\0" "findfdt=" "if test $board_name = AM43EPOS; then " "setenv fdtfile am43x-epos-evm.dtb; fi; " "if test $board_name = AM43__GP; then " "setenv fdtfile am437x-gp-evm.dtb; fi; " "if test $board_name = AM43XXHS; then " "setenv fdtfile am437x-gp-evm.dtb; fi; " "if test $board_name = AM43__SK; then " "setenv fdtfile am437x-sk-evm.dtb; fi; " "if test $board_name = AM43_IDK; then " "setenv fdtfile am437x-idk-evm.dtb; fi; " "if test $fdtfile = undefined; then " "echo WARNING: Could not determine device tree; fi; \0" NANDARGS NETARGS DFUARGS
    #define CONFIG_BOOTP_PXE
    #define CONFIG_HAS_THUMB2 1
    #define CONFIG_SYS_INIT_SP_ADDR (NON_SECURE_SRAM_END - GENERATED_GBL_DATA_SIZE)
    #define CONFIG_SYS_ARCH "arm"
    #define CONFIG_CMD_ASKENV 1
    #define CONFIG_BAUDRATE 115200
    #define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 2
    #define CONFIG_SYS_BOARD "am4-industrial"
    #define CONFIG_PARTITION_UUIDS
    #define CONFIG_DM_GPIO 1
    #define CONFIG_SYS_PTV 2
    #define CONFIG_CMDLINE_TAG
    #define CONFIG_SYS_ARM_ARCH 7
    #define CONFIG_BOOTSTAGE_STASH_SIZE 0x4096
    #define CONFIG_ENV_EEPROM_IS_ON_I2C
    #define CONFIG_CMD_IMPORTENV 1
    #define CONFIG_HAVE_PRIVATE_LIBGCC 1
    #define CONFIG_CMD_EXPORTENV 1
    #define CONFIG_PARTITIONS 1
    #define CONFIG_OMAP_GPIO
    #define CONFIG_OF_TRANSLATE 1
    #define CONFIG_SPL_STACK_R 1
    #define CONFIG_CMD_I2C 1
    #define CONFIG_ARCH_CPU_INIT
    #define CONFIG_SPL_NET_VCI_STRING "AM43xx U-Boot SPL"
    #define CONFIG_CMD_ELF 1
    #define CONFIG_EFI_LOADER 1
    #define CONFIG_SMBIOS_MANUFACTURER "ABC"
    #define CONFIG_SYS_NO_FLASH
    #define CONFIG_SPI_FLASH_ATMEL 1
    #define CONFIG_DM_SEQ_ALIAS 1
    #define CONFIG_OMAP
    #define CONFIG_FS_EXT4
    #define CONFIG_SYS_USB_FAT_BOOT_PARTITION 1
    #define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - CONFIG_SPL_TEXT_BASE)
    #define CONFIG_SPL_FRAMEWORK
    #define CONFIG_BOOTSTAGE_STASH_ADDR 0x0
    #define CONFIG_USB_ETH_RNDIS
    #define CONFIG_SPI
    #define CONFIG_SPL 1
    #define CONFIG_MTD_DEVICE
    #define CONFIG_SPL_ENV_SUPPORT 1
    #define CONFIG_CMD_SOURCE 1
    #define CONFIG_SYS_PROMPT "=> "
    #define CONFIG_USB_STORAGE 1
    #define CONFIG_DISPLAY_CPUINFO 1
    #define CONFIG_SHA1
    #define CONFIG_SETUP_MEMORY_TAGS
    #define CONFIG_CRC32
    #define CONFIG_DFU_RAM 1
    #define CONFIG_EXT4_WRITE
    #define CONFIG_SPL_FAT_SUPPORT 1
    #define CONFIG_SYS_I2C_EEPROM_ADDR 0x50
    #define CONFIG_CMD_LOADB 1
    #define CONFIG_CMD_LOADS 1
    #define CONFIG_CMD_IMI 1
    #define CONFIG_CMD_EXT4_WRITE 1
    #define CONFIG_SF_DEFAULT_SPEED 48000000
    #define CONFIG_SPL_USBETH_SUPPORT 1
    #define CONFIG_POWER_TPS65218
    #define CONFIG_LMB
    #define CONFIG_AUTOBOOT 1
    #define CONFIG_ARM 1
    #define CONFIG_SYS_OMAP24_I2C_SLAVE 1
    #define CONFIG_SPL_USB_GADGET_SUPPORT 1
    #define CONFIG_IS_ENABLED(option) (config_enabled(CONFIG_VAL(option)) || config_enabled(CONFIG_VAL(option ##_MODULE)))
    #define CONFIG_SPI_BOOT 1
    #define CONFIG_CMD_GPIO 1
    #define CONFIG_CMD_BDI 1
    #define CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
    #define CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR 0x1700
    #define CONFIG_SHA256
    #define CONFIG_BOOTP_SUBNETMASK
    #define CONFIG_SPL_OF_TRANSLATE 1
    #define CONFIG_DEFAULT_DEVICE_TREE "tco_am437x_pascal"
    #define CONFIG_USBNET_DEVADDR "de:ad:be:ef:00:01"
    #define CONFIG_SPL_RAW_IMAGE_SUPPORT 1
    #define CONFIG_CMD_MII 1
    #define CONFIG_USB_GADGET 1
    #define CONFIG_SPL_EXT_SUPPORT 1
    #define CONFIG_I2C
    #define CONFIG_SIMPLE_BUS 1
    #define CONFIG_CMD_MMC 1
    #define CONFIG_SPL_POWER_SUPPORT 1
    #define CONFIG_SPL_SPI_SUPPORT 1
    #define CONFIG_SPL_DM_SEQ_ALIAS 1
    #define CONFIG_OMAP_USB_PHY
    #define CONFIG_DM_SPI 1
    #define CONFIG_SPL_OF_LIBFDT 1
    #define CONFIG_SPL_LOAD_FIT 1
    #define CONFIG_SPL_SERIAL_PRESENT 1
    #define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME "u-boot.img"
    #define CONFIG_OMAP3_SPI 1

    Please check if uboot config are ok to use the SPI Flash Chip.

    If I disable DM for SPI then which driver will get linked to the SPI chip?

  • Hi,

        In addition to previous query, please also let me know if any MTD configurations are required for this task.

    Thx,

    Kiran.

  • Hi,

    I am able to do write & read operations on SPI Flash.

    Also the flash is getting probed successfully with sf probe 0 command.

    I am able to write MLO & u-boot.img files to Flash.

    Please help in booting from SPI Flash. By default SPI Flash is 1st in order in boot sequence as per pin configuration. Still after removing the SD-Card nothing happens.

    PFA logs.

    SPI_FLASH_Detected.log
    � 
    U-Boot SPL 2017.01 (Mar 03 2022 - 15:42:54)
    Trying to boot from MMC1
    SPL: Please implement spl_start_uboot() for your board
    SPL: Direct Linux boot not active!
    reading u-boot.img
    reading u-boot.img
    reading u-boot.img
    No matching DT out of these options:
       tco_am437x_pascal
    
    
    U-Boot 2017.01 (Mar 03 2022 - 15:42:54 +0530)
    
    CPU  : AM437X-GP rev 1.2
    Model: TI AM437x GP EVM
    DRAM:  512 MiB
    PMIC:  TPS65218
    MMC:   OMAP SD/MMC: 0, OMAP SD/MMC: 1
    reading uboot.env
    
    ** Unable to read "uboot.env" from mmc0:1 **
    Using default environment
    
    Net:   <ethaddr> not set. Validating first E-fuse MAC
    Could not get PHY for cpsw: addr 0
    cpsw, usb_ether
    Hit any key to stop autoboot:  0  0
    => 
    => sf probe
    SPI DataFlash: Detected at45db161d with page size 512 Bytes, erase size 512 Bytes, total 2 MiB, revision d
    SPI DataFlash: Detected AT45DB161x with page size 528 Bytes, erase size 528 Bytes, total 2.1 MiB, revision 
    => sf erase 0 0x210000
    SF: 2162688 bytes @ 0x0 Erased: OK
    => 
    => fatload mmc 0 ${loadaddr} MLO
    reading MLO
    157128 bytes read in 12 ms (12.5 MiB/s)
    => 
    => sf write ${loadaddr} 0 ${filesize}
    device 0 offset 0x0, size 0x265c8
    SF: 157128 bytes @ 0x0 Written: OK
    => 
    => fatload mmc 0 ${loadaddr} u-boot.img
    reading u-boot.img
    464100 bytes read in 29 ms (15.3 MiB/s)
    => 
    => sf write ${loadaddr} 0x4000 ${filesize}
    device 0 offset 0x4000, size 0x714e4
    SF: 464100 bytes @ 0x4000 Written: OK
    => 
    => sf read 0x80000000 0 100
    device 0 offset 0x0, size 0x100
    SF: 256 bytes @ 0x0 Read: OK
    => 
    => md 0x80000000
    80000000: 000263d0 402f4000 ea00000f e59ff014    .c...@/@........
    80000010: 00000000 45534843 4e495454 00005347    ....CHSETTINGS..
    80000020: ffffffff ffffffff ffffffff ffffffff    ................
    80000030: ffffffff ffffffff ffffffff ffffffff    ................
    80000040: c0c0c0c1 00000100 00000000 00000000    ................
    80000050: 00000000 00000000 00000000 00000000    ................
    80000060: 00000000 00000000 00000000 00000000    ................
    80000070: 00000000 00000000 00000000 00000000    ................
    80000080: 00000000 00000000 00000000 00000000    ................
    80000090: 00000000 00000000 00000000 00000000    ................
    800000a0: 00000000 00000000 00000000 00000000    ................
    800000b0: 00000000 00000000 00000000 00000000    ................
    800000c0: 00000000 00000000 00000000 00000000    ................
    800000d0: 00000000 00000000 00000000 00000000    ................
    800000e0: 00000000 00000000 00000000 00000000    ................
    800000f0: 00000000 00000000 00000000 00000000    ................
    80000100: f6bfffff def6ffff fffe6fff bfffdffe    .........o......
    80000110: f7ffffbf dde6ffef e7ffff7f fcf7fdfe    ................
    80000120: 7f7fffff ddffdfff f7ffef7d 9ed79efe    ........}.......
    80000130: ff7efffe fdf7fef6 fffffeff fdff9fcf    ..~.............
    80000140: ebfdffff deffddff ffffff7f bdfefdef    ................
    80000150: fbffefff dffefef7 7bffffff dccebff6    ...........{....
    80000160: ffffefff 9ef7fdff fbbffffd ffdffdde    ................
    80000170: ffdfff7f ffff9edf efffffff ddc7beff    ................
    80000180: ffffffff ffefbcff efbffbff dcdeffff    ................
    80000190: ffffe7ff fcdfdfff effbfffb bdf7ffff    ................
    800001a0: fffffbff fefffefe ffffffff bfffffee    ................
    800001b0: fffffffd ffdeddfe fff76bff fccebcef    .........k......
    800001c0: ffffffbf dff6bffe fffff7ff bdd7fedf    ................
    800001d0: bfff7bbf fff7def6 fffff3ff fdc7fed6    .{..............
    800001e0: f7fff7ff beffffde ffffffff ddef9fcf    ................
    800001f0: 7fff7ffd bfe7ffdf fffdf7ff ffef9cff    ................
    80000200: f7ffffff dfdfffee effeffff dff7bff6    ................
    80000210: fffdffff dde6ffff fdffff7f fdf7fffe    ................
    80000220: ffffffff dfffffef fffffbff fffffedf    ................
    80000230: ffffff7f dfce9dfe f7fbefdf dffeffdf    ................
    80000240: 7fffefff fdffdce7 f7fd7ffd 9effbff7    ................
    80000250: ffbff7fa dee7fff7 ffbdef7f ffd6dfef    ................
    80000260: fbbfffff fefedeff fffdfbff bfeedfdf    ................
    80000270: fefdbfff ffeffcff ebfffffd ddeeffe7    ................
    80000280: 77ffffff bfffdfe6 ffffffff fdfefffe    ...w............
    80000290: ffffffff fff7fee7 fffefffb fef7fff6    ................
    800002a0: efffffff fdefffd7 ffffeff7 fefe9fff    ................
    800002b0: ffffffff 9ffeffef 7fffffff ffdfdff6    ................
    800002c0: fffffbff dffffef7 ffffff7f fffffff6    ................
    800002d0: fffffffd dcc7ffff fbfdffff fcefbcde    ................
    800002e0: ffffffff fcfffdfe fffbffff fddebef7    ................
    800002f0: efbfffbd ffffbdff ffbfeffd fdffffdf    ................
    80000300: fffeffff fcfedef6 ff7fffff ffd7ffff    ................
    80000310: ffffffff befebcdf fffff7ff dfcefcef    ................
    80000320: fff5ffff fde7ffff 7fff7ffd bfffbfee    ................
    80000330: f7ffffbf ffeeffef ffffffbf feeffdff    ................
    80000340: ffffffff defffffe fffdffbf 9dc7ffd7    ................
    80000350: fdfdfbbf fe66dfef ef7dfffd f9effff7    ......f...}.....
    80000360: f7ffffff dff6bfdf ffffffbf fddebfde    ................
    80000370: ffffdfff fdc7fde6 ffffffbf fceeddff    ................
    80000380: efffefff ffffbffe f7dfefff bef7fdef    ................
    80000390: ffffff7b ffdedeff 7fffffff fccfffff    {...............
    800003a0: fffffffb fdfedfff f67ffffb fffffcf7    ................
    800003b0: ebffffff 9ff7ffff fdfdffff bfeffece    ................
    800003c0: f7ffffff ddcedfff ffffffff dedfffdf    ................
    800003d0: ffffffff bdffffc6 7fffff3f dff7ddf7    ........?.......
    800003e0: f7bf7fff bfffffdf fffffbff 9fffdeff    ................
    800003f0: fffffbff bcffdfff ebfffbff ffe7bce7    ................
    => sf read 0x80040000 40000 100
    device 0 offset 0x40000, size 0x100
    SF: 256 bytes @ 0x40000 Read: OK
    => 
    => md 0x80040000
    80040000: edfe0dd0 41030000 38000000 c0020000    .......A...8....
    80040010: 28000000 11000000 10000000 00000000    ...(............
    80040020: 81000000 88020000 00000000 00000000    ................
    80040030: 00000000 00000000 01000000 00000000    ................
    80040040: 03000000 04000000 61000000 a7942062    ...........ab ..
    80040050: 03000000 2a000000 55000000 6d726946    .......*...UFirm
    80040060: 65726177 616d6920 77206567 20687469    ware image with 
    80040070: 20656e6f 6d20726f 2065726f 20544446    one or more FDT 
    80040080: 626f6c62 00000073 03000000 17000000    blobs...........
    80040090: 4d000000 6f422d55 6d20746f 616d696b    ...MU-Boot mkima
    800400a0: 32206567 2e373130 00003130 03000000    ge 2017.01......
    800400b0: 04000000 3e000000 01000000 01000000    .......>........
    800400c0: 67616d69 00007365 01000000 6d726966    images......firm
    800400d0: 65726177 00003140 03000000 04000000    ware@1..........
    800400e0: 77000000 787c0600 03000000 04000000    ...w..|x........
    800400f0: 6b000000 00000000 03000000 28000000    ...k...........(
    
    => printenv
    arch=arm
    args_mmc=run finduuid;setenv bootargs console=${console} ${optargs} root=PARTUUID=${uuid} rw rootfstype=${mmcrootfstype}
    baudrate=115200
    board=am4-industrial
    board_name=am4-industrial
    boot_fdt=try
    boot_fit=0
    bootcmd=if fatload mmc 0:4 $loadaddr tco_fw_update.scr; then if imi $loadaddr; then source $loadaddr; fi; fi; setenv bootargs root=/dev/mmcblk0p2 console=ttyS0,115200 norootwait vram=16M omapfb.vram=0:8M,1:4M,2:4M vt.global_cursor_default=0; fatload mmc 0 $loadaddr $bootfile; bootz $loadaddr;
    bootdelay=0
    bootdir=/boot
    bootenvfile=uEnv.txt
    bootfile=zImage
    bootm_size=0x10000000
    bootpart=0:2
    bootscript=echo Running bootscript from mmc${mmcdev} ...; source ${loadaddr}
    console=ttyO0,115200n8
    cpu=armv7
    dfu_alt_info_emmc=rawemmc raw 0 3751936;boot part 1 1;rootfs part 1 2;MLO fat 1 1;MLO.raw raw 0x100 0x100;u-boot.img.raw raw 0x300 0x1000;u-env.raw raw 0x1300 0x200;spl-os-args.raw raw 0x1500 0x200;spl-os-image.raw raw 0x1700 0x6900;spl-os-args fat 1 1;spl-os-image fat 1 1;u-boot.img fat 1 1;uEnv.txt fat 1 1
    dfu_alt_info_mmc=boot part 0 1;rootfs part 0 2;MLO fat 0 1;MLO.raw raw 0x100 0x100;u-boot.img.raw raw 0x300 0x1000;u-env.raw raw 0x1300 0x200;spl-os-args.raw raw 0x1500 0x200;spl-os-image.raw raw 0x1700 0x6900;spl-os-args fat 0 1;spl-os-image fat 0 1;u-boot.img fat 0 1;uEnv.txt fat 0 1
    dfu_alt_info_qspi=u-boot.bin raw 0x0 0x080000;u-boot.backup raw 0x080000 0x080000;u-boot-spl-os raw 0x100000 0x010000;u-boot-env raw 0x110000 0x010000;u-boot-env.backup raw 0x120000 0x010000;kernel raw 0x130000 0x800000
    dfu_alt_info_ram=kernel ram 0x80200000 0x4000000;fdt ram 0x80f80000 0x80000;ramdisk ram 0x81000000 0x4000000
    dfu_bufsiz=0x10000
    displaytype=dataimage480x800
    envboot=mmc dev ${mmcdev}; if mmc rescan; then echo SD/MMC found on device ${mmcdev};if run loadbootscript; then run bootscript;else if run loadbootenv; then echo Loaded env from ${bootenvfile};run importbootenv;fi;if test -n $uenvcmd; then echo Running uenvcmd ...;run uenvcmd;fi;fi;fi;
    eth1addr=30:45:11:b1:ef:b3
    ethact=cpsw
    ethaddr=30:45:11:b1:ef:b1
    fdt_addr_r=0x88000000
    fdtaddr=0x88000000
    fdtcontroladdr=9ff7c160
    fdtfile=undefined
    findfdt=if test $board_name = AM43EPOS; then setenv fdtfile am43x-epos-evm.dtb; fi; if test $board_name = AM43__GP; then setenv fdtfile am437x-gp-evm.dtb; fi; if test $board_name = AM43XXHS; then setenv fdtfile am437x-gp-evm.dtb; fi; if test $board_name = AM43__SK; then setenv fdtfile am437x-sk-evm.dtb; fi; if test $board_name = AM43_IDK; then setenv fdtfile am437x-idk-evm.dtb; fi; if test $fdtfile = undefined; then echo WARNING: Could not determine device tree; fi; 
    finduuid=part uuid mmc ${bootpart} uuid
    fit_bootfile=fitImage
    fit_loadaddr=0x87000000
    importbootenv=echo Importing environment from mmc${mmcdev} ...; env import -t ${loadaddr} ${filesize}
    kernel_addr_r=0x82000000
    loadaddr=0x82000000
    loadbootenv=fatload mmc ${mmcdev} ${loadaddr} ${bootenvfile}
    loadbootscript=load mmc ${mmcdev} ${loadaddr} boot.scr
    loadfdt=load ${devtype} ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}
    loadfit=run args_mmc; bootm ${loadaddr}#${fdtfile};
    loadimage=load ${devtype} ${bootpart} ${loadaddr} ${bootdir}/${bootfile}
    loadramdisk=load ${devtype} ${devnum} ${rdaddr} ramdisk.gz
    mmcboot=mmc dev ${mmcdev}; setenv devnum ${mmcdev}; setenv devtype mmc; if mmc rescan; then echo SD/MMC found on device ${mmcdev};if run loadimage; then if test ${boot_fit} -eq 1; then run loadfit; else run mmcloados;fi;fi;fi;
    mmcdev=0
    mmcloados=run args_mmc; if test ${boot_fdt} = yes || test ${boot_fdt} = try; then if run loadfdt; then bootz ${loadaddr} - ${fdtaddr}; else if test ${boot_fdt} = try; then bootz; else echo WARN: Cannot load the DT; fi; fi; else bootz; fi;
    mmcrootfstype=ext4 rootwait
    netargs=setenv bootargs console=${console} ${optargs} root=/dev/nfs nfsroot=${serverip}:${rootpath},${nfsopts} rw ip=dhcp
    netboot=echo Booting from network ...; setenv autoload no; dhcp; run netloadimage; run netloadfdt; run netargs; bootz ${loadaddr} - ${fdtaddr}
    netloadfdt=tftp ${fdtaddr} ${fdtfile}
    netloadimage=tftp ${loadaddr} ${bootfile}
    nfsopts=nolock
    partitions=uuid_disk=${uuid_gpt_disk};name=rootfs,start=2MiB,size=-,uuid=${uuid_gpt_rootfs}
    pxefile_addr_r=0x80100000
    ramargs=setenv bootargs console=${console} ${optargs} root=${ramroot} rootfstype=${ramrootfstype}
    ramdisk_addr_r=0x88080000
    ramroot=/dev/ram0 rw
    ramrootfstype=ext2
    rdaddr=0x88080000
    rootpath=/export/rootfs
    scriptaddr=0x80000000
    soc=am33xx
    static_ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off
    stderr=serial@44e09000
    stdin=serial@44e09000
    stdout=serial@44e09000
    update_to_fit=setenv loadaddr ${fit_loadaddr}; setenv bootfile ${fit_bootfile}
    usbargs=setenv bootargs console=${console} ${optargs} root=${usbroot} rootfstype=${usbrootfstype}
    usbboot=setenv devnum ${usbdev}; setenv devtype usb; usb start ${usbdev}; if usb dev ${usbdev}; then if run loadbootenv; then echo Loaded environment from ${bootenv};run importbootenv;fi;if test -n $uenvcmd; then echo Running uenvcmd ...;run uenvcmd;fi;if run loadimage; then run loadfdt; echo Booting from usb ${usbdev}...; run usbargs;bootz ${loadaddr} - ${fdtaddr}; fi;fi
    usbdev=0
    usbnet_devaddr=30:45:11:b1:ef:b3
    usbroot=/dev/sda2 rw
    usbrootfstype=ext4 rootwait
    vendor=abc
    ver=U-Boot 2017.01 (Mar 03 2022 - 15:42:54 +0530)
    
    Environment size: 5425/65532 bytes
    
    

  • Hi Kiran,
    It is very good to know you were able to probe and read/write to SPI flash on your board.
    Some checkpoints:
    1. There's an earlier e2e on SPI flash/boot on AM335x GP EVM for your reference:
    e2e.ti.com/.../1012843
    2. In AM335x u-boot build for SPI boot, there's an additional step at the end of SPL/u-boot build as listed below:
    "cmd_MLO.byteswap := ./tools/mkimage -T omapimage -n byteswap -a 0x402F0400 -d spl/u-boot-spl.bin MLO.byteswap >/dev/null"
    This step "bytesswap"s MLO to MLO.byteswap, where MLO.bytesswap is the one to be flashed to SPI.
    You may want to check if "bytesswap" is needed for your setup.
    3. From my earlier reply,
    "Also in order to boot from SPI flash out of HW reset, please refer to AM43xx TRM 5.2.6.6 SPI, especially on Table 5-34. Pins Used for SPI Boot."
    Best,
    -Hong

  • Hi,

       After doing changes here 

    In the file config.mk in uboot-->
    ifeq ($(CONFIG_AM43XX),y)
    ALL-y += MLO.byteswap

    I was able to generate MLO.byteswap

    I tried copying with the name u-boot.img as well as with name u-boot_spi in the SPI Flash, still there was no SPI Flash booting observed.

    If MLO.byteswap has to be generated by following this command only -- 
    "cmd_MLO.byteswap := ./tools/mkimage -T omapimage -n byteswap -a 0x402F0400 -d spl/u-boot-spl.bin MLO.byteswap >/dev/null"

    then please tell me where exactly do I need to make changes for this.

    As from the H/W boot pin perspective the pins are configured to boot from SPI Flash as first preference only.

    Please help.

    Thx,

    Kiran.

  • Hi Kiran,
    1. On AM335x SPI boot, this step is necessary to "byteswap" spl/u-boot-spl.bin to MLO.byteswap.
    "cmd_MLO.byteswap := ./tools/mkimage -T omapimage -n byteswap -a 0x402F0400 -d spl/u-boot-spl.bin MLO.byteswap >/dev/null"
    after conversion, "MLO.byteswap" needs to be flashed to SPI flash on AM335x GP EVM to enable boot from SPI.
    2. In addition to SYSBOOT pin configuration to include SPI as one of boot modes, SPI pin needs to be connected according to
    AM43xx TRM 5.2.6.6 SPI, especially on Table 5-34. Pins Used for SPI Boot
    Best,
    -Hong

  • Hi,

    I generated MLO.byteswap as suggested by you & flashed both MLO.byteswap & u-boot.img to SPI Flash.

    I have verified the pin configurations as per the Table suggested by you and they are correctly set to boot from SPI Flash.

    Still the board is not booting from SPI Flash.

    Please suggest if anything else I need to try.

    Thx,

    Kiran.

  • Hi Kiran,
    Do we have JTAG access on your board?
    If yes, can we try "attaching" JTAG to your board booting from SPI to pinpoint to which point code is running up to?
    where "attaching" means attach/connect JTAG without target reset.
    Let's use JTAG debugger to find out if SPL starts to run on your board.
    a). if yes, SPL needs to be debugged further to see where lock-up is.
    b). if no, check SYSBOOT[] latched in CM CTRL_STS register @0x44E10040 to see if it is matching SYSBOOT pin configured on your board.
    Additionally bootrom boot progress can be checked via reading trace vector as described in "5.2.3.2.5 Tracing Data" of the TRM.
    Best,
    -Hong

  • Hi Hong,

    As of now JTAG is not feasible option. Can you please guide me on how to verify  CM CTRL_STS register @0x44E10040 in s/w? From schematic, I have already told you that PIN configuration is ok.

    Also, can you please provide steps on how trace vector described in  "5.2.3.2.5 Tracing Data" of the TRM can be utilized for resolving this issue. This apart is there any way via configuration to get debug logs from SPL?

    Thx,

    Kiran.

  • Hi Kiran,


    1. I'm attaching Lauterbach T32 JTAG debugger screenshot showing SPL entry code, where onchip bootrom copied SPL from SPI to onchip SRAM @402F0400. which is captured on AM335x GP EVM booting from SPI flash.

    2. Also in the attached screenshot, CM CTRL_STS register @0x44E10040=0x00400397 => SYSBOOT[4:0]=0x97 => Boot order MMC0 SPI0 UART0 USB0 on AM335x.

    3. Onchip bootrom tracing vector in AM437x TRM:
    - In "5.2.3.2.5 Tracing Data"
    This area contains trace vectors reflecting the execution path of the public boot. Section 5.2.12, Tracing, describes the different trace vectors and lists all the possible trace codes.
    Table 5-6. Tracing Data => tracing vector address
    - In "5.2.12 Tracing"
    Tracing in the Public ROM Code includes five 32-bit vectors for which each bit corresponds to a particular “way point” in the ROM Code execution sequence (see Table 5-6). Tracing vectors are initialized at the very beginning of the startup phase and updated all along the boot process

    Table 5-65. Tracing Vectors lists bits relevant on SPI booting flow:
    3 6 Memory Boot Memory booting device SPI
    4 18 Memory Boot – SPI SPI configuration completed
    4 19 Memory Boot – SPI SPI Read Initialized

    Is there any booting log from serial terminal from SPI booting?
    If yes, it is possible to add MMRs read in SPL/u-boot code to check boot flow progress... as being done from JTAG debugger.
    If not, it is bit difficult to debug w/o JTAG debugger.

    Best,
    -Hong

  • Hi Hong,

    It seems you explained the role of Trace Vector.

    Can you please explain how to use it practically, like where do I need to do modifications in config/source code to use the Trace Vectors?

    Also, I want to know if UART logs can be availed in SPL?

    Can you please guide me on how to verify  CM CTRL_STS register @0x44E10040 in s/w without JTAG?

    Thx,

    Kiran.

  • Hi Kiran,
    "Is there any booting log from serial terminal from SPI booting?" in my last reply.
    If yes, one option is enabling "Setup early (debug) UART" as described in U-Boot Board Port
    software-dl.ti.com/.../U-Boot.html

    There're debugging tips in
    software-dl.ti.com/.../U-Boot.html
    where JTAG debugger is the first choice, or adding printf() to dump the relevnt MMRs, for example, CM CTRL_STS, rom trace vector...

    Best,
    -Hong

  • Hi,

    I followed setting up early debug UART, however the board doesn't boot at all and seems in hanged state after running this s/w.

    What could be possible reason for this? As I need something to understand why SPL/Uboot don't start running even after flashing them on SPI Flash chip.

    Thx,

    Kiran.

  • Hi Kiran,


    We'll have to look at bootrom activity on SPI after Power-On-Reset (POR), starting from AM43x TRM 5.2.6.6 SPI.
    "Also in order to boot from SPI flash out of HW reset, please refer to AM43xx TRM 5.2.6.6 SPI, especially on Table 5-34. Pins Used for SPI Boot."
    For example, do we see any SPI bus activity after POR?


    JTAG would be useful for your case as we discussed earlier:

    If yes, can we try "attaching" JTAG to your board booting from SPI to pinpoint to which point code is running up to?
    where "attaching" means attach/connect JTAG without target reset.
    Let's use JTAG debugger to find out if SPL starts to run on your board.
    a). if yes, SPL needs to be debugged further to see where lock-up is.
    b). if no, check SYSBOOT[] latched in CM CTRL_STS register @0x44E10040 to see if it is matching SYSBOOT pin configured on your board.
    Additionally bootrom boot progress can be checked via reading trace vector as described in "5.2.3.2.5 Tracing Data" of the TRM.

    Best,

    -Hong

  • Hi Hong,

    If I were to arrange JTAG then please provide steps for debugging the SPL/U-boot code.

    Now I am using Ubuntu VM for development.

    The JTAG that I will be trying with is Segger.

    I am not using any development IDE, please suggest if it's required for this activity.

    Also just asking whether you had gone through the configuration that I had shared earlier and could see if any critical parameter is missing which may be impacting the boot-up.

    Thx,

    Kiran.

  • Hi Kiran,
    Yes, Having JTAG accessible would be helpful to pinpoint to which point code is running up to.
    I'm regular user of Lauterbach T32 JTAG debugger, but any JTAG debugger would work.
    Here is an example on using CCS JTAG debugger
    software-dl.ti.com/.../Apps-SPL-Debug.html
    Best,
    -Hong

  • Hi Hong,

    I arranged XDS110 JTAG and followed the above link shared by you for debugging SPL code. However there seems some issue when attempting the Debug.

    CLI:

    ubuntu@ubuntu2004:~/ti/ccs_base/common/uscif/xds110$ ./xdsdfu -e

    USB Device Firmware Upgrade Utility
    Copyright (c) 2008-2019 Texas Instruments Incorporated. All rights reserved.

    Scanning USB buses for supported XDS110 devices...


    <<<< Device 0 >>>>

    VID: 0x0451 PID: 0xbef3
    Device Name: XDS110 Probe with CMSIS-DAP
    Version: 3.0.0.19
    Manufacturer: Texas Instruments
    Serial Num: 00001234
    Mode: Runtime
    Configuration: Standard

    Found 1 device.
    ubuntu@ubuntu2004:~/ti/ccs_base/common/uscif/xds110$

    In CCS:

    JTAG Test Connection O/P:

    [Start: Texas Instruments XDS110 USB Debug Probe_0]

    Execute the command:

    %ccs_base%/common/uscif/dbgjtag -f %boarddatafile% -rv -o -S integrity

    [Result]


    -----[Print the board config pathname(s)]------------------------------------

    /home/ubuntu/.ti/ccs1110/0/0/BrdDat/testBoard.dat

    -----[Print the reset-command software log-file]-----------------------------

    This utility has selected a 100- or 510-class product.
    This utility will load the adapter 'libjioxds110.so'.
    The library build date was 'Dec 8 2021'.
    The library build time was '11:12:50'.
    The library package version is '9.6.0.00172'.
    The library component version is '35.35.0.0'.
    The controller does not use a programmable FPGA.
    The controller has a version number of '5' (0x00000005).
    The controller has an insertion length of '0' (0x00000000).
    This utility will attempt to reset the controller.
    This utility has successfully reset the controller.

    -----[Print the reset-command hardware log-file]-----------------------------

    The scan-path will be reset by toggling the JTAG TRST signal.
    The controller is the XDS110 with USB interface.
    The link from controller to target is direct (without cable).
    The software is configured for XDS110 features.
    The controller cannot monitor the value on the EMU[0] pin.
    The controller cannot monitor the value on the EMU[1] pin.
    The controller cannot control the timing on output pins.
    The controller cannot control the timing on input pins.
    The scan-path link-delay has been set to exactly '0' (0x0000).

    -----[Perform the Integrity scan-test on the JTAG IR]------------------------

    This test will use blocks of 64 32-bit words.
    This test will be applied just once.

    Do a test using 0xFFFFFFFF.
    Scan tests: 1, skipped: 0, failed: 0
    Do a test using 0x00000000.
    Scan tests: 2, skipped: 0, failed: 0
    Do a test using 0xFE03E0E2.
    Scan tests: 3, skipped: 0, failed: 0
    Do a test using 0x01FC1F1D.
    Scan tests: 4, skipped: 0, failed: 0
    Do a test using 0x5533CCAA.
    Scan tests: 5, skipped: 0, failed: 0
    Do a test using 0xAACC3355.
    Scan tests: 6, skipped: 0, failed: 0
    All of the values were scanned correctly.

    The JTAG IR Integrity scan-test has succeeded.

    -----[Perform the Integrity scan-test on the JTAG DR]------------------------

    This test will use blocks of 64 32-bit words.
    This test will be applied just once.

    Do a test using 0xFFFFFFFF.
    Scan tests: 1, skipped: 0, failed: 0
    Do a test using 0x00000000.
    Scan tests: 2, skipped: 0, failed: 0
    Do a test using 0xFE03E0E2.
    Scan tests: 3, skipped: 0, failed: 0
    Do a test using 0x01FC1F1D.
    Scan tests: 4, skipped: 0, failed: 0
    Do a test using 0x5533CCAA.
    Scan tests: 5, skipped: 0, failed: 0
    Do a test using 0xAACC3355.
    Scan tests: 6, skipped: 0, failed: 0
    All of the values were scanned correctly.

    The JTAG DR Integrity scan-test has succeeded.

    [End: Texas Instruments XDS110 USB Debug Probe_0]

    When I follow the Step to Connect Target the console gives below o/p;

    IcePick_D_0: Error connecting to the target: (Error -261 @ 0x0) Invalid response was received from the XDS110. (Emulation package 9.6.0.00172)

    I have tired with different JTAG frequency options from 100kHz to 5.5MHz still the issue persists.

    Please help.

    Thx,

    Kiran More.

  • Hi Kiran,

    I'm looping in my colleague on CCS to help on CCS JTAG setup...

    Best,

    -Hong

  • Hi,

    Awaiting your colleagues reply.

    Also, I have gone thorough previous threads on this issue, but couldn't find something that fixes this issue.

    Thx,

    Kiran More.

  • Hi Kiran,

    IcePick_D_0: Error connecting to the target: (Error -261 @ 0x0) Invalid response was received from the XDS110. (Emulation package 9.6.0.00172)

    This is a generic error where the XDS110 lost connection with the debugger (CCS). The reasons can vary. Some more details can be found in the link below:

    https://software-dl.ti.com/ccs/esd/documents/ccs_debugging_jtag_connectivity_issues.html#invalid-response-was-received-from-the-xds110

    I did try connecting to my AM437x IDK via XDS110 using CCS 11.10 ruuning in my Ubuntu 20.04 vm and it was successful. Hence that setup should be fine and the issue is something specific to your environment. Are you also connected to the UART of the XDS110?

  • Hi Hong/Ki,

    I was able to resolve usb connection issue after adding VBox extension pack and selected USB 2.0 option instead of USB 1.1 in USB settings.

    Now when I load symbol file uboot-spl and try to connect to target I get this screen and even on single stepping stays there only.

    Break at address "0xc01165c8" with no debug information available, or outside of program code.

    Please help.

    Also, tell me if we can have a live discussion on MS Teams and find a solution. I would be available between 9 am to 9 pm IST if you are ok.

    Thx,

    Kiran.

  • I was able to resolve usb connection issue after adding VBox extension pack and selected USB 2.0 option instead of USB 1.1 in USB settings.

    Thnaks for the update on this. I have USB 2.0 enabled in my VBox environment.

    Break at address "0xc01165c8" with no debug information available, or outside of program code.

    There is no debug symbol information associated with that address.

    https://software-dl.ti.com/ccs/esd/documents/users_guide/ccs_debug-main.html#advanced-debugging-topics

    Otherwise I will not be able to provide much more insight as I am not too familiar with uboot debug. I will defer to Hong for further insight.

    Thanks

    ki

  • Thanks Ki,

    Hong please provide your inputs here.

    Thx,

    Kiran.

  • Hi Kiran,
    "PC: 0xc01165c8" seems Linux starts running...
    Can we run loading SPL symbol first on a working case?
    1. boot your board from any working boot media
    2. stop @u-boot prompt
    3. attach JTAG to the running board non-intrusively or NO HW RESET (don't run any GEL script...)
    4. break, and review disassembly, PC value, single stepping...
    5. set a hardware breakpoint @402F0400, and re-run
    6. issue "reset" cmd @u-boot prompt
    7. break @402F0400?
    8. if yes, load SPL symbol file "u-boot-spl"...
    Best,
    -Hong

  • Hi Hong,

    I followed above steps with breakpoint at 0x402F4000 as it's AM4378 processor. I loaded the symbol file for u-boot-spl.

    As the debug is very slow and crashed multiple times, I wasn't able to find something specific yet. 

    By the way Sysboot settings are correct with first preference to Booting from SPI Flash.

    Please share if you have any further inputs in this regards.

    Thx,

    Kiran.

     

  • Hi Kiran,
    I was thinking to first have a stable working JTAG environment on your board.
    I recalled you were able to boot to u-boot from a boot media other than SPI on your board.
    If yes, can we try the steps 1 to 8 in my last reply?
    You're right 0x402F4000 is the SPL entry point from internal onchip SRAM
    You'd see from JTAG debugger window SPL source code matching disassembly code when the HW breakpoint @0x402F4000 is hit at step #8.
    Let me know if you observe anything in-correct in any of step 1 to 8.
    Best,
    -Hong

  • Hi Hong,

    I have set JTAG speed to 500kHz and now it seems stable, although it's quiet slow.

    When I debug and set breakpoint's it intermittently states that it's not able to set the breakpoint and gives AET error.

    Also, while debugging the next instruction is set to some part of code (consistently) away from the logical flow.

    For ex. in disassembly at bl _main it jumps to some function directly in between.

    Also, found this spl_boot_list[5] = {7,0,0,0,0}. Is this ok?

      

    All the above steps I have performed after inserting SD card as it boots from SD card.

    When I tried to debug without SD card nothing happens it just doesn't proceed, please tell if this can't be done.

    It's been a long time I am trying to resolve this issue. Please tell me if we could do a live debug session on Monday? This would help me finding the solution.

    Thx,

    Kiran. 

      

  • Hi Kiran,
    I'm working with TI field team to help setting up a webex session...
    Best,
    -Hong

  • Hi Kiran,
    Here is a quick recap on what we discussed in the live webex JTAG debugging session this morning:
    - There seems an issue from SPI boot on your board either
    1). SPL copy from external SPI to onchip SRAM by bootrom not happening as expected, or
    2). SPL code running from onchip SRAM fails...
    - Let's add a self-spin loop at the SPL entry code, and re-run test to help us narrowing down to 1) or 2).
    - For your reference, I listed below manually modifying spl.bin to self-spin @SPL entry:
    “402F0400 EA00000F b 0x402F0444”
    “402F0400 EAFFFFFE b 0x402F0400”
    I was testing SPI boot on AM335x, you'll need to use 0x402F4000 for AM43xx.
    Best,
    -Hong

  • Hi Hong,

    As suggested by you, I had setup a forever loop in early_system_init(void) function in board.c file & tested below scenarios:-

    1. With SD card: Control comes to the forever loop in above function when board is reset and stays here.

    2. Without SD card: Control does not come to the above forever loop, instead it seems to be in Processor ROM code.

      

    Please find below sysboot settings which looks ok even when no SD card is inserted.

    Please let me know if anything else I can try or we may plan for another live debug session.

    Thx,

    Kiran.

  • Hi Kiran,
    The screenshot #2 indicates code is in bootrom memory map or "1). SPL copy from external SPI to onchip SRAM by bootrom not happening as expected".
    Let's use JTAG capture bootrom tracing vector to see any indicative info on bootrom execution path...
    The tracing vector details are in the TRM:
    - "5.2.3.2.5 Tracing Data": tracing vector address
    - "5.2.12 Tracing": tracing vector decoding
    Best,
    -Hong

  • Hi Hong,

    Please provide steps on how to access the Trace Vectors in CCS. I searched on TI website but couldn't get any info.

    Code Composer Studio
    Version: 11.1.0.00011

    OS: Linux, v.5.13.0-30-generic, x86_64 / gtk 3.24.20
    Java version: 11.0.13

    Also, I tried to follow CCS/AM3352: Unabled to access to Tracing vectors - Code Composer Studio forum - Code Composer StudioTm︎ - TI E2E support forums

    However they are using  am335x-boot.dss to complete the process. So I think, I would need a similar file like am437x-boot.dss which I don't have.

    Please suggest how can I obtain the Trace Vector Info required for further debugging.

    Thx,

    Kiran.

  • Hi Kiran,
    On how to read the trace vectors with JTAG debugger:
    Halt running target, i.e., at screen shot #2 in your last reply, then just use JTAG to read the trace vector #1 to #5 as addressed in "5.2.3.2.5 Tracing Data" in the TRM. I'm attaching a sample trace vector log I captured with T32 JTAG debugger on AM437x EVM with SYSBOOT[4:0]=00001 for MMC boot with SD card inserted for your reference.

    ===================================================
    CONTROL_STATUS: 0x400301
    SYSBOOT[4:0] = 00001
    >>>> Trace vector in hex format
    Trace Vector 1 [0x40338E40] = 0x10009E
    Trace Vector 2 [0x40338E44] = 0x11000
    Trace Vector 3 [0x40338E48] = 0x10
    Trace Vector 4 [0x40338E4C] = 0x2001E00
    Trace Vector 5 [0x40338E50] = 0x0
    >>>> Trace vector binary format
    Trace Vector 1 [0x40338E40] = 00000000 00010000 00000000 10011110
    Trace Vector 2 [0x40338E44] = 00000000 00000001 00010000 00000000
    Trace Vector 3 [0x40338E48] = 00000000 00000000 00000000 00010000
    Trace Vector 4 [0x40338E4C] = 00000010 00000000 00011110 00000000
    Trace Vector 5 [0x40338E50] = 00000000 00000000 00000000 00000000
    ===================================================

    a) You may want to capture the trace vector logs for two cases:
    - SYSBOOT[4:0]=00010 with SD card inserted
    - SYSBOOT[4:0]=00010 without SD card inserted (or SPI boot mode)
    b) and then check the trace vector logs in reference to "5.2.12 Tracing" to see anything abnormal...
    Best,
    -Hong

  • Hi Hong,

    I tried capturing Trace Vectors in CCS.

    When I applied the range of Trace Vector address nothing is captured in the log.

    When I applied the range for all Trace Vector address then log has some data.

    Data is as per this file when trying to boot from SPI Flash

    In both cases i.e. with & without SD Card no Trace Vector data is available for following address.

    40338E40h 4 Current tracing vector, word 1
    40338E44h 4 Current tracing vector, word 2
    40338E48h 4 Current tracing vector, word 3
    40338E4Ch 4 Current tracing vector, word 4
    40338E50h 4 Current tracing vector, word 5

    Please help.

    Also, tell me if we can have a live debug session if you think so.

    Thx,

    Kiran More.

  • Hi Kiran,
    Let me clarify. "bootrom trace vectors" as described in the TRM or as shown in the sample log in my last reply, are stored/updated in onchip SRAM memory range by bootorm. So any basic memory read/dump/view cmd in any JTAG debugger should work.
    "bootrom trace vectors" are NOT "JTAG trace data" via either ETB or ETM supported by JTAG debugger as shown in the screen shots in your last reply.
    Best,
    -Hong

  • Hi Hong,

    I was able to capture the Trace Vector values:

    1. While booting from SPI Flash

    2. While booting from SD Card

    Address SPI Flash Boot SD Card Boot
    0x40338E40 0x0000807E 0x0010009E
    0x40338E44 0x00003010 0x00013000
    0x40338E48 0x03000050 0x02000050
    0x40338E4C 0x008D0000 0x018D1E00
    0x40338E50 0

    0

    Please suggest next step forward.

    Thx,

    Kiran.

  • Hi Hong,

    Your inputs would be really helpful here. 

    Thx,

    Kiran.

  • Hi Kiran,
    I decoded your trace vector from SPI boot to bootrom boot sequence... based on Table 5-65. Tracing Vectors in the TRM.
    I uploaded the decoded trace vector in attachment for your reference. There's no abnormal from the decoded bootrom boot execution according to the boot order selected based on SYSBOOT[4:0] = 00010 => SPI USB_MS MMC0 USB_CL
    For example, the following SPI related bootrom functions are executed:
    - Memory booting device SPI
    - SPI configuration completed
    - SPI Read Initialized
    Can we refer to my reply on e2e.ti.com/.../4050939
    to move "self-spin" to the entry of SPL code to narrow down 1) or 2) 

    1). SPL copy from external SPI to onchip SRAM by bootrom not happening as expected, or
    2). SPL code running from onchip SRAM fails...
    - Let's add a self-spin loop at the SPL entry code, and re-run test to help us narrowing down to 1) or 2).
    - For your reference, I listed below manually modifying spl.bin to self-spin @SPL entry:
    “402F0400 EA00000F b 0x402F0444”
    “402F0400 EAFFFFFE b 0x402F0400”
    I was testing SPI boot on AM335x, you'll need to use 0x402F4000 for AM43xx.

    Best,

    -Hong

  • attaching the decoded trace vector from your SPI boot.

    trace_00010_spi_note.txt
    >>>> Trace vector in hex format
    Trace Vector 1 [0x40338E40] = 0x0000807E					
    Trace Vector 2 [0x40338E44] = 0x00003010
    Trace Vector 3 [0x40338E48] = 0x03000050
    Trace Vector 4 [0x40338E4C] = 0x008D0000		
    Trace Vector 5 [0x40338E50] = 0x0
    
    >>>> Trace vector binary format
    Trace Vector 1 [0x40338E40] = 00000000 00000000 10000000 01111110		
    Trace Vector 2 [0x40338E44] = 00000000 00000000 00110000 00010000
    Trace Vector 3 [0x40338E48] = 00000011 00000000 00000000 01010000
    Trace Vector 4 [0x40338E4C] = 00000000 10001101 00000000 00000000		
    Trace Vector 5 [0x40338E50] = 00000000 00000000 00000000 00000000
    ===================================================
    SYSBOOT[4:0] = 00010 => SPI USB_MS MMC0 USB_CL
    
    >>>> Trace Vector 1 [0x40338E40]
    Entered main function
    Running after the cold reset
    Main booting routine entered
    Memory booting started
    Peripheral booting started
    Reserved					
    Peripheral booting failed	
    
    >>>> Trace Vector 2 [0x40338E44]
    USB connect
    Memory booting trial 0
    Memory booting trial 1
    
    >>>> Trace Vector 3 [0x40338E48] 
    Memory booting device MMCSD0
    Memory booting device SPI
    Peripheral booting device NULL
    Reserved
    
    >>>> Trace Vector 4 [0x40338E4C]
    Device protocol supported
    
    SPI configuration completed
    SPI Read Initialized
    Reserved					
    
    >>>> Trace Vector 5 [0x40338E50]

  • Hi,

    In the board.c file, inside the function , I added forever loop.


    #ifdef CONFIG_SPL_BUILD
    void board_init_f(ulong dummy)
    {
    //Kiran
    while(1);
    early_system_init();
    board_early_init_f();
    sdram_init();
    /* dram_init must store complete ramsize in gd->ram_size */
    gd->ram_size = get_ram_size(
    (void *)CONFIG_SYS_SDRAM_BASE,
    CONFIG_MAX_RAM_BANK_SIZE);
    }

    1. When SD Card is inserted the code gets stuck at above while loop.

    2. When trying to boot from SPI Flash the control doesn't come at the point of above while loop, instead it stays in ROM code.

    Does this mean that copying of SPI Flash code to RAM is not happening?

    Also, do these USB bits from Trace Vector signify anything?

    Trace Vector Reg2:

    USB Reserved
    USB_CL session valid USB_CL VBUS valid USB_CL configured state USB Connect Reserved Reserved Reserved Reserved
    7 6 5 4 3 2 1 0
    0 0 0 1 0 0 0 0

    Trace Vector Reg4:

    Memory Boot-SPI Memory Boot-SPI Memory Boot-USB_MS Memory Boot-USB_MS
    SPI Read Initialized SPI configuration completed Mass Storage Class enumeration completed Device protocol supported
    19 18 17 16
    1 1 0 1

    Thx,

    Kiran.