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.

[参考译文] Linux/AM5708:减小 DDR 大小后内核挂起

Guru**** 2615655 points

Other Parts Discussed in Thread: AM5708

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/657013/linux-am5708-kernel-hangs-after-reducing-ddr-size

器件型号:AM5708

工具/软件:Linux

您好!

我有基于 AM5708的定制板、我已经发布了具有1GB RAM 和532Mhz DDR 频率的修订版 A。 现在、我已将 DDR 的大小从1GB 降低到512MB、所有其他组件都是相同的。 只需使用2个512芯片更改为2个256芯片即可更改 DDR。 根据 DDR 数据表和内核存储器的器件树节点、我更改了行大小和页大小以及 LISA 寄存器。 但是,当我给主板加电时,它会在 启动内核**时挂起

我已更改:

文件 arch/arm/boot/dts/am570x 中的 custom-board.dts

memory {
        device_type = "memory";
        reg = <0x0 0x80000000 0x0 0x40000000>; /* 1024 MB */
    };
And I tried to modify reg to "reg = <0x0 0x80000000 0x0 0x20000000>;"


在板级配置文件中,我更改了 DDR 的寄存器:

const 结构 EMIF_regs j6e_EMIF_2_regs_DDR3_532_MHz_1CS_DRA_ES1 ={


SDRAM_CONFIG_INIT = 0x61851AB2、

SDRAM_CONFIG = 0x61851AB2、

SDRAM_CONFIG2 = 0x00000000、

}; 

我尝试将.SDRAM_CONFIG_INIT 从"0x618522B2"修改为"0x61851AB2"、并将 SDRAM_CONFIG 从"0x618522B2"修改为"0x61851AB2" 

const 结构 DMM_LISA 映射_regs j6e_LISA 映射_4G_x_2_x_2 ={

.dm_lisa_map_0 = 0x0、

.dm_lisa_map_1 = 0x0、

.dm_lisa_map_2 = 0x0、

.dm_lisa_map_3 = 0x80500100、

.is_ma_present = 0x1

};

将.DMM_LISA_MAP_3从"0x80600100"修改为"0x80500100" 


 

U-Boot SPL EDGE
DRA722-GP ES2.0
尝试从 MMC1引导
U-Boot:CONFIG_SYS_MMCSD_FS_BOOT_PARTITION 1:u-boot.img
SPL:尝试从次级分区加载 u-boot.img!
读取 u-boot.img
读取 u-boot.img
读取 u-boot.img 读取 u-boot.img
读取 u-boot.img 读取 u-boot


2016.05-00333-ge1198ea-mis脏(2018年1月17日- 11:33:14 +0530)

CPU:DRA722-GP ES2.0
模型:TI AM5708边缘
板:AM570x 边缘修订版
启用看门狗
的 DRAM:512 mib
mmc:sdr104没有 pinctrl
ddr50没有 pinctrl
sdr50
没有 pinctrl sdr25
没有 pinctrl sdr12
没有 pinctrl HS200_1_8v
OMAP SD/mmc:0、SD/mmc:1
正在读取 uboot.env

**无法使用
默认环境读出"mmenv"

0 device not found
error:SCSI device not found

at drivers/block/disk-uclass.c:43/SCSI_init()
net:
warning: Ethernet@484000 using MAC address from ROM
eth0:Ethernet@48484000
U-Boot:loaded、undefined EEPROM reg value!!
内核:次要失败,从主内核引导!!
FS:从主 FS 引导!!
在2秒
内自动引导边缘# setenv boot_fit 0
边缘#引导
切换到分区#0,确定
mmc0是

在设备0上找到的当前设备 SD/MMC,正在读取 boot.scr
**无法读取文件 boot.scr **
读取 uEnv.txt
**无法读取文件 uEnv.txt **
切换到分区#0, 好
的、mmc0是
器件0上找到的当前器件 SD/MMC
读取 zImage
3738192字节在173ms (20.6 MIB/s)
读取 am570x 边缘。DTB
85212字节在10ms (8.1 MIB/s)内读取
内核映像@ 0x82000000 [ 0x000000 - 0x390a50]
###平展设备树 blob,88000000使用
0x88000000的 FDT blob 启动
正在将设备树加载到8ffe8000,结束8ffcdb ... 确定

启动内核...


我也跟着改变了,但运气不好:

https://e2e.ti.com/support/arm/automotive_processors/f/1020/t/651203 
 和

https://e2e.ti.com/support/arm/automotive_processors/f/1020/t/652269


配置中是否缺少任何内容? 我还在内核中启用了 Early printk、但没有控制台日志。 我已经通过 JTAG 调试了 SPL、并且能够通过 JTAG 写入512MB (整个范围)的 DDR。
指导我解决此问题。


谢谢、
Chintan。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您使用的是哪款处理器和 Linux SDK?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我使用的是 AM5708处理器、但我不使用 SDK、我使用的是 Yocto ti 内核4.4.41和 Uboot 2016-05。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请参阅 帖子。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    Prerak Patel 是我的员工、我们在制作具有1GB RAM 的 A 版电路板时遇到了同样的问题。 我们删除了 RTC 和 SATA、当时问题得到了解决。 但现在我们已将 RAM 从1GB 更改为512Mib,现在我们又面临同样的问题。

    您能帮我解决这个问题吗?

    谢谢、
    Chintan。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我已经检查了 FDT 地址、它们看起来不错。 您能否附加 U-Boot 环境变量以进行检查?

    =>印刷版

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Kemal、

    边缘#打印机
    导出 表= 9ff9e324、htab.size = 521、htab.fill= 68、大小= 0
    未排序:N=68
             0:9ef2ec40 => bootdir   =>/boot
             1:9ef2eca4 => bootm_size => 0x10000000
             2:9ef2eda8 => boot_fit  => 0
             3:9ef2ee48 => loadbootscript =>加载 MMC ${mmcdev}${loadaddr}boot.scr
             4:9ef2eefc => dofastboot => 0
             5:9ef2ef9c => netloadimage => tftp ${loadaddr}${bootfile}
             6:9ef2f064 => arch      => arm
             7:9ef2f168 => mmcdev    => 0
             8:9ef2f294 => fdtcontrolladdr => 9ef18fb8
             9:9ef2f320 => board_name => am570x_edge
            10:9ef2f334 => pxefile_addr_r => 0x80100000
            11:9ef2f49c => importbootenv =>从 MMC${mmcdev}...;env 导入-t ${loadaddr}${filesize}
            12:9ef2f4c4 => scriptaddr => 0x8000000
            13:9ef2f4d8 => envboot   => MMC dev ${mmcdev};如果 MMC 重新扫描;然后回显在器件${mmcdev}上找到的 SD/MMC;如果运行 loadbootscript;TH;
            14:9ef2f564 => DFU_alt_INFO_QSPI => MLO RAW 0x0 0x040000;u-boot.img RAW 0x040000 0x0100000;u-boot-spl-OS RAW 0x140000 0x080000;u-bo0
            15:9ef2f5dc => ethaddr   => e8:EB:11:de:aa:3e
            16:9ef2f62c => FDT_addr_r => 0x88000000
            17:9ef2f6a4 => DFU_bufsiz => 0x10000
            18:9ef2f6e0 => finduid  =>部件 uuid MMC ${bootpart}uuid
            19:9ef2f7a8 => bootscript =>从 mmc${mmcdev}...;源${loadaddr}回显正在运行的引导脚本
            20:9ef2f7d0 => BOOT_FDT  =>尝试
            21:9ef2f848 =>波特率  => 115200
            22:9ef2f960 => usbtty    => CDC_ACM
            23:9ef2f9c4 => args_fit  => setenv bootargs console=${console}root=${mmcroot}rw rootfstype=${mmcrootfstype}
            24:9ef2fb18 => dfu_alt_info_mmc =>引导部分0 1;rootfs 部分0 2;mLo fat 0 1;mLo.raw 0x100 0x100;u-boot.img.raw 0x300 0x4001
            25:9ef2fc6c => bootcmd   =>如果测试${dofastboot}-eq 1;然后回显引导请求、重置 dofastboot ...;setenv dofast;
            26:9ef2fcd0 => kernel_addr_r => 0x82000000
            27:9ef2fe74 => mmcrootfstype => ext4 rootwait
            28:9ef2ff50 => fit_loadaddr => 0x83000000
            29:9ef2ff8c => bootfile  => zImage
            30:9ef2ffb4 => netloadfdt => tftp ${fdtaddr}${fdtfile}
            31:9ef30018 =>板     =>边缘
            32:9ef30068 => stderr    =>串行@48020000
            33:9ef3007c => bootenvfile => uEnv.txt
            34:9ef300a4 => vram      => 16M
            35:9ef3016c => fdtfile   =>未定义
            36:9ef30298 => netargs   => setenv bootargs console=${console}${optargets}root=/dev/nfs nfsroot=${serverip}:${rootpath}、${nfsopts}p
            37:9ef3034c => loadaddr  => 0x82000000
            38:9ef304b4 => rdaddr    => 0x88080000
            39:9ef304c8 => bootdelay => 2.
            40:9ef304dc => dfu_alt_info_eMMC => rawemmc raw 0 3751936;boot part 1;rootfs part 1 2;mlo.raw 1;mlo.raw 0x100 0x100;u-boot.1
            41:9ef305a4 => rootpath  =>/export/rootfs
            42:9ef305f4 => loadimage => load ${devtype}${bootpart}${loadaddr}${bootfile}
            43:9ef3066c => fdtaddr   => 0x88000000
            44:9ef306a8 => mmcroot   =>/dev/mmcblk0p2
            45:9ef30720 => nfsopts   => nolock
            46:9ef3084c => stdin     =>串行@48020000
            47:9ef30860 => CPU       => armv7
            48:9ef30874 => partitions => uuuid_disk=${uid_gppt_disk};name=rootfs、start=2MiB、size=-、uid=${uid_gppt_rootfs}
            49:9ef308d8 => stdout    =>串行@48020000
            50:9ef308ec =>供应商    => TI
            51:9ef3098c => loadfdt   =>加载${devtype}${bootpart}${fdtaddr}${fdtfile}
            52:9ef309f0 => ramdisk_addr_r => 0x88080000
            53:9ef30b6c => update_TO_FIT => setenv loadaddr ${fit_loadaddr};setenv bootfile ${fit_bootfile}
            54:9ef30e00 => loadfit   =>运行 args_fit;bootm ${loadaddr};
            55:9ef30e78 => console   => ttyO2、115200n8
            56:9ef30ea0 => dfu_alt_info_ram =>内核 ram 0x80200000 0x4000000;fdt ram 0x80f80000 0x80000;ramdisk ram 0x81000000 0x4000000
            57:9ef30eb4 => SoC       => omap5
            58:9ef30f40 => mmcboot   => MMC dev ${mmcdev};setenv devnum ${mmcdev};setenv devtype MMC;如果 MMC 重新扫描;然后回显 SD/MMC 找到;
            59:9ef30fb8 => static_ip =>${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off
            60:9ef3101c => fit_bootfile =>边缘.fit
            61:9ef3108=> bootpart  => 0:3
            62:9ef3115c => findfdt   =>如果测试$board_name = omap5_uevm;然后 setenv fdtfile omap5-uevm.dtb;fi;如果测试$board_name = dra7xx)
            64:9ef311ac => loadbootenv => fatload MMC ${mmcdev}${loadaddr}${bootenvfile}
            65:9ef3133c => mmcloados =>运行 args_MMC;如果测试${boot_FDT}=是||测试${boot_FDT}=尝试;如果运行 loadfdt;则 bootz ${l;
            66:9ef313b4 => netboot   => echo Booting from network ...;setenv autoload no;运行 netloadimage;运行 netloadfdt;运行 netargs; 引导}
            67:9ef31454 => args_MMC  =>运行 finduid;setenv bootargs console=${console}${optargets}root=${mmcroot}RW rootfstype=${mmcrootfstyM
    arch = ARM
    args_fit=setenv bootargs console=${console}root=${mmcroot}RW rootfstype=${mmcrootfstype}
    args_mmc=run finduid;setenv bootargs console=${console}${optargets}root=${mmcroot}rw rootfstype=${mmcrootfstype}mem=512M
    波特率=115200
    电路板=边缘
    Board_name=am570x 边缘
    BOOT_FDT=尝试
    BOOT_FIT = 0
    bootcmd=if test ${dofastboot}-eq 1;then echo Boot fastboot requested、resetting dofastboot ...;setenv dofastboot 0;saveenv;echo Booting int;
    BOOTDELAY=2
    bootdir=/boot
    bootenvfile=uEnv.txt
    BootFile=zImage
    BOOTM_SIZE=0x10000000
    bootpart=0:3
    bootscript=echo 正在从 MMC${mmcdev}...;源${loadaddr}运行的 bootscript
    console=ttyO2,115200n8.
    CPU=armv7
    dfu_alt_info_eMMc=rawemmc raw 0 3751936;引导部分1;rootfs 部分1 2;mlo fat 1;ml.raw 0x100 0x100;u-boot.img.raw 0x300 0x400;spl-o1
    dfu_alt_info_mmc=boot part 0 1;rootfs part 0 2;mlo fat 0 1;ml.raw 0x100 0x100;u-boot.img.raw 0x300 0x400;spl-os-args.raw 0x80 0x81
    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;0
    dfu_alt_info_ram=内核 ram 0x80200000 0x4000000;fdt ram 0x80f80000 0x80000;ramdisk ram 0x81000000 0x4000000
    DFU_bufsiz=0x10000
    dofastboot=0
    envboot=MMC dev ${mmcdev};如果 MMC 重新扫描;然后回显在器件${mmcdev}上找到的 SD/MMC;如果运行 loadbootscript;然后运行 bootscript;否则运行 lo;
    ethaddr=e8:EB:11:de:aa:3e
    FDT_addr_r=0x88000000
    fdtaddr=0x88000000
    fdtcontrolladdr=9ef18fb8.
    fdtfile=未定义
    findfdt=if test $board_name = omap5_uevm;then setenv fdtfile omap5-uevm.dtb;fi;if test $board_name = dra7xx;then setenv fdtfile dra7-evm.d
    finduuid=part uuid MMC ${bootpart}uuid
    fit_bootfile=EDGE.FIT
    fit_loadaddr=0x83000000
    importbootenv=echo 从 MMC${mmcdev}导入环境...;env 导入-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}${fdtfile}
    loadfit=run args_fit;bootm ${loadaddr};
    loadimage=load ${devtype}${bootpart}${loadaddr}${bootfile}
    mmcboot=MMC dev ${mmcdev};setenv devnum ${mmcdev};setenv devtype MMC;如果 MMC 重新扫描;然后回显器件${mmcdev}上的 SD/MMC;如果运行 loadi;
    mmcdev=0
    mmclaros=run args_mmc;如果测试${boot_FDT}= yes ||测试${boot_FDT}=试用;如果运行 loadfdt;则 bootz ${loadaddr}-${fdtaddr};否则、如果;
    mmcroot=/dev/mmcblk0p2
    mmcrootfstype=ext4 rootwait
    netargs=setenv bootargs console=${console}${optargets}root=/dev/nfs nfsroot=${serverip}:${rootpath}、${nfsopts}RW IP=DHCP
    netboot=echo Booting from network...;setenv autoload no;运行 netloadimage;运行 netloadfdt;运行 netargs; bootz ${loadaddr}-${fdtaddr}
    netloadfdt=tftp ${fdtaddr}${fdtfile}
    netloadimage=tftp ${loadaddr}${bootfile}
    nfsopts=nolock
    partitions=uuid_disk=${uid_gppt_disk};name=rootfs、start=2MiB、size=-、uid=${uid_gppt_rootfs}
    pxefile_addr_r=0x80100000
    ramdisk_addr_r=0x88080000
    读数地址= 0x88080000
    rootpath=/export/rootfs
    脚本地址=0x80000000
    SoC=omap5
    static_ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off
    stderr=串行@48020000
    stdin =串行@48020000
    stdout=串行@48020000
    update_TO_fit=setenv loadaddr ${fit_loadaddr};setenv 引导文件${fit_bootfile}
    usbtty=CDC_ACM
    供应商= TI
    ver = U-Boot 2016.05-00333-ge1198ea-ni-脏(2018年1月19日- 15:52:20 +0530)
    VRAM=16M


    谢谢、
    Chintan。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    环境变量也是可以的。 您能否明确告知内核 DDR 大小、然后检查电路板是否成功引导?

    => setenv optargets mem=512M
    => saveenv