2.第二个问题是关于Uboot的NandFlash问题,这个问题比较大,设计到DRAM问题、ARM11初始化问题,一般流程是使用NandFlash Control的Steppinstone,先执行启动代码,然后再从Nand搬运到DDR SDRAM中(ARM11一般都用DDR了,所以默认为DDR)。
3.Uboot退出,这个简单,直接把利用Uboot go命令就行了。直接赋值PC寄存器也可以。
1、nor flash工作原理:其核心就是读、写、擦除 *** 作,以及对应的命令 *** 作时序,见数据手册。(但是EN29LV160AB没有块 *** 作时序和命令,也没有提到有多少块)2、SST39VF1601移植参考文件是SST39VF160,在uboot/board/dave/common/flash.c 文件,但是EN29LV160AB移植参考文件也是可以用这个文件吗??
3、国嵌中SST39VF1601,移植修改如下
(1)先读取nor flash ID,即要吻合software ID Entry命令 *** 作序列。(在函数flash_init中,先修改函数flash_get_size())
(2)函数中不识别device ID为234BH的SST39VF1601的片子,所以在flash.c中添加相应的宏定义
(3)在函数flash_get_size()的device ID匹配中添加代码,使初始化时能够识别芯片
(4)建立flash的block分区的地址表,驱动按照每块64kb来建立分区的
(5)修改flash的擦除函数flash_erase(),实验时可以选择按块方式擦除
(6)修改法拉盛写函数write_word函数
(7)修改函数write_buff
(8)修改函数flash_print_info
(9)此时去编译uboot的时候会报一些错误,因为没有CFG_FLASH_ADDR0没有定义,参考include/configs/B2.h,在board/mini2440/flash.c添加宏定义的代码
(10)屏蔽原来flash有关的宏定义
(11)添加有关新的flash宏定义(CONFIG_ENV_ADDR定义了环境变量的起始地址为0x30000,环境变量的大小为64k)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)