(原文由tekkaman发表在
http://blog.chinaunix.net/u1/34474/showart.php?id=2217066)
u-boot-2010.03 for mini2440 Source release
在前几天完成了USB 下载的移植后,决定趁热打铁,直接搞定u-boot-2010.03针对mini2440的移植。原以为只要一个晚上就可以搞定,但是移植完了之后出现了一些问题,最后到了周日放假才彻底搞定。
出现问题的原因是原先从别的地方移植过来的LCD、MMC、USB下载等功能实现代码都不规范,操作寄存器的时候只是简单的用“=”来读取和赋值。这样做是很危险的,有可能这次编译出的程序可以用,但是下一次稍微改了别的地方,就会使得一些功能出现问题。所有的操作寄存器都必须使用规范的readl、 writel等等宏来实现,具体的原因我会再写一篇blog来记录。
所以这次我对LCD、MMC、USB下载等功能实现代码进行修整,把这些不规范的代码都改了过来。
此次的
u-boot-2010.03-tekkaman所实现的功能和原来的
U-boot-2009.11_tekkaman最后一个github更新的功能相同.
特性归纳如下:
1、同时支持S3C2410和S3C2440 (2410没板测试) 2、支持串口 xmodem协议 (参考www.100ask.net) 3、支持网卡芯片 DM9000 4、支持不同NAND Flash的读写,并自动识别所使用的nand flash是512B/page还是2KB/page,实现在64MB\128MB\256MB\1GB NAND flash的启动。 5、支持IIC接口EEPROM的操作,并可保存ENV(参考hiboy的http://www.armchina.cn/article.asp?id=70) 6、自动识别S3C2440的启动方式是Nor boot还是Nand boot,调用不同的自拷贝程序,实现不论是Nor boot还是Nand boot,都可以烧写同一个bin文件。(nor flash为SST39VF1601) 7、支持烧写yaffs/yaffs2文件系统映象. 8、添加支持读取SD卡中的FAT32文件系统,现在U-boot已经支持从U盘或SD卡上启动。 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 下载!
源代码下载步骤:
$git clone git://github.com/tekkamanninja/u-boot-2010.03-tekkaman.git
关于GIT的用法,参考
http://www.aiothome.net/read.php?tid-5266.html编译源代码: (使用友善之臂提供的4.3.2 EABI 交叉编译工具链)
$cd u-boot-2010.03-tekkaman
$export PATH=$PATH:/usr/local/arm/4.3.2/bin
$make ARCH=arm CROSS_COMPILE=/usr/local/arm/4.3.2/bin/arm-linux- mini2440_config
$make ARCH=arm CROSS_COMPILE=/usr/local/arm/4.3.2/bin/arm-linux- all
最终生成的u-boot.bin可以通过supervivi菜单项里的"[a] Absolute User Application"选项 + DNW工具下载到NAND Flash中。
注意:如果使用其他工具链编译该uboot源代码,请先打上下面的补丁,以确保uboot使用的libgcc.a是可以在mini2440上正常运行的:
use_own_libcc_a.patch.gz (1 K) 下载次数:585 复制代码- From a65ccf5996ae50731b6fbe3ca8a8c98e4c874ca0 Mon Sep 17 00:00:00 2001
- From: Alex Ling <kasimling@gmail.com>
- Date: Wed, 5 May 2010 11:37:20 +0800
- Subject: use uboot's own libgcc for better compatibility
- ---
- board/tekkamanninja/mini2440/config.mk | 4 ++++
- 1 files changed, 4 insertions(+), 0 deletions(-)
- diff --git a/board/tekkamanninja/mini2440/config.mk b/board/tekkamanninja/mini2440/config.mk
- index dc59d08..eb4f625 100644
- --- a/board/tekkamanninja/mini2440/config.mk
- +++ b/board/tekkamanninja/mini2440/config.mk
- @@ -21,3 +21,7 @@
- # download area is 3300'0000
- TEXT_BASE = 0x33F80000
- +
- +#
- +#for better toolchain compatibility, use own libgcc.a
- +USE_PRIVATE_LIBGCC=yes
- --
- 1.6.3.3
|
该u-boot目前在128MB NAND Flash上的mini2440上验证过,欢迎各位提供在其他NAND Flash配置的板子上运行的结果反馈,谢谢!
下面是该版本uboot启动信息,供参考:
U-Boot 2010.03-dirty (May 05 2010 - 11:20:07)
modified by tekkamanninja (
tekkamanninja@163.com)
Love Linux forever!!
I2C: ready
DRAM: 64 MB
Flash: 2 MB
NAND: 128 MiB
Video: 240x320x16 20kHz 62Hz
In: serial
Out: serial
Err: serial
USB slave is enable!
Net: dm9000
U-Boot 2010.03-dirty (May 05 2010 - 11:20:07)
modified by tekkamanninja
(
tekkamanninja@163.com)
Love Linux forever!!
Hit any key to stop autoboot: 0
[u-boot@MINI2440]#
[u-boot@MINI2440]#
[ 此帖被kasim在2010-05-05 12:09重新编辑 ]