出现问题的原因是原先从别的地方移植过来的LCD、MMC、USB下载等功能实现代码都不规范,操作寄存器的时候只是简单的用“=”来读取和赋值。这样做是很危险的,有可能这次编译出的程序可以用,但是下一次稍微改了别的地方,就会使得一些功能出现问题。所有的操作寄存器都必须使用规范的readl、writel等等宏来实现,具体的原因我会再写一篇blog来记录。
所以这次我对LCD、MMC、USB下载等功能实现代码进行修整,把这些不规范的代码都改了过来。
下面是针对MINI2440编译好的bin文件,可在MINI2440上直接使用。
![]() |
|
特性归纳如下:
1、同时支持S3C2410和S3C2440 (2410没板测试) 5、支持IIC接口EEPROM的操作,并可保存ENV(参考hiboy的http://www.armchina.cn/article.asp?id=70) 8、添加支持读取SD卡中的FAT32文件系统,现在U-boot已经支持从U盘或SD卡上启动Linux 内核。 9、添加支持OpenOCD导入内存启动,其实就是在一切flash识别之前,检测自己是否在内存,如果已在内存就跳过自拷贝程序。 10、支持NEC 3.5寸LCD输出console信息和BMP图片、logo。(参考openmoko) 11、支持使用DNW工具,通过USB device口进行文件传输。(参考了 hugerat.cublog.cn 和 Apollo5520.cublog.cn 两个高手的移植) |
完整的源代码可以到: http://github.com/tekkamanninja/u-boot-2010.03-tekkaman 下载!
为了那些不方便在github下载的朋友,下面在放一个补丁:
![]() |
|
在mini2440中,由于bin文件大小已经大于了0x40000,所以我也修改了ENV的 OFFSET。现在的分区是这样的: U-boot :0x0~0x60000 u-boot参数区 : 0x60000~0x80000 内核和文件系统 :0x80000之后 |
到这里,U-boot该有的功能基本上都有了,但是还有一点遗憾的是还没实现USB键盘的功能。
USB下载使用方法: 在ubuntu下通过USB对u-boot传输文件(mini2440)