u-boot移植随笔(5):移植过程问题及解决

这个文章主要记录移植过程中出现的问题及解决方法,但不涉及问题背景。

1、

unkown FLASH on Bank 0
A:芯片ID不正确,找啊找啊(我使用SI),终于在M5253DEMO.h这个文件中找到了FLASH_SST6401B这个宏的定义,在flash.h中再定义一次,就OK了。但不知为何是0x200,查Datash也没找到,但既然解决了问题,就不深入追究了。

2、

某次编译时,出现dereferencing pointer to incomplete type错误
A:指针所指向的那个类型是不完全的,即只声明了一个类型,但没有定义。——好比拿了个吃饭的碗,都知道是吃饭,但没饭怎么吃啊?解决办法,买米做饭就有饭吃了。

3、小问题

A:在头文件中添加CONFIG_CMDLINE_EDITING和CONFIG_AUTO_COMPLETE就可以实现命令的自动补齐了,去除CONFIG_SYS_LONGHELP宏定义可以减少映像文件大小,不过就不能显示详细的帮助信息了,这个根据实际情况使用。

4、

保存环境变量提示end address not on sector boundary:
A:含义很明白了,就是结束的地址不是扇区的整数倍的地址(因为人家擦写就是以sector或block来进行的),我将环境变量大小那个宏改为0x10000就可以了(根据实际情况而定)。

5、识别不出128MB的nand flash

解决:2440与2410对nand flash的控制不完全相同,需要修改,参考网上资料修改即可。

6、

移植yaffs2时出现:

1
2
3
4
5
Failed to execute /linuxrc.  
Attempting defaults...
Kernel panic - not syncing: No init found. 
Try passing init= option to kernel.
See Linux Documentation/init.txt for guidance.

解决:nand flash不支持yaffs2格式文件系统的烧写,修改u-boot,添加对yaffs2支持即可。