TI中文支持网
TI专业的中文技术问题搜集分享网站

1G ddr 升 2GDDR 时, 板子启动卡死到Uncompressing Linux… done, booting the kernel.

   开发包版本:DVRRDK3.5, 8168芯片,板子是公司自己生产。

1G DDR 时, 启动板子、加载内核以及运行程序都没有任何问题。最近公司想升级为2G 内存,所以我按照install文档修改rules.make文件,以及修改uboot启动参数。新修改的参数为:

setenv bootargs 'console=ttyO2,115200n8 noinitrd mem=512M rootdelay=5 root=/dev/nfs nfsroot=192.168.1.91:/home/work/dm8168/DVRRDK_03.50.00.05/target/rfs_816x, rw ip=192.168.1.92:192.168.1.109:192.168.1.254:255.255.0.0::eth0:off vram=20M notifyk.vpssm3_sva=0xbfb00000 stdin=serial ddr_mem=2048M vmalloc=476M'


板子可以启动了,但是在执行init.sh以及load.sh时,都无法执行,下面是错误信息:

root@dm816x:/opt/dvr_rdk/ti816x# sh init.sh *** Bootargs Validated for mem param *** *** Bootargs Validated for notifyk.vpssm3 params *** *** This RDK version requires LINUX_BASE_ADDRESS=0xc0000000.Recompile uImage *** Cmd to rebuild uImage@0xc0000000:mkimage -A arm -O linux -T kernel -C none -a 0xc0008000 -e 0xc0008000 -n 'Linux-2.6.37' -d arch/arm/boot/zImage uImage Refer http://processors.wiki.ti.com/index.php/DM816x_AM389x_PSP_User_Guide#Auto_detection_of_Kernel_Load_Address_and_Run_Time_RAM_Base_Determination Kernel bootargs mismatch.!!!!ABORTING!!!

于是我又按照网上查到的资料,将内核起始地址改为C0000000, 使用命令为:

mkimage -A arm -O linux -T kernel -C none -a 0xc0008000 -e 0xc0008000 -n 'Linux-2.6.37' -d arch/arm/boot/zImage uImage
重新生成uImage, 重启板子以后出现了下面这种情况,无法继续往下运行了。

Load address: 0x81000000 Loading: T ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ################################################### done Bytes transferred = 2590672 (0x2787d0) ## Booting kernel from Legacy Image at 81000000 … Image Name: Linux-2.6.37 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 2590608 Bytes = 2.5 MiB Load Address: c0008000 Entry Point: c0008000 Verifying Checksum … OK

Loading Kernel Image … OK OK Starting kernel … Uncompressing Linux… done, booting the kernel.

我参考了其他帖子,但是我还是无法解决这个问题。请专家帮忙看一下这个问题,多谢。

另外,是否3.5的DVRRDK包不支持2G的DDR?

Chris Meng:

你好,

你修改了Linux在DDR上的起始地址,你是否也修改了bld文件?

peng cheng2:

回复 Chris Meng:

专家你好,内核加载失败我已经解决了。我发现使用mkimage修改内核入口地址不可行,我的方法是修改内核里面的makefile。boot文件,将基地址修改为0xC0000000,同时修改uboot参数loadaddr地址0xC0000000,,然后内核就可以正常启动了。

bld文件是按照install文档里面的来配置,基本上没有做太大修改,只给DSP_DATA_SIZE和DSP_CODE_SIZE分别增加了40M、10M,也将SR1_SIZE进行了减50M。

但是在执行load.sh时又报出了新的问题,运行后板子跑飞了。

Chris Meng:

回复 peng cheng2:

你好,

默认的2G bld把Linux放到了0xE0000000,你需要修改bld文件,把linux使用的DDR放到0xC0000000。

peng cheng2:

回复 Chris Meng:

多谢你的答疑,我找到我的bld文件,现在内容如下。不过我计算了下,配置应该没有问题吧,请专家再指点一下。

var DDR3_ADDR = 0x80000000;var DDR3_SIZE = 2048*MB;

var OCMC0_ADDR = 0x40300000;var OCMC1_ADDR = 0x40400000;var OCMC0_RUN_ADDR = 0x00300000;var OCMC1_RUN_ADDR = 0x00400000;var OCMC_SIZE = 256*KB;

var L2_SRAM_ADDR = 0x55024000;var L2_SRAM_SIZE = 128*KB;var L2_SRAM_RUN_ADDR = 0x20004000;

var DUCATI_WB_WA_ADDR = 0x20000000;

var TOTAL_MEM_SIZE = 2048*MB;

/* FIRST + SECOND 512MB *//* var SR1_SIZE = 278 * MB;*/    /*向dsp分配50*MB*/var SR1_SIZE = 228 * MB;var VIDEO_M3_CODE_SIZE = 3 * MB;var VIDEO_M3_BSS_SIZE = 15 * MB;var VIDEO_M3_DATA_SIZE = 3 * MB;var DSS_M3_CODE_SIZE = 2 * MB;var DSS_M3_BSS_SIZE = 20 * MB;var DSS_M3_DATA_SIZE = 6 * MB;/*var DSP_CODE_SIZE = 1 * MB;*/    /*分配50*MB给dsp端*/var DSP_CODE_SIZE = 11 * MB;/*var DSP_DATA_SIZE = 24 * MB;*/var DSP_DATA_SIZE = 64 * MB;var SR2_FRAME_BUFFER_SIZE = 640 * MB;var VIDEO_M3_EXCEPTION_CTX_SIZE = 128*KB;var VPSS_M3_EXCEPTION_CTX_SIZE = 128*KB;var SR0_SIZE = 22 * MB + 768 * KB;var HDVPSS_DESC_SIZE = 2 * MB;var HDVPSS_SHARED_SIZE = 2 * MB;var NOTIFY_SHARED_SIZE = 2 * MB;var REMOTE_DEBUG_SIZE = 1 * MB;var SHARED_MEMORY_SIZE = 2 * MB;

/* THIRD 512MB */var TILER_SIZE = 256 * MB;var SR3_FRAME_BUFFER_EXTRA_SIZE = 256 * MB;

/* LAST 512MB */var LINUX_SIZE = 512 * MB;

/* first and second 512MB */var SR1_ADDR = DDR3_ADDR;var VIDEO_M3_CODE_ADDR = SR1_ADDR + SR1_SIZE;var VIDEO_M3_DATA_ADDR = VIDEO_M3_CODE_ADDR + VIDEO_M3_CODE_SIZE;var VIDEO_M3_BSS_ADDR = VIDEO_M3_DATA_ADDR + VIDEO_M3_DATA_SIZE;var VIDEO_M3_BSS_MAPPED_ADDR = (VIDEO_M3_BSS_ADDR – DDR3_ADDR) + DUCATI_WB_WA_ADDR;var DSS_M3_CODE_ADDR = VIDEO_M3_BSS_ADDR + VIDEO_M3_BSS_SIZE;var DSS_M3_DATA_ADDR = DSS_M3_CODE_ADDR + DSS_M3_CODE_SIZE;var DSS_M3_BSS_ADDR = DSS_M3_DATA_ADDR + DSS_M3_DATA_SIZE;var DSS_M3_BSS_MAPPED_ADDR = (DSS_M3_BSS_ADDR – DDR3_ADDR) + DUCATI_WB_WA_ADDR;var DSP_CODE_ADDR = DSS_M3_BSS_ADDR + DSS_M3_BSS_SIZE;var DSP_DATA_ADDR = DSP_CODE_ADDR + DSP_CODE_SIZE;var SR2_FRAME_BUFFER_ADDR = DSP_DATA_ADDR + DSP_DATA_SIZE;var VIDEO_M3_EXCEPTION_CTX_ADDR = SR2_FRAME_BUFFER_ADDR + SR2_FRAME_BUFFER_SIZE;var VPSS_M3_EXCEPTION_CTX_ADDR = VIDEO_M3_EXCEPTION_CTX_ADDR + VIDEO_M3_EXCEPTION_CTX_SIZE;var SR0_ADDR = VPSS_M3_EXCEPTION_CTX_ADDR + VPSS_M3_EXCEPTION_CTX_SIZE;var HDVPSS_DESC_ADDR = SR0_ADDR + SR0_SIZE;var HDVPSS_SHARED_ADDR = HDVPSS_DESC_ADDR + HDVPSS_DESC_SIZE;var NOTIFY_SHARED_ADDR = HDVPSS_SHARED_ADDR + HDVPSS_SHARED_SIZE;var REMOTE_DEBUG_ADDR = NOTIFY_SHARED_ADDR + NOTIFY_SHARED_SIZE;var SHARED_MEMORY_ADDR = REMOTE_DEBUG_ADDR + REMOTE_DEBUG_SIZE;

var LINUX_ADDR = DDR3_ADDR + 1 * GB;   #DDR3_ADDR  上面标明的是0x8000 0000, 在这里我计算了下,应该没错的。var SR3_FRAME_BUFFER_EXTRA_ADDR = LINUX_ADDR + LINUX_SIZE;var TILER_ADDR = SR3_FRAME_BUFFER_EXTRA_ADDR + SR3_FRAME_BUFFER_EXTRA_SIZE;

mi zhu yu:

回复 peng cheng2:

你好,我也遇到了你这样的问题,我是8148板子,内存想由512M升为1024M,我想知道你的1024M的.bld配置文件可不可以通过附件的形式发给我,我想你参考参考,谢谢你

赞(0)
未经允许不得转载:TI中文支持网 » 1G ddr 升 2GDDR 时, 板子启动卡死到Uncompressing Linux… done, booting the kernel.
分享到: 更多 (0)