主题 : 关于在nandflash下使用uboot的收获和疑问 复制链接 | 浏览器收藏 | 打印
级别: 侠客
UID: 1577
精华: 0
发帖: 53
金钱: 475 两
威望: 390 点
贡献值: 0 点
综合积分: 106 分
注册时间: 2008-09-11
最后登录: 2017-06-30
楼主  发表于: 2009-04-05 12:53

 关于在nandflash下使用uboot的收获和疑问

管理提醒: 本帖被 arm9home 从 Linux技术交流专区 移动到本区(2010-02-08)
由于norflash烧写很不方便(搞不好很容易整块板子报废),所以想让u-boot在nandflash使用,友善的u-boot我觉得还不错了,但要使他完全在nandflash下正常工作,还是需要修改一下。
    开机,进入u-boot的选项菜单后##### open24x0 Bootloader for FA24x0 #####                                     
Download u-boot                                                            
[k] Download Linux kernel                                                      
[j] Download JFFS2 image                                                       
[y] Download YAFFS image                                                       
[d] Download to SDRAM & Run                                                    
Boot the system                                                            
[f] Format the Nand Flash                                                      
[s] Set the boot parameters                                                    
[r] Reboot u-boot                                                              
[q] Quit from menu                                                             
Enter your selection:
安k下载内核时发现,uboot是从0x0这个地址开始写入内核的,而uboot的存放地址恰好也在这个地址段,所以自然会覆盖掉uboot,表现为重启后,终端没输出,
于是我改用命令的方法,用vivi下载完uboot后,重启进入uboot后安q进入命令模式,输入usbslave后,就可以通过dnw下载,下载完后,内核是在sram中而不是在nandflash中,所以还要执行 nand erase 0x50000 0x200000察除nandflash,0x50000代表察除nandflash的起始地址,0x200000代表要察除的空间大小,0x50000这个数字要跟open24x0.h里面的#define CONFIG_BOOTCOMMAND    "nand read.jffs2 0x32000000 0x50000 0x200000; bootm 0x32000000"
的要一致,否则内核启动不了open24x0.h在u-boot/include/configs里面,原来的那句是这样的#define CONFIG_BOOTCOMMAND    "nand read.jffs2 0x32000000 kernel; bootm 0x32000000"要修改成像上面的一样,
接下来,再执行nand write.yaffs 0x32000000 0x50000 $(filesize)就可以把内核烧写进nandflash。重启之后就可以启动内核了,至于烧写yaffs文件系统相对简单,只要在选项菜单那里安y就可以了
我的问题是:我想修改u-boot实现直接在选项菜单里安k就能顺利下载内核进入nandflash 我的思路是修该usb下载后察除nandflash的起始地址,和写入的起始地址,但就是不知道选项菜单里面的那些功能在哪些文件中定义的,麻烦版主指点指点,

级别: 侠客
UID: 1577
精华: 0
发帖: 53
金钱: 475 两
威望: 390 点
贡献值: 0 点
综合积分: 106 分
注册时间: 2008-09-11
最后登录: 2017-06-30
1楼  发表于: 2009-04-05 12:55
ps:supervivi是好,但是不开原(不能怪友善),不开原就总是觉得不够踏实,所以就像用u-boot
级别: 侠客
UID: 1577
精华: 0
发帖: 53
金钱: 475 两
威望: 390 点
贡献值: 0 点
综合积分: 106 分
注册时间: 2008-09-11
最后登录: 2017-06-30
2楼  发表于: 2009-04-05 12:56
本人是新手,写的不好,大家见笑了
级别: 新手上路
UID: 2497
精华: 0
发帖: 30
金钱: 300 两
威望: 300 点
贡献值: 0 点
综合积分: 60 分
注册时间: 2008-11-20
最后登录: 2009-12-24
3楼  发表于: 2009-04-05 21:03
呵呵,我也正看U-BOOT代码,正尝试自已动手移植。
楼主说的相关指令功能定义,我没记错的话,应当在/UBOOT/源代码下,common目录下 cmd_menu.c文件,menu_shell函数里面的CASE K项目
级别: 骑士
UID: 4234
精华: 0
发帖: 152
金钱: 1420 两
威望: 1142 点
贡献值: 11 点
综合积分: 304 分
注册时间: 2009-03-05
最后登录: 2012-08-18
4楼  发表于: 2009-04-18 09:16
顶下
级别: 新手上路
UID: 3934
精华: 0
发帖: 37
金钱: 325 两
威望: 276 点
贡献值: 0 点
综合积分: 74 分
注册时间: 2009-02-17
最后登录: 2013-03-08
5楼  发表于: 2009-07-21 16:39
学习中