主题 : 新手移植u-boot的一些建议 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 43793
精华: 0
发帖: 31
金钱: 155 两
威望: 31 点
贡献值: 0 点
综合积分: 62 分
注册时间: 2011-04-19
最后登录: 2017-09-13
楼主  发表于: 2011-11-02 13:43

 新手移植u-boot的一些建议


          经过将近两个星期的时间,总算移植好了一个勉强能支持基本功能的u-boot了,泪流满面。在刚刚开始移植uboot时走了很多弯路,不过坚持下来,也算是苦中有乐!
     一开始我是照着友善的移植Uboot手册上改代码,虽然也看了前半部分的uboot执行流程,但是到了改代码的时候还是很多东西不懂,就照着做,出现各种编译错误,慢慢改,一路下来,最后满怀期待的上电,超级终端里却无我所期待的字样。因为对很多代码不懂,也不知道到底是哪里出了错,甚是迷茫。
     经过几次的尝试,还是没有得到最后想要的结果,几乎就要放弃。冷静下来,好好想了想,觉得自己的方法就不对,于是从头再把uboot的执行流程重新仔细学了一遍,大家在学start.S这个文件时基本不会有什么问题,建议大家可以在这个文件下先不用实现nand flash相关部分代码,只要能实现将代码从nor flash搬运即可(其实从nor flash搬运到sdram相关代码Uboot源码已经实现,就是relocate标号),关键的是跳转到lib_arm/board.c这个文件里的函数后就不知道是什么情况了,其实它就是执行一系列的初始化,每个函数基本初始化一个相应的部分,而且这些函数能不能执行都是由我们在include/configs/mini2440.h这个头文件中定义的所有宏来决定的,因此我根据自己的经历建议大家在确保start.S这个文件正确执行的前提下先使得我们自己的uboot执行board_init这个函数,这个函数里的一些修改比较简单,能运行后再使我们的serial_init函数能运行正确,其余board.c下面的很多初始化的函数的不用管,都给注释掉。因为这样,我们的Uboot如果能运行正确的话,我们是可以在串口看到一些相应的基本信息,这样就有助于我们的观察了,就算以后加入什么功能,哪里出了问题,我们也可以用printf输出到串口进行观察。
     接下来就是一步步完善uboot功能的时刻了,大家可以根据自己实际的需求去增加一些功能,其实主要就是一些初始化(主要在比如实现从nand flash里面启动,这个你可以照着友善的手册(而且使用他们的nand_read.c这个文件);又比如你要实现网络,在mini2440.h里面增加dm9000相关的宏,然后在board.c里面将cs8900相关初始化的代码更换成dm9000的代码,uboot支持dm9000驱动,所以比较简单,当然,完善Uboot的功能可以照着友善移植uboot手册,关键是要理解相关宏的作用。
     如果这样坚持下来,相信你对Uboot的执行流程会有一个真正比较深刻的理解,还是这个道理,从简单过渡到复杂,最后移植完成后最好回头把相关的部分重新温习一下,这样相信以后就算我们在工作中遇到新的板子,我们应该也会知道从哪里开始,怎么去深入。
     当然,这只是我的一些个人建议,每个人都有各自不同的体会,还望大家一起交流。qq :394819871
级别: 新手上路
UID: 57980
精华: 0
发帖: 5
金钱: 25 两
威望: 5 点
贡献值: 0 点
综合积分: 10 分
注册时间: 2011-11-01
最后登录: 2012-02-07
1楼  发表于: 2011-11-02 15:22
楼主辛苦了!

确实,方法很重要。我是兴趣自学,几年前尝试很久,最后放弃,现在重新捡起来,发现很多东西实际很明了,是自己在原地乱转,关键是静下来找方法
级别: 新手上路
UID: 43793
精华: 0
发帖: 31
金钱: 155 两
威望: 31 点
贡献值: 0 点
综合积分: 62 分
注册时间: 2011-04-19
最后登录: 2017-09-13
2楼  发表于: 2011-11-03 10:55

 回 1楼(alexbird) 的帖子

鹰击长空
级别: 新手上路
UID: 43426
精华: 0
发帖: 26
金钱: 130 两
威望: 26 点
贡献值: 0 点
综合积分: 52 分
注册时间: 2011-04-16
最后登录: 2015-09-20
3楼  发表于: 2011-11-15 21:22
讲的好呀。
级别: 侠客
UID: 19229
精华: 0
发帖: 88
金钱: 455 两
威望: 91 点
贡献值: 0 点
综合积分: 176 分
注册时间: 2010-04-17
最后登录: 2021-10-20
4楼  发表于: 2011-11-24 18:24
很有道理
级别: 侠客
UID: 7944
精华: 0
发帖: 76
金钱: 400 两
威望: 99 点
贡献值: 0 点
综合积分: 152 分
注册时间: 2009-08-03
最后登录: 2018-02-08
5楼  发表于: 2011-12-02 21:01
支持下呀好方法希望继续QQ聊中
级别: 侠客
UID: 7944
精华: 0
发帖: 76
金钱: 400 两
威望: 99 点
贡献值: 0 点
综合积分: 152 分
注册时间: 2009-08-03
最后登录: 2018-02-08
6楼  发表于: 2012-02-16 16:59
兄台讲得很有道理,学习,跟进中,向你学习学习
一生只为研究嵌入式方向的知识!永远支持ARM板!
级别: 侠客
UID: 59072
精华: 0
发帖: 81
金钱: 410 两
威望: 82 点
贡献值: 0 点
综合积分: 162 分
注册时间: 2011-11-18
最后登录: 2013-10-24
7楼  发表于: 2013-01-04 16:46
学习中…… 多多指教……
King!
级别: 新手上路
UID: 92594
精华: 0
发帖: 1
金钱: 5 两
威望: 1 点
贡献值: 0 点
综合积分: 2 分
注册时间: 2013-06-03
最后登录: 2013-06-04
8楼  发表于: 2013-06-04 08:56
楼主说的有道理
级别: 新手上路
UID: 98135
精华: 0
发帖: 49
金钱: 245 两
威望: 49 点
贡献值: 0 点
综合积分: 98 分
注册时间: 2013-11-17
最后登录: 2014-07-21
9楼  发表于: 2013-11-29 15:58
lz 说得很对我也开始自己动手移植了两三天了,各种困难