上一节 我们实现了支持nand flash 启动(点击查看),并不代表uboot此时可以对nand进行读写操作,只是可以把uboot烧写到nand然后上电后,对代码 进行重定位,实现了nand启动。这一节我们加入对nor 的支持,使uboot可以识别出nor flash 并可以读写nor flash。
(1)查看上一节最后的报错:
(2)搜索Flash:查看代码:
程序会陷入死循环,并打印出错误信息。
(3)找不到不卡死,继续往下走:修改为如下
修改是为了 从nand启动时不在此处卡死。
(4)看一下这个 怎么才能识别出nor flash
if (!flash_detect_legacy(cfi_flash_bank_addr(i), i))
flash_get_size(cfi_flash_bank_addr(i), i);
size += flash_info[i].size;
(5)定义打印信息
(10)拿去编译
usb 1 30000000
protect off all
erase 0 7ffff
cp.b 30000000 0 80000
(11)搜索下JEDEC PROBE:
打印设备ID并对比
加入所使用的nor flash的特性信息
(12)更新:
(13)解决:
搜索ERROR: too many flash sectors
重新编译:
(14)重新编译下载
(15)没有重新设置栈
(16)更新文件,重新编译一下:
usb 1 30000000
protect off all
erase 0 7ffff
cp.b 30000000 0 80000
zip -r -q -o u-boot-2012.04.01.zip /work/system/u-boot-2012.04.01 (压缩备份)
将目录打包成一个文件,-r 表示递归打包包含子目录的全部内容,-q 表示安静模式,-o 表示输出文件,其后紧跟打包输出文件名
修改成功,到此uboot可以实现从nor nand启动,并且可以正确识别出nor flash的型号,并可以对nor 进行读写操作。