主题 : 支持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: 9105
精华: 0
发帖: 95
金钱: 755 两
威望: 307 点
贡献值: 0 点
综合积分: 190 分
注册时间: 2009-09-17
最后登录: 2017-09-13
1楼  发表于: 2009-11-07 13:20

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

已验收 要是能把移植过程也贴出来那该多好啊!
级别: 新手上路
UID: 10552
精华: 0
发帖: 2
金钱: 20 两
威望: 10 点
贡献值: 0 点
综合积分: 4 分
注册时间: 2009-11-08
最后登录: 2009-12-03
2楼  发表于: 2009-11-08 10:55

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

支持 谢谢分享
级别: 圣骑士
UID: 9221
精华: 0
发帖: 376
金钱: 2110 两
威望: 539 点
贡献值: 0 点
综合积分: 752 分
注册时间: 2009-09-22
最后登录: 2016-07-04
3楼  发表于: 2009-11-25 17:07

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

这个用ARM-LINUX-GCC 4.3.2可出编译吗
一起学习,一起进步
级别: 新手上路
UID: 11568
精华: 0
发帖: 4
金钱: 40 两
威望: 20 点
贡献值: 0 点
综合积分: 8 分
注册时间: 2009-12-12
最后登录: 2010-05-09
4楼  发表于: 2009-12-12 20:37

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

楼上的,可以编译出来!
还有个问题就是,和PC网线连接的时候,连接总是断开的,只有在有数据的时候,比如在tftp,ping等的时候连接才建立。
这样ping就出现问题了,ping不通主机,因为ping的默认时间太短,刚建立了连接就提示ping不通!希望谁能告诉我一下,怎么改进,让连接一直连上,或是延迟ping的时间。不知道在哪儿改!谢谢了
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
贡献值: 71 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
5楼  发表于: 2009-12-12 22:55

 回 5楼(lqs51) 的帖子

http://www.aiothome.net/read.php?tid-2873-fpage-0-toread--page-4.html
事实上你不是一定要搞定这个ping功能,只要基于网络的应用,比如tftp,可以正常工作就可以了。
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 新手上路
UID: 11568
精华: 0
发帖: 4
金钱: 40 两
威望: 20 点
贡献值: 0 点
综合积分: 8 分
注册时间: 2009-12-12
最后登录: 2010-05-09
6楼  发表于: 2009-12-13 11:08

 回 6楼(kasim) 的帖子

呵呵,谢谢斑竹啦~
级别: 新手上路
UID: 11568
精华: 0
发帖: 4
金钱: 40 两
威望: 20 点
贡献值: 0 点
综合积分: 8 分
注册时间: 2009-12-12
最后登录: 2010-05-09
7楼  发表于: 2009-12-13 11:25

 回 6楼(kasim) 的帖子

斑竹,刚刚我看了下源码,发现CONFIG_YAFFS2给注解掉了,难到是这个还不支持yaffs,如果要烧的话还要自己改代码~?
级别: 新手上路
UID: 11568
精华: 0
发帖: 4
金钱: 40 两
威望: 20 点
贡献值: 0 点
综合积分: 8 分
注册时间: 2009-12-12
最后登录: 2010-05-09
8楼  发表于: 2009-12-13 11:30

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

呵呵,把补丁下下来发现有YAFFS的!~在mini2440.h中看漏了几项~~囧
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
贡献值: 71 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
9楼  发表于: 2009-12-13 11:36

 回 8楼(lqs51) 的帖子

从作者的博客描述来看,这个U-Boot应该是支持Yaffs文件系统镜像的烧写的(由common/cmd_nand.c中ENABLE_CMD_NAND_YAFFS条件编译)。
建议你从作者的GITHUB项目上(http://github.com/tekkamanninja/U-boot-2009.08_tekkaman)获取这个U-Boot最新源代码,那包含了目前为止所有发现问题的补丁。
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."