主题 : 有关uboot的环境变量的保存位置 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 97264
精华: 0
发帖: 3
金钱: 15 两
威望: 3 点
贡献值: 0 点
综合积分: 6 分
注册时间: 2013-10-17
最后登录: 2013-10-20
楼主  发表于: 2013-10-17 11:48

 有关uboot的环境变量的保存位置

小弟初学嵌入式,一窍不通,还请各位前辈多多指教。能够提点一二,小弟亦感激不尽
------------------------------------------------
硬件:arm9 mini2440
-------------------------------------------------
这样是可以正常启动的:
uboot.bin装在norflash的0x00位置,linux的uimage(就是包含0x40的头的那个)装在nandflash的0x60000位置。文件系统装在0x560000位置。
其中,uboot的某个环境变量是bootargs=noinitrd root=/dev/mtdblock3 rw rootfstype=yaffs2 console=ttySAC0,115200 init=/linuxrc mem=64M
------------------------------------------------
我将该环境变量更改为
setenv bootargs 'noinitrd root=/dev/mtdblock3 rw rootfstype=yaffs2 console=fb0,115200 init=/linuxrc mem=64M'(为了将串口让作它用)
不saveenv,可以正常启动linux启动。
但是如果saveenv,uboot就会提示
Saving Environment to NAND...
Erasing Nand...
Erasing at 0x6000000000002 --   0% complete.-----------------------问题1
Writing to Nand... done
这里似乎是把环境变量存在nandflash里了。
接着启动内核,uboot提示
NAND read: device 0 offset 0x60000, size 0x267000
2519040 bytes read: OK
Wrong Image Format for bootm command
ERROR: can't get kernel image!
如此,似乎是找不到内核了。
---------------------------------------------
问题1:
uboot的环境变量保存在哪了?nandflash总共256mb(0x1000000个字节),哪来的存在0x6000000000002那个位置
--------------------------------------------
问题2:
从何处得知uboot的环境变量的保存位置,我翻看了不少书本,都没有找到。还请高手提点一下,大概是在什么目录下的文件有此设置
--------------------------------------------
问题3:
不少书籍上都写着flash分为四段,分别是bootloader,参数区,内核映像,文件系统。请问这个参数区是不是uboot保存环境变量的地方?抑或是uimage那个0x40字节的头?
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
贡献值: 71 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
1楼  发表于: 2013-10-17 12:15

 回 楼主(sculida) 的帖子

你用的是mini2440光盘上的uboot 1.1.6?
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 97264
精华: 0
发帖: 3
金钱: 15 两
威望: 3 点
贡献值: 0 点
综合积分: 6 分
注册时间: 2013-10-17
最后登录: 2013-10-20
2楼  发表于: 2013-10-17 13:18

 回 1楼(kasim) 的帖子

谢谢斑竹大人!
记不得是不是那个了。文件名叫做u-boot-teacher.bin,大小为285,572 字节。
这三个问题,斑竹有什么想法,都可以指点一二。非常感谢!
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
贡献值: 71 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
3楼  发表于: 2013-10-17 21:11

 回 2楼(sculida) 的帖子

环境变量的保存位置和源代码中的设置有关。我想你可以试试下面这个uboot,它里面的环境变量是保存在NAND Flash中的0x40000开始的地方,长度为128K.

http://repo.or.cz/w/u-boot-openmoko/mini2440.git

使用方法参考http://code.google.com/p/mini2440/wiki/MiniBringup
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 97264
精华: 0
发帖: 3
金钱: 15 两
威望: 3 点
贡献值: 0 点
综合积分: 6 分
注册时间: 2013-10-17
最后登录: 2013-10-20
4楼  发表于: 2013-10-20 21:22
多谢斑竹大人指点!