主题 : 关于4412的uboot源码的中不能加载>300M的根文件系统的问题 复制链接 | 浏览器收藏 | 打印
级别: 侠客
UID: 87780
精华: 0
发帖: 93
金钱: 470 两
威望: 94 点
贡献值: 0 点
综合积分: 186 分
注册时间: 2013-02-26
最后登录: 2016-07-27
楼主  发表于: 2014-07-03 17:36

 关于4412的uboot源码的中不能加载>300M的根文件系统的问题

描述:加载的内存缓冲首地址
图片:
当我从sd卡烧写根文件系统的时候,如果根文件系统大于300M,烧写就会出问题。
这里我先说一下,我uboot中烧写根文件系统的个人认识:
uboot烧文件系统的时候
第一步是从SD卡把根文件系统读到内存中
第二步是从内存中写入我们划分好的分区,把它写入到EMMC中的指定根文件系统分区。

那么对于上面的这两个步骤,我的问题出在了第一步,当烧写系统的时候,uboot先从SD卡中读我指定的根文件系统到内存中起始地址为0x5000_0000来,
{
这个地方,samsung默认指定的内存地址为0x5000_0000
对于这个0x5000_0000,为什么为这个地址,我也没找到官方稳定说明
}
前面的读入都很顺利,但读到文件的最后部分时,因为最后的文件大小不足一个block大小
而从SD卡中读,至少需要读入1block大小,所以这个地方,对最后一步的处理是,先开辟一个521字节的数组
然后读到这个数组中来,再把这个数组中,我们的文件最后剩下的真实数据大小,读入到我们指定的内存缓冲去
这个时候,问题出现了,一旦我往这个内存地址后面移动,程序就死了。


也就是说,对于内存0x5000_0000后面的>300M的内存的某个地址,我们不能碰,一旦写入,就会出问题。


于是我分析了下uboot的运行内存情况


uboot在内存中的地址为0x43e0_0000,但对于0x5000_0000以后的内存,我不知道放了些什么

于是我就尝试了下,将缓冲的地址0x5000_0000改为了0x6000_0000,但问题更加严重了,这个在烧系统的时候,连uboot都无法读完,然后程序就死掉了。

所以这个问题一直困扰着我。
希望有知道的人,帮个忙,一起分析下。



另:不知道exynos4412,sansumg有没有提供irom启动的datasheet,如果哪个朋友有的话,麻烦共享下。


谢谢各位!!!
[ 此帖被lihp1603在2014-07-03 17:42重新编辑 ]
级别: 侠客
UID: 87780
精华: 0
发帖: 93
金钱: 470 两
威望: 94 点
贡献值: 0 点
综合积分: 186 分
注册时间: 2013-02-26
最后登录: 2016-07-27
1楼  发表于: 2014-07-08 11:06
问题解决,目前用sd卡成功烧>300M根文件系统
级别: 新手上路
UID: 98175
精华: 0
发帖: 38
金钱: 195 两
威望: 39 点
贡献值: 0 点
综合积分: 76 分
注册时间: 2013-11-18
最后登录: 2017-05-17
2楼  发表于: 2014-07-22 15:06

 回 1楼(lihp1603) 的帖子

是不是设置的缓存大小的问题,放在0x50000000后应该没问题啊,是用sdfuse烧写的把?
级别: 侠客
UID: 41512
精华: 0
发帖: 61
金钱: 310 两
威望: 62 点
贡献值: 0 点
综合积分: 122 分
注册时间: 2011-03-30
最后登录: 2017-08-01
3楼  发表于: 2014-09-14 16:59
楼主 怎么解决的?