主题 : 支持64M/128M/256M/1G mini2440的U-boot现已发布(感谢Tekkaman  Ninja提供) 复制链接 | 浏览器收藏 | 打印
这个阶段正是我事业的上升期,我怎么能走得开呢?
级别: 精灵王
UID: 3197
精华: 3
发帖: 770
金钱: 6995 两
威望: 5398 点
贡献值: 21 点
综合积分: 1600 分
注册时间: 2008-12-30
最后登录: 2010-12-31
楼主  发表于: 2009-11-03 16:55

 支持64M/128M/256M/1G mini2440的U-boot现已发布(感谢Tekkaman  Ninja提供)

管理提醒: 本帖被 qq2440 从 Linux技术交流专区 移动到本区(2010-02-08)
(原文由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

复制代码
  1. From a65ccf5996ae50731b6fbe3ca8a8c98e4c874ca0 Mon Sep 17 00:00:00 2001
  2. From: Alex Ling <kasimling@gmail.com>
  3. Date: Wed, 5 May 2010 11:37:20 +0800
  4. Subject: use uboot's own libgcc for better compatibility
  5. ---
  6. board/tekkamanninja/mini2440/config.mk |    4 ++++
  7. 1 files changed, 4 insertions(+), 0 deletions(-)
  8. diff --git a/board/tekkamanninja/mini2440/config.mk b/board/tekkamanninja/mini2440/config.mk
  9. index dc59d08..eb4f625 100644
  10. --- a/board/tekkamanninja/mini2440/config.mk
  11. +++ b/board/tekkamanninja/mini2440/config.mk
  12. @@ -21,3 +21,7 @@
  13. # download area is 3300'0000
  14. TEXT_BASE = 0x33F80000
  15. +
  16. +#
  17. +#for better toolchain compatibility, use own libgcc.a
  18. +USE_PRIVATE_LIBGCC=yes
  19. --
  20. 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重新编辑 ]
级别: 新手上路
UID: 11385
精华: 0
发帖: 8
金钱: 40 两
威望: 8 点
贡献值: 0 点
综合积分: 16 分
注册时间: 2009-12-05
最后登录: 2010-11-10
1楼  发表于: 2010-08-23 14:36

 Re:支持64M/128M/256M/1G mini2440的U-boot现已发布(感谢Tekkaman  Ninja提供)

友善之臂mini2440的开发板的内核不是不支持uboot的吗,手册上是这样说的,我也是根据Tekkaman Ninja提供的步骤移植了uboot,最终生成的u-boot.bin也是通过supervivi菜单项里的"[a] Absolute User Application"选项 + DNW工具下载到NAND Flash中。可是不行哦,启动不了了,原来nor启动的超级终端的supervivi都不能用了,需要重新安装就是。我用的是arm-linux-gcc4.3.2交叉编译工具编译的。请问知道什么原因吗