天嵌 ARM开发社区

 找回密码
 注册
查看: 7658|回复: 14

在TQ2440上移植U-BOOT-1.1.6成功

[复制链接]
binxd 发表于 2010-5-7 08:54:20 | 显示全部楼层 |阅读模式
经过2周时间,终于在在TQ2440上成功移植U-BOOT-1.1.6。
我是初学者,在网上找了很多这方面的资料。我觉得《嵌入式Linux应用开发完全手册》第15章 u-boot移植对我帮助很大,另外分析TQ2440的u-boot源码也是很有必要的。
需要说明的是,这里所说的移植成功,是值打开板子电源时超级终端能打印出开机信息。
我觉得要达到这个目的,一下几点比较关键:
1。设置系统时钟
2。初始化串口
3。如果是从NAND FLASH启动u-boot,在启动的第一阶段必须修改源码的代码搬移部分,因为源码是默认从NOR FLASH搬移到SDRAM的
4。设置SDRAM
以上是我的一点总结,希望对大家有帮助,也希望高手给予指点。
 楼主| binxd 发表于 2010-5-7 08:57:50 | 显示全部楼层
呵呵,还想说明一点,如果是从NAND FLASH启动u-boot,要注意启动的第一阶段代码大小必须要小于4K,否则系统也是启动不了的。
回复

使用道具 举报

lansky 发表于 2010-5-8 22:23:38 | 显示全部楼层
呵呵,其实这个不用担心的,修改一下链接文件u-boot.lds,就可以避免这个问题——自己添加的nand flash搬移代码被编译到4KB空间之外……
回复

使用道具 举报

halimeimei 发表于 2010-5-9 09:04:33 | 显示全部楼层
楼主,可以把那个TQ2440的出厂的UBOOT的源码发给我一份吗,谢谢了!!
385757614@qq.com
回复

使用道具 举报

 楼主| binxd 发表于 2010-5-10 11:07:09 | 显示全部楼层
4# halimeimei
天嵌论坛里有出厂源码呀
回复

使用道具 举报

 楼主| binxd 发表于 2010-5-10 11:11:09 | 显示全部楼层
呵呵,其实这个不用担心的,修改一下链接文件u-boot.lds,就可以避免这个问题——自己添加的nand flash搬移代码被编译到4KB空间之外……
lansky 发表于 2010-5-8 22:23

我在连接脚本里添加了对nand flash的操作,使搬移代码包含在4k范围之内,但是即使是这样,如果不调整第一阶段代码的次序,在上电之后,u-boot是无法启动的。
回复

使用道具 举报

lansky 发表于 2010-5-11 09:07:20 | 显示全部楼层
我在连接脚本里添加了对nand flash的操作,使搬移代码包含在4k范围之内,但是即使是这样,如果不调整第一阶段代码的次序,在上电之后,u-boot是无法启动的。
binxd 发表于 2010-5-10 11:11


有这事?呵呵,我还真没遇到过……
回复

使用道具 举报

 楼主| binxd 发表于 2010-5-11 11:45:26 | 显示全部楼层
有这事?呵呵,我还真没遇到过……
lansky 发表于 2010-5-11 09:07

我也不知道为什么?
最开始的时候,把设置堆栈的代码放到搬移代码后面,此时,只有在nor flash 启动之后,然后把开关调到nand flash ,按复位键(不是电源开关),nand flash能启动u-boot;如果把开关调到nand flash ,通过开电源开关的方式启动u-boot,此时,屏幕为白色,超级终端没有打印任何信息。
只有把设置堆栈的代码放到搬移代码的前面,按电源开关,此时能够通过nand flash启动u-boot。
如果不是因为代码超出4K范围的话,我实在是想不出别的原因了,请知道的给个解释,谢谢!
回复

使用道具 举报

lansky 发表于 2010-5-11 21:05:21 | 显示全部楼层
8# binxd

其实我移植了好几个版本的u-boot,比如u-boot 1.1.6   u-boot-2009.03  u-boot-2009.08
u-boot-2009.11 以及最新的u-boot-2010.03,基本上没有出现因为nand flash搬移代码被编译到4K之外而启动不了的情况!前提是修改u-boot.lds,  .../lowlevel_init.o  (.text)      .../nand_read.o  (.text)。 如果从nor flash启动,那么u-boot自带的现成的代码搬移汇编代码就可以用,如果从nand flash启动,那么将从nor flash启动的代码搬移汇编代码注释掉,取而代之的是nand flash启动的代码搬移汇编代码。而堆栈设置,从u-boot的启动流程可以知道,都是在代码搬移后面的,也就是在u-boot启动的第一阶段stage1的最后一部分,最后就是调用第二阶段的C代码函数。

不过有可能跟移植方法有关吧!
回复

使用道具 举报

 楼主| binxd 发表于 2010-5-12 12:32:05 | 显示全部楼层
8# binxd

其实我移植了好几个版本的u-boot,比如u-boot 1.1.6   u-boot-2009.03  u-boot-2009.08
u-boot-2009.11 以及最新的u-boot-2010.03,基本上没有出现因为nand flash搬移代码被编译到4K之外而启动不了的 ...
lansky 发表于 2010-5-11 21:05

我的链接文件里没有加.../nand_read.o  (.text)
回复

使用道具 举报

lansky 发表于 2010-5-12 14:37:36 | 显示全部楼层
我的链接文件里没有加.../nand_read.o  (.text)
binxd 发表于 2010-5-12 12:32


因为在nand flash代码搬移的汇编代码中,调用了代码搬移的C函数nand_read_ll函数,而这个函数,一般存放在自己新建的nand_read.c文件中,所以需要 .../nand_read.o   (.text)  这样就不会出现你说的那种情况了。。。。
回复

使用道具 举报

泉茹钰 发表于 2010-5-12 16:19:39 | 显示全部楼层
我只是想回个帖罢了











这是一个很不错的黄色片,大力支持柳泉聊天室
回复

使用道具 举报

xinnuogu 发表于 2010-5-13 22:01:38 | 显示全部楼层
希望那个uboot移植成功的共享下,移植后的代码  +dm9000网卡的
回复

使用道具 举报

 楼主| binxd 发表于 2010-5-14 11:41:32 | 显示全部楼层
希望那个uboot移植成功的共享下,移植后的代码  +dm9000网卡的
xinnuogu 发表于 2010-5-13 22:01

如果只是希望看看移植后的代码,我觉得看天嵌出厂代码就可以了,只是有很多代码还看不懂,
特别是u-boot启动Linux内核的那段到现在都没弄明白,内存的映射地址是怎么安排的,要传递哪些Linux启动参数?
请高手指点!先谢谢了!
回复

使用道具 举报

hzxs533522 发表于 2010-8-31 11:11:30 | 显示全部楼层
我咋就没移植成功过,郁闷:(
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2025-6-17 23:03 , Processed in 2.044256 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表