uboot中环境变量的问题

ysbqw   2008-4-10 16:19 楼主
我现在进行系统移植的开发板是根据MPC8260ADS做的,用的是uboot1.1.4的引导程序,MPC8260ADS.h中关于环境变量的定义我有点不理解,
#ifndef CFG_RAMBOOT
#  define CFG_ENV_IS_IN_FLASH        1
#  define CFG_ENV_SECT_SIZE        0x40000      
#  define CFG_ENV_ADDR                (CFG_MONITOR_BASE + CFG_ENV_SECT_SIZE)
#else
#  define CFG_ENV_IS_IN_NVRAM        1
#  define CFG_ENV_ADDR                (CFG_MONITOR_BASE - 0x1000)
#  define CFG_ENV_SIZE                0x200
#endif /* CFG_RAMBOOT */
其中
#define CFG_MONITOR_BASE    TEXT_BASE
#define CFG_MONITOR_LEN                (256 << 10)        /* Reserve 256 kB for Monitor        */
那么我想问各位一下,TEXT_BASE是什么?它应该和存放uboot的flash的起始地址相同吗?
本系统当然是not define CFG_RAMBOOT了,我感觉系统的定义是把flash的前256kB留给了uboot,似乎这个空间之后就定义用来存放环境变量了。那可 CFG_ENV_SECT_SIZE是什么意思呢?
当定义CFG_ENV_IS_IN_NVRAM时,定义了环境变量的大小CFG_ENV_SIZE,那么当CFG_ENV_IS_IN_FLASH时,环境变量的大小是多少呢?在哪定义呢?

麻烦明白的人给我指点一下吧,不胜感激呢!

回复评论 (4)

TEXT_BASE就是链接程序的起始地址,就是uboot代码烧写在Flash中的首地址
对于PPC8260系列来说,高端启动地址一般都是0Xfff0 0000

CFG_ENV_SECT_SIZE 通常是用来定义环境变量所占据的flash空间的大小的,但此处好像不是此意
系统只需要知道CFG_ENV_ADDR 就可以了,至于是多少,怎么算的,完全取决于你自己将环境变量保存在flash中的什么位置
点赞  2008-4-11 23:20
谢谢楼上的回答!
点赞  2008-4-14 16:17
t听说回帖是种没得,我试试!
点赞  2008-8-29 10:10
没有看懂啊~~~~~
点赞  2009-8-25 15:43
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复