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.

AM5718: AM571x DDR memory map of Linux SDK.

Part Number: AM5718
Other Parts Discussed in Thread: DRA722, AM5729

Hi,

I have a question about memory map of DDR.

DDR start address is 0x80000000 and kernel image is loaded at 0x82000000 in boot process.

Can I change the load address to any address with the DDR space?

I can't information of DDR memory map of boot process in the AM571x Linux SDK as below.

+add 

Please answer.

Can I change the load address to any address with the DDR space?

I found below declaration in ti_armv7_common.h 

#define CONFIG_SYS_LOAD_ADDR 0x82000000

#define DEFAULT_LINUX_BOOT_ENV \
"loadaddr=0x82000000\0" \
"kernel_addr_r=0x82000000\0" \
"fdtaddr=0x88000000\0" \
"fdt_addr_r=0x88000000\0" \
"rdaddr=0x88080000\0" \
"ramdisk_addr_r=0x88080000\0" \
"scriptaddr=0x80000000\0" \
"pxefile_addr_r=0x80100000\0" \
"bootm_size=0x10000000\0" \
"boot_fdt=try\0"

Best regards.

  • Please answer.

    Can I change the load address to any address with the DDR space?

    I found below declaration in ti_armv7_common.h 

    #define CONFIG_SYS_LOAD_ADDR 0x82000000

    #define DEFAULT_LINUX_BOOT_ENV \
    "loadaddr=0x82000000\0" \
    "kernel_addr_r=0x82000000\0" \
    "fdtaddr=0x88000000\0" \
    "fdt_addr_r=0x88000000\0" \
    "rdaddr=0x88080000\0" \
    "ramdisk_addr_r=0x88080000\0" \
    "scriptaddr=0x80000000\0" \
    "pxefile_addr_r=0x80100000\0" \
    "bootm_size=0x10000000\0" \
    "boot_fdt=try\0"

  • Hi,

    You should be able to change as long as you ensure that you are not over writing anything with other.

    At u-boot prompt you use printenv command to get all the addresses.

    Best Regards,
    Keerthy

  • Hi, 

    Below log is my printenv log. 

    But I can't find. this log shows DEFAULT_LINUX_BOOT_ENV address in the previous post

    I want to know infromation are mapped between 0x8000 0000  and 0x8200 0000 (kernel load address)

    U-Boot SPL 2019.01-g333c3e72d3 (Apr 20 2020 - 04:15:00 +0000)
    DRA722-GP ES2.0
    no pinctrl state for default mode
    ** Unable to read file dra7-ipu1-fw.xem4 **
    Firmware loading failed
    Trying to boot from MMC1
    no pinctrl state for default mode
    Loading Environment from FAT... OK


    U-Boot 2019.01-g333c3e72d3 (Apr 20 2020 - 04:15:00 +0000)

    CPU : DRA722-GP ES2.0
    Model: TI AM5718 IDK
    Board: AM571x IDK REV 1.3B
    DRAM: 1 GiB
    MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1
    Loading Environment from FAT... OK
    Net: eth0: ethernet@48484000
    Hit any key to stop autoboot: 2 0
    => printenv
    arch=arm
    args_mmc=run finduuid;setenv bootargs console=${console} ${optargs} root=PARTUUID=${uuid} rw rootfstype=${mmcrootfstype}
    baudrate=115200
    board=am57xx
    board_name=am571x_idk
    board_rev=1.3B
    board_serial=48174P520056
    boot_fdt=try
    boot_fit=0
    bootargs=androidboot.serialno=${serial#} console=ttyS2,115200 androidboot.console=ttyS2 androidboot.hardware=beagle_x15board
    bootcmd=if test ${dofastboot} -eq 1; then echo Boot fastboot requested, resetting dofastboot ...;setenv dofastboot 0; saveenv;echo Booting into fastboot ...; fastboot 1; fi;if test ${boot_fit} -eq 1; then run update_to_fit;fi;run findfdt; run envboot; run mmcboot;run emmc_linux_boot; run emmc_android_boot; run setconsole;
    bootdelay=2
    bootdir=/boot
    bootenvfile=uEnv.txt
    bootfile=zImage
    bootm_size=0x10000000
    bootpart=0:2
    bootscript=echo Running bootscript from mmc${mmcdev} ...; source ${loadaddr}
    console=ttyS2,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 0x200;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 0x200;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=MLO raw 0x0 0x040000;u-boot.img raw 0x040000 0x0100000;u-boot-spl-os raw 0x140000 0x080000;u-boot-env raw 0x1C0000 0x010000;u-boot-env.backup raw 0x1D0000 0x010000;kernel raw 0x1E0000 0x800000
    dfu_alt_info_ram=kernel ram 0x80200000 0x4000000;fdt ram 0x80f80000 0x80000;ramdisk ram 0x81000000 0x4000000
    dfu_bufsiz=0x10000
    dofastboot=0
    emmc_android_boot=echo Trying to boot Android from eMMC ...; run update_to_fit; setenv eval_bootargs setenv bootargs $bootargs; run eval_bootargs; setenv mmcdev 1; setenv machid fe6; mmc dev $mmcdev; mmc rescan; part start mmc ${mmcdev} boot boot_start; part size mmc ${mmcdev} boot boot_size; mmc read ${loadaddr} ${boot_start} ${boot_size}; bootm ${loadaddr}#${fdtfile};
    emmc_linux_boot=echo Trying to boot Linux from eMMC ...; setenv mmcdev 1; setenv bootpart 1:2; setenv mmcroot /dev/mmcblk0p2 rw; run mmcboot;
    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;
    eth2addr=70:ff:76:1c:19:65
    eth3addr=70:ff:76:1c:19:66
    eth4addr=70:ff:76:1c:19:67
    eth5addr=70:ff:76:1c:19:68
    eth6addr=70:ff:76:1c:19:69
    eth7addr=70:ff:76:1c:19:6a
    ethaddr=9c:1d:58:57:e6:08
    fastboot.board_rev=1.3B
    fastboot.cpu=DRA722
    fastboot.secure=GP
    fdt_addr_r=0x88000000
    fdtaddr=0x88000000
    fdtcontroladdr=bdf23928
    findfdt=if test $board_name = omap5_uevm; then setenv fdtfile omap5-uevm.dtb; fi; if test $board_name = dra7xx; then setenv fdtfile dra7-evm.dtb; fi;if test $board_name = dra72x-revc; then setenv fdtfile dra72-evm-revc.dtb; fi;if test $board_name = dra72x; then setenv fdtfile dra72-evm.dtb; fi;if test $board_name = dra71x && test $boot_nand = 1; then setenv fdtfile dra71-evm-nand.dtb; fi;if test $board_name = dra71x && test $boot_nand = 0; then setenv fdtfile dra71-evm.dtb; fi;if test $board_name = dra76x_acd; then setenv fdtfile dra76-evm.dtb; fi;if test $board_name = beagle_x15; then setenv fdtfile am57xx-beagle-x15.dtb; fi;if test $board_name = beagle_x15_revb1; then setenv fdtfile am57xx-beagle-x15-revb1.dtb; fi;if test $board_name = beagle_x15_revc; then setenv fdtfile am57xx-beagle-x15-revc.dtb; fi;if test $board_name = am5729_beagleboneai; then setenv fdtfile am5729-beagleboneai.dtb; fi;if test $board_name = am572x_idk && test $idk_lcd = no; then setenv fdtfile am572x-idk.dtb; fi;if test $board_name = am572x_idk && test $idk_lcd = osd101t2045; then setenv fdtfile am572x-idk-lcd-osd101t2045.dtb; fi;if test $board_name = am572x_idk && test $idk_lcd = osd101t2587; then setenv fdtfile am572x-idk-lcd-osd101t2587.dtb; fi;if test $board_name = am574x_idk && test $idk_lcd = no; then setenv fdtfile am574x-idk.dtb; fi;if test $board_name = am574x_idk && test $idk_lcd = osd101t2587; then setenv fdtfile am574x-idk-lcd-osd101t2587.dtb; fi;if test $board_name = am57xx_evm; then setenv fdtfile am57xx-evm.dtb; fi;if test $board_name = am57xx_evm_reva3; then setenv fdtfile am57xx-evm-reva3.dtb; fi;if test $board_name = am571x_idk && test $idk_lcd = no; then setenv fdtfile am571x-idk.dtb; fi;if test $board_name = am571x_idk && test $idk_lcd = osd101t2045; then setenv fdtfile am571x-idk-lcd-osd101t2045.dtb; fi;if test $board_name = am571x_idk && test $idk_lcd = osd101t2587; then setenv fdtfile am571x-idk-lcd-osd101t2587.dtb; fi;if test $fdtfile = undefined; then echo WARNING: Could not determine device tree to use; fi;
    finduuid=part uuid mmc ${bootpart} uuid
    fit_bootfile=fitImage
    fit_loadaddr=0x90000000
    gatewayip=10.113.76.1
    get_overlaystring=for overlay in $overlay_files;do;setenv overlaystring ${overlaystring}'#'${overlay};done;
    idk_lcd=osd101t2587
    importbootenv=echo Importing environment from mmc${mmcdev} ...; env import -t ${loadaddr} ${filesize}
    ipaddr=10.113.78.100
    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; run run_fit;
    loadimage=load ${devtype} ${bootpart} ${loadaddr} ${bootdir}/${bootfile}
    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}
    netmask=255.255.252.0
    nfsopts=nolock
    partitions=uuid_disk=${uuid_gpt_disk};name=bootloader,start=384K,size=1792K,uuid=${uuid_gpt_bootloader};name=rootfs,start=2688K,size=-,uuid=${uuid_gpt_rootfs}
    partitions_android=uuid_disk=${uuid_gpt_disk};name=xloader,start=128K,size=256K,uuid=${uuid_gpt_xloader};name=bootloader,size=2048K,uuid=${uuid_gpt_bootloader};name=uboot-env,start=2432K,size=256K,uuid=${uuid_gpt_reserved};name=misc,size=128K,uuid=${uuid_gpt_misc};name=recovery,size=40M,uuid=${uuid_gpt_recovery};name=boot,size=10M,uuid=${uuid_gpt_boot};name=system,size=1024M,uuid=${uuid_gpt_system};name=vendor,size=256M,uuid=${uuid_gpt_vendor};name=userdata,size=-,uuid=${uuid_gpt_userdata}
    pxefile_addr_r=0x80100000
    ramdisk_addr_r=0x88080000
    rdaddr=0x88080000
    rootpath=/export/rootfs
    run_fit=bootm ${fit_loadaddr}#${fdtfile}${overlaystring}
    scriptaddr=0x80000000
    serial#=0101100a60e80121
    serverip=10.113.78.90
    setconsole=if $board_name=am5729_beaglebonai;then setenv console ttyS0,115200; fi;fdtfile=undefined
    soc=omap5
    static_ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off
    stderr=serial@48020000
    stdin=serial@48020000
    stdout=serial@48020000
    update_to_fit=setenv loadaddr ${fit_loadaddr}; setenv bootfile ${fit_bootfile}
    usbtty=cdc_acm
    vendor=ti
    ver=U-Boot 2019.01-g333c3e72d3 (Apr 20 2020 - 04:15:00 +0000)
    vram=16M

    Environment size: 7898/131067 bytes

  • Hi SY Yoon,

    SPL/MLO Loads at 0x40300000 (Internal memory)
    U-boot.img at 0x80800000 (DDR)
    Linux DT gets loaded at fdtaddr=0x88000000
    Linux kernel image gets loaded at loadaddr=0x82000000

    There is no pre-existing document anywhere that gives a map.

    Hope this gives you all the necessary addresses of the key binaries in the boot flow.


    Best Regards,
    Keerthy