uboot1.3.2移植记录2

第二阶段  可启动uboot但是没有nand命令
在cofig_cmd_all.h中添加
#define CONFIG_CMD_NAND  //nand
在config_cmd_default.h中添加
#define CONFIG_CMD_NAND  //nand

下面一段代码是昨天移植拷贝代码时改写的,这时候就和cmd_nand.c中代码冲突了,那就改回成原来的,只是在start.s中加入nand寄存器的定义。
把my2410.h中的
#define bNAND_CTL(Nb)   __REG(0x4e000000 + (Nb))
#define NFCONF          bNAND_CTL(0x00)
#define NFCMD       bNAND_CTL(0x04)
#define NFADDR      bNAND_CTL(0x08)
#define NFDATA      bNAND_CTL(0x0c)
#define NFSTAT      bNAND_CTL(0x10)
#define NFECC       bNAND_CTL(0x14)
移动到start.s中,
取消s3c2410.h和s3c24x0.h的注释
在my2410.h中
添加
#define NAND_MAX_CHIPS 1
#define CFG_MAX_NAND_DEVICE 1
#define CFG_NAND_BASE 0x33F80000

此时烧录后可以操作nand的读写
但是还是不能设置环境变量

设置环境变量命令在cmd_nvedit.c中定义
然后调用env_nand.c中代码,但是要实现这个功能必须修改my2410.h中宏定义,默认选择的是env_flash.c中的函数,
修改my2410.h中

//#define CFG_ENV_IS_IN_FLASH 1
#define CFG_ENV_IS_IN_NAND 1
#define CFG_ENV_SIZE  0x10000 /* Total Size of Environment Sector */
#define CFG_ENV_OFFSET      (0x80000-0x4000) /* Total Size of Environment Sector */
这是环境变量写入的位置,对于这个offset的计算还不太明白

这时命令列表读不出来了

分析start.s,最后进入C函数start_armboot(在lib_arm/board.c)中定义
函数中的nand_init()时调用的drives/mtd/nand.c中的函数打印nand的大小
设置环境变量在env_common.c中env_relocate

现在只要在my2410.h中加入了
//#define CFG_ENV_IS_IN_FLASH 1
#define CFG_ENV_IS_IN_NAND 1
#define CFG_ENV_SIZE  0x10000 /* Total Size of Environment Sector */
#define CFG_ENV_OFFSET      0x40000 /* Total Size of Environment Sector */

最后发现编译器不对,开始用的3.3.2,改为4.3.2就成功了。


 

你可能感兴趣的:(uboot1.3.2移植记录2)