Chinaunix首页 | 论坛 | 博客
  • 博客访问: 630902
  • 博文数量: 1008
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 5175
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-31 09:44
文章分类
文章存档

2012年(1008)

我的朋友

分类:

2012-08-01 10:37:37

u-boot-2009.08 for mini2440 patch release


已经在github上建立了源代码管理,以后的所有源代码将在





有好一段时间没有弄u-boot了,而u-boot-2009.06的我也没时间移植了,直接移植u-boot-2009.08了。由于很多网友发邮件问128MB的NAND Flash版本的mini2440的U-boot移植,而我手边又没有128MB的板子,所有无法帮忙。
现在我入手了一块128MB的NAND Flash版本的mini2440,我以最快的速度移植了uboot最新的稳定版。并将补丁公布,为了网友更好地分析,我按其大致的作用将补丁拆分为了一个一个的模块(时间有限,不一定准确,请见谅)。

个人认为,u-boot-2009.08比起u-boot-2009.03有了明显进步的的地方是:代码的放置更加合理规范,程序的结构也更加合理了。在ubuntu下,大家可以使用Beyond Compare来对比两个版本的不同。

这次移植的u-boot-2009.08,在具备我上次发布的u-boot-2009.03补丁的所有特性的基础上,增加了一下两个重要的特性:

1、自动识别mini2440所使用的nand flash是512B/page还是2KB/page,调用不同的自拷贝程序,实现不论是64MB版本的mini2440,还是128MB的,都可以在Nand中烧写同一个bin文件。

2、自动识别S3C2440的启动方式是Nor boot还是Nand boot,调用不同的自拷贝程序,实现不论是Nor boot还是Nand boot,都可以烧写同一个bin文件。

3、添加支持OpenOCD导入内存启动,其实就是在一切flash识别之前,检测自己是否在内存,如果已在内存就跳过自拷贝程序。

4、添加支持读取SD卡中的FAT32文件系统,现在Uboot已经支持从U盘或SD卡上启动了。
所以,此U-boot版本可以烧写在mini2440的两个nand flash版本的任何flash上,只要烧写在存储器的0地址就可以了。

这两个特性实现的原理请看:在U-boot下实现自动识别启动Flash的原理

(1)以下是补丁(不支持OpenOCD导入内存启动):
文件:u-boot-2009.08_tekkaman_patch.tar.bz2
大小:25KB
下载:下载

(2)以下是补丁(支持OpenOCD导入内存启动):
文件:u-boot-2009.08_tekkaman_patch_openocd.tar.bz2
大小:25KB
下载:下载

导入步骤:现连接好硬件,并启动OpenOCD,参考《关于OpenOCD的安装和配置(以mini2440+OpenJTAG为例)》

然后使用telnet登录,并将bin文件导入内存0x33f80000处,并从此处启动。

$ telnet localhost 4444
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Open On-Chip Debugger
> poll
background polling: on
TAP: s3c2440.cpu (enabled)
target state: running
> halt
target state: halted
target halted in ARM state due to debug-request, current mode: Supervisor
cpsr: 0x400000d3 pc: 0x33f8a914
MMU: disabled, D-Cache: enabled, I-Cache: enabled
> arm920t cp15 2 0
2: 00000000
> resume
> halt
target state: halted
target halted in ARM state due to debug-request, current mode: Supervisor
cpsr: 0x400000d3 pc: 0x33f8a914
MMU: disabled, D-Cache: disabled, I-Cache: disabled
> load_image u-boot.bin 0x33f80000
256364 bytes written at address 0x33f80000
downloaded 256364 byte in 9.167877s
> resume 0x33f80000



(3)以下是支持读取SD卡中的FAT32文件系统补丁(支持OpenOCD导入内存启动)

文件:u-boot-2009.08_tekkaman_patch_MMC.tar.bz2
大小:32KB
下载:下载
说明:此补丁在添加了SD卡支持以外,还替换了nand boot的代码自拷贝程序,使用了更为合理的代码。这些代码的来源: ,在此感谢 buserror@gmail.com !! (同时支持读取U盘的FAT32

(4)以下是在完成上面更新后,使用了新的Nor boot 和Nand boot检测方法的补丁:
文件:u-boot-2009.08_tekkaman_patch_bootfix.tar.bz2
大小:32KB
下载:下载

(5)修正了烧写yaffs2镜像到128MB nand flash 会重启出错的问题。网友“李辉”提出BUG,并验证修改后的代码可用,在此表示感谢!
源码下载地址:




补丁包中包含了一个我自己写的批量打补丁的脚本(我不会写脚本,写得不好,请见谅),
只要将解开的源码、脚本和补丁放在同一文件夹下,运行:

./patch.sh install

即可,想删除补丁的话,运行:

./patch.sh uninstall

以下是可以直接使用的bin文件(支持OpenOCD导入内存启动SD卡、使用新的Nor boot 和Nand boot检测方法、修正烧写yaffs2镜像烧写问题)

文件:u-boot.bin.tar.bz2
大小:120KB
下载:下载
以下是开机效果图:

至于开机logo,是直接编译进程序的,更改logo的制作方法请看:U-boot开机logo的制作方法

(停止代码更新,请使用最新的20010.03
阅读(152) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~