我现在进行系统移植的开发板是根据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时,环境变量的大小是多少呢?在哪定义呢?
麻烦明白的人给我指点一下吧,不胜感激呢!
TEXT_BASE就是链接程序的起始地址,就是uboot代码烧写在Flash中的首地址
对于PPC8260系列来说,高端启动地址一般都是0Xfff0 0000
CFG_ENV_SECT_SIZE 通常是用来定义环境变量所占据的flash空间的大小的,但此处好像不是此意
系统只需要知道CFG_ENV_ADDR 就可以了,至于是多少,怎么算的,完全取决于你自己将环境变量保存在flash中的什么位置