AM69: K3-AM69-SK: U-Boot: memory read fault at 0x9e780000

Part Number: AM69


Hi,

In U-boot I am getting a memory read error at address 0x9e780000.

I was wondering why since I don't see this set anywhere. Previous boards had "secure_tfa_ddr: tfa@9e780000" defined but not this one.

Thanks,

Michael

  • Hi Michael

    Can you help me below question.

    1. Which SDK you are using  ?
    2. Are you using SBL or SPL boot flow ?
    3. Are you seeing this issue on custom board or on AM69-SK board ?
    4. What is the use case for accessing 0x9e780000 address?

    Regards
    Diwakar

  • Hi Diwakar,

    Thanks for your response:

    Which SDK you are using  ?

    PROCESSOR-SDK-LINUX-AM69 11.00.10.01, I built tisdk-base-image in yocto-build as-is and it happens.

    Are you using SBL or SPL boot flow ?

    Whichever is default, I believe SPL.

    Are you seeing this issue on custom board or on AM69-SK board ?

    AM69-SK EVM board

    What is the use case for accessing 0x9e780000 address?

    I'm implementing a DDR memory test and found this area inaccessible, but not documented why. I also cannot access 0x9_0000_0000, (more than 2GB of 64bit-space).

    I want implement a way of excluding reserved addresses and so far have not found a way of knowing this memory is inaccessible without hard-coding. So I'm trying to get a grasp on the DDR memory and why I can't access some areas.

    Thanks,

    Michael

     

  • Hi Michael

    Can you please share the complete logs? Along with error you are seeing when performing memory test.

    Regards
    Diwakar

  • Hi Diwakar,

    This can be replicated doing a memory read from u-boot command line. This print is from an image built from 11.00.10.01 SDK in the yocto-build directory without any changes. I flashed tisdk-base-image-am69-sk.rootfs.wic.xz to an SD Card using BalenaEtcher.

    U-Boot SPL 2025.01-00410-g70667128cb5b (Apr 04 2025 - 18:20:14 +0000)
    SYSFW ABI: 4.0 (firmware rev 0x000b '11.0.9--v11.00.09+ (Fancy Rat)')
    Initialized 4 DRAM controllers
    SPL initial stack usage: 13456 bytes
    Trying to boot from MMC2
    Authentication passed
    Authentication passed
    Authentication passed
    Loading Environment from nowhere... OK
    Authentication passed
    Authentication passed
    Starting ATF on ARM64 core...
    
    NOTICE:  BL31: v2.12.0(release):11.00.09-dirty
    NOTICE:  BL31: Built : 12:35:58, Mar 24 2025
    I/TC:
    I/TC: OP-TEE version: 4.5.0-73-gef1ebdc23-dev (gcc version 13.3.0 (GCC)) #1 Tue Feb  4 11:33:18 UTC 2025 aarch64
    I/TC: WARNING: This OP-TEE configuration might be insecure!
    I/TC: WARNING: Please check https://optee.readthedocs.io/en/latest/architecture/porting_guidelines.html
    I/TC: Primary CPU initializing
    I/TC: GIC redistributor base address not provided
    I/TC: Assuming default GIC group status and modifier
    I/TC: SYSFW ABI: 4.0 (firmware rev 0x000b '11.0.9--v11.00.09+ (Fancy Rat)')
    I/TC: Activated SA2UL device
    I/TC: Enabled firewalls for SA2UL TRNG device
    I/TC: SA2UL TRNG initialized
    I/TC: SA2UL Drivers initialized
    I/TC: HUK Initialized
    I/TC: Primary CPU switching to normal world boot
    
    U-Boot SPL 2025.01-00410-g70667128cb5b (Apr 04 2025 - 18:20:14 +0000)
    SYSFW ABI: 4.0 (firmware rev 0x000b '11.0.9--v11.00.09+ (Fancy Rat)')
    Trying to boot from MMC2
    Authentication passed
    Authentication passed
    
    
    U-Boot 2025.01-00410-g70667128cb5b (Apr 04 2025 - 18:20:14 +0000)
    
    SoC:   J784S4 SR1.0 HS-FS
    Model: Texas Instruments AM69 SK
    DRAM:  2 GiB (total 32 GiB)
    cdns3_bind: unsupported dr_mode
    idle-statesCore:  123 devices, 32 uclasses, devicetree: separate
    Flash: 0 Bytes
    MMC:   mmc@4f80000: 0, mmc@4fb0000: 1
    Loading Environment from nowhere... OK
    In:    serial@2880000
    Out:   serial@2880000
    Err:   serial@2880000
    am65_cpsw_nuss ethernet@46000000: K3 CPSW: nuss_ver: 0x6BA02102 cpsw_ver: 0x6BA82102 ale_ver: 0x00293904 Ports:1
    Net:   eth0: ethernet@46000000port@1
    Hit any key to stop autoboot:  0
    => md.l 0x9e780000
    "Synchronous Abort" handler, esr 0x96000007, far 0x9e780000
    elr: 00000000808b41a8 lr : 00000000808b40f8 (reloc)
    elr: 00000000fff4e1a8 lr : 00000000fff4e0f8
    x0 : 0000000000000009 x1 : 00000000fde37368
    x2 : 00000000fffffffe x3 : 0000000000000020
    x4 : 0000000000000000 x5 : 00000000fde37360
    x6 : 0000000000000030 x7 : 00000000fde372b0
    x8 : 0000000000000010 x9 : 00000000ffffffd8
    x10: 000000000000000d x11: 0000000000000006
    x12: 00000000fde375d8 x13: 00000000fde37740
    x14: 0000000000000008 x15: 00000000fde37360
    x16: 00000000ffeb62ac x17: 0000000000000000
    x18: 00000000fde59e00 x19: 0000000000000004
    x20: 0000000000000004 x21: 0000000000000004
    x22: 000000009e780000 x23: 00000000fff971f5
    x24: 00000000fde37369 x25: 0000000000000000
    x26: 00000000fde37318 x27: 0000000000000008
    x28: 0000000000000004 x29: 00000000fde372b0
    
    Code: 2a0403f3 17ffffcb 7100129f 54000181 (b94002c3)
    Resetting CPU ...
    
    resetting ...
    

    EDIT: Also attaching the bdinfo which doesn't show this as reserved:

    => bdinfo
    boot_params = 0x0000000000000000
    DRAM bank   = 0x0000000000000000
    -> start    = 0x0000000080000000
    -> size     = 0x0000000080000000
    DRAM bank   = 0x0000000000000001
    -> start    = 0x0000000880000000
    -> size     = 0x0000000780000000
    flashstart  = 0x0000000000000000
    flashsize   = 0x0000000000000000
    flashoffset = 0x0000000000000000
    baudrate    = 115200 bps
    relocaddr   = 0x00000000ffe9a000
    reloc off   = 0x000000007f69a000
    Build       = 64-bit
    current eth = ethernet@46000000port@1
    ethaddr     = c0:d6:0a:dd:ee:49
    IP addr     = <NULL>
    fdt_blob    = 0x00000000fde37740
    lmb_dump_all:
     memory.count = 0x2
     memory[0]      [0x80000000-0xffffffff], 0x80000000 bytes, flags: none
     memory[1]      [0x880000000-0xfffffffff], 0x780000000 bytes, flags: none
     reserved.count = 0x4
     reserved[0]    [0x9e800000-0xabffffff], 0xd800000 bytes, flags: no-map
     reserved[1]    [0xfce34000-0xfce36fff], 0x3000 bytes, flags: no-notify, no-overwrite
     reserved[2]    [0xfce37730-0xffffffff], 0x31c88d0 bytes, flags: no-overwrite
     reserved[3]    [0x880000000-0xfffffffff], 0x780000000 bytes, flags: no-overwrite
    devicetree  = separate
    serial addr = 0x0000000002880000
     width      = 0x0000000000000000
     shift      = 0x0000000000000002
     offset     = 0x0000000000000000
     clock      = 0x0000000002dc6c00
    arch_number = 0x0000000000000000
    TLB addr    = 0x00000000ffff0000
    irq_sp      = 0x00000000fde37730
    sp start    = 0x00000000fde37730
    Early malloc usage: 2d88 / 8000
    

    Regards,

    Michael

  • Hello Michael,

    It's reproduced on the EVM. We will get back to you early next week. 

    Best Regards,

    Keerthy