主题 : uboot for tiny210如何设置commandline以启动linux内核? 复制链接 | 浏览器收藏 | 打印
级别: 骑士
UID: 61140
精华: 1
发帖: 213
金钱: 1125 两
威望: 225 点
贡献值: 1 点
综合积分: 446 分
注册时间: 2011-12-23
最后登录: 2016-11-20
楼主  发表于: 2012-03-21 20:34

 uboot for tiny210如何设置commandline以启动linux内核?

如题:uboot for tiny210如何设置commandline以启动linux内核(友善自带的linux镜像)?

uboot for tiny210不能够引导linux kernel,后来自己编译了一遍内核,错误定位在linux kernel初始化阶段没有正确地进行内存配置!!

这说明:1、 uboot运行正常,且能够引导到linux下(当然我把uboot中MACH_TYPE已经改为mini210的了)。
                2、可能commandline设置有误,导致linux无法正确识别DDR2 512MB的内存。

我加了mem=512M参数,还是不能启动linux!!
后来用mem=256M,居然能启动linux内核,但是运行到后面的东西都不是很正常(比如android起来后所有软件都被killall)!!!

我怀疑是不是uboot的内存设置有问题啊,或者怎样修改uboot的commandline让linux可以识别512MB的内存????
求解答,多谢
[ 此帖被neechard在2012-03-21 20:42重新编辑 ]
咕唧咕唧
级别: 侠客
UID: 30422
精华: 1
发帖: 114
金钱: 620 两
威望: 124 点
贡献值: 1 点
综合积分: 248 分
注册时间: 2010-10-16
最后登录: 2016-05-27
1楼  发表于: 2012-03-21 21:48

 回 楼主(neechard) 的帖子

我会尽快测试,并提供解决方法,谢谢你对u-boot for tiny210的关注。
咕唧咕唧
级别: 侠客
UID: 30422
精华: 1
发帖: 114
金钱: 620 两
威望: 124 点
贡献值: 1 点
综合积分: 248 分
注册时间: 2010-10-16
最后登录: 2016-05-27
2楼  发表于: 2012-03-22 09:08

 回 楼主(neechard) 的帖子

问题已经解决,友善提供的是mini210的内核,根据内核和mini210 uboot里的配置(我手里没有mini210开发板),可以知道mini210的DDR2ram和tiny210DDR2ram在bank的挂载方式是不同的,详见我的http://blog.csdn.net/liukun321/article/details/7270426 ,故需要修改内核的arch/arm/mach-s5pv210/include/mach/memory.h 文件26,27行内容,将Maximum of 256MiB in one bank的限制改为Maximum of 512MiB in one bank  作如下修改:
#define SECTION_SIZE_BITS    29
#define NODE_MEM_SIZE_BITS    29
级别: 骑士
UID: 61140
精华: 1
发帖: 213
金钱: 1125 两
威望: 225 点
贡献值: 1 点
综合积分: 446 分
注册时间: 2011-12-23
最后登录: 2016-11-20
3楼  发表于: 2012-03-22 13:38

 回 2楼(liukunmcu) 的帖子

还是你大牛,我找了半天也没找出结果

让我先试试
级别: 骑士
UID: 61140
精华: 1
发帖: 213
金钱: 1125 两
威望: 225 点
贡献值: 1 点
综合积分: 446 分
注册时间: 2011-12-23
最后登录: 2016-11-20
4楼  发表于: 2012-03-22 14:09

 回 3楼(neechard) 的帖子

再给你提点意见,

uboot for tiny210在tftp时经常出现超时现象,
出现TTTT#######TTTTTT,然后Retry count exceeded; starting again问题

解决方法:应该修改net/tftp.c中的TIMEOUT,把该值设的大一些,比如原来是5000,我改为50000后效果就非常好。
vi net/tftp.c查找TIMEOUT
修改为#define TIMEOUT         50000UL
咕唧咕唧
级别: 侠客
UID: 30422
精华: 1
发帖: 114
金钱: 620 两
威望: 124 点
贡献值: 1 点
综合积分: 248 分
注册时间: 2010-10-16
最后登录: 2016-05-27
5楼  发表于: 2012-03-22 14:50

 回 4楼(neechard) 的帖子

嗯,好的,我再修改一下tftp的参数,还有什么好建议要第一时间告诉我啊。
级别: 骑士
UID: 61140
精华: 1
发帖: 213
金钱: 1125 两
威望: 225 点
贡献值: 1 点
综合积分: 446 分
注册时间: 2011-12-23
最后登录: 2016-11-20
6楼  发表于: 2012-03-22 23:47

 Re:回 4楼(neechard) 的帖子

引用第5楼liukunmcu于2012-03-22 14:50发表的 回 4楼(neechard) 的帖子 :
嗯,好的,我再修改一下tftp的参数,还有什么好建议要第一时间告诉我啊。


经过测试nand读写部分好像有点问题~~
比如android的nand分区为:
[    1.142615] 0x0000000c0000-0x000000100000 : "misc"                                                  
[    1.148066] 0x000000100000-0x000000600000 : "recovery"                                              
[    1.153955] 0x000000600000-0x000000b00000 : "kernel"                                                
[    1.158893] 0x000000b00000-0x000000e00000 : "ramdisk"                                                
[    1.163556] 0x000000e00000-0x000040000000 : "system"    


我尝试着读取kernel:
读取0x60字节,ok
[TINY210]# nand read 0x20008000 0x600000 0x60
NAND read: device 0 offset 0x600000, size 0x60                                  
96 bytes read: OK                          
                                    
读取0x600字节,ok
[TINY210]# nand read 0x20008000 0x600000 0x600
NAND read: device 0 offset 0x600000, size 0x600                                
1536 bytes read: OK

读取0x6000字节,出错!!                                            
[TINY210]# nand read 0x20008000 0x600000 0x6000
NAND read: device 0 offset 0x600000, size 0x6000                                
NAND read from offset 600000 failed -74                                        
0 bytes read: ERROR  
                                                        
读取0x60000字节,也出错!!
[TINY210]# nand read 0x20008000 0x600000 0x60000
NAND read: device 0 offset 0x600000, size 0x60000                              
NAND read from offset 600000 failed -74                                        
0 bytes read: ERROR


也就是当读取比较多的时会出错~~
咕唧咕唧
级别: 侠客
UID: 30422
精华: 1
发帖: 114
金钱: 620 两
威望: 124 点
贡献值: 1 点
综合积分: 248 分
注册时间: 2010-10-16
最后登录: 2016-05-27
7楼  发表于: 2012-03-23 17:07

 回 6楼(neechard) 的帖子

出现上面的问题,是因为你nand中的内容是用Superboot210 烧写的,它的ECC配置和u-boot for tiny210 存在差异,在读取oob时会出问题,所以读的时候出错。读不超过2k的内容会显示读取成功,实际是读取失败的。如果你用u-boot for tiny210擦除整片nand然后用u-boot for tiny210烧写,再读就不会出现问题了。