本文为aggresss原创,使用GPL发布,可以自由拷贝,转载。但转载请保持文档的完整性,并注明原作者及原链接。内容可任意使用,但对因使用该内容引起的后果不做任何保证 。
作者:aggresss@gmail.com
一、说说U-Boot 的学习价值
1.U-Boot在以下几个方面编译组织方式上接近于Linux_Kernel:
(1).平台相关代码的组织方式;例如arch目录
(2).平台无关代码的组织方式;例如usb,mtd,net相关的架构都是Linux_Kernel的原版拷贝;
(3).编译结构的组织方式;例如kconfig结构,script目录下的所有代码只是Linux_Kernel经过简单修改而成;
所以对U-Boot代码有了深刻的理解和掌握后,对于敲开Linux_Kernel的大门就是水到渠成的事情。如果Linux_Kernel是所大学,那U-Boot就像预科班,对于从头学起的小白掌握好U-Boot至少可以降低被Linux_Kernel超级陡峭的学习曲线直接放倒的概率。
2.U-Boot对于了解硬件平台结构和协议结构有很大的帮助,主要是它的特殊地位决定的,因为它继不像Linux_Kernel那样增加了进程和文件的概念让学习目标变得错综复杂,也不像普通的Hello_World程序那样简陋到不足以看成是一个工程,所以俺主观认为U-boot是嵌入式学习的绝佳项目,这里拿自己上学时的几个两个极端的情况来举个例子。
第一个例子,记得大三那年暑假,同学们都在忙着考研,可我却没有这个心情,在充分的享受了一个安静的下午之后,我决定利用假期两个月时间通读Linux_Kernel代码,然后download the kernel ,然后 tar -zvxf xxxx -C xxxx , 然后 vim ........ 然后可想而知,瞪眼睛看了两天之后,各种蒙圈,各种无奈,最后一个假期过去了好像没有任何进展。
第二个例子,刚学c语言的时候,经典的谭老师的那本c语言的书看的书皮都没了,厕所里,床头上,手不释卷的说,C语言那时是必修课,偶还是学院的最高分91好像是,那时很天真,认为Linux_Kernel是C写的,那C语言学好了,掌握Linux_Kernel岂不是轻而易举的事,后来发现不对,还没学数据结构,然后狂啃数据结构天书。但是当数据结构掌握熟练之后发现,还是不是那么回事,还是很蒙圈。这里我也吐槽一下我们的教科书,简直就是个Hello_World大百科,很少有实际项目在里面。
上面的两个例子如果目标都是为了进入Linux_Kernel的大门,那显然是两个极端,也可能是很多人都会走的弯路。计算机的很多东西都是想通的,比如以Java为生的人,在打开Java任督二脉的那一刻,多数都是在改别人的已经搭好架构且并不非常复杂的代码时瞬间脑洞打开,然后 尤里卡!ε?ρηκα ! ,然后从此迈进Java大门。所以对于Kernel级别的嵌入式开发,U-Boot是一个不错的架构,只要你有足够的耐心,它是一个入门级的不二选择。
二、关于U-Boot 的版本选择
首先推荐到
阅读以下U-Boot的官方wiki这里的信息虽然是英文,但都比较靠谱,我们应该感谢它不是德文的。
UBOOT发展到现在,架构已经发生了不少的变化。我当时是从1.1.6版本开始接触的。不过发展到现在,UBOOT经历了不少改进,变得越来越标准,越来越贴近Linux ,U-Boot 的创始人 Wolfgan Denk 就是Linux的铁粉,所以他会带着U-Boot无限靠近Linux_Kernel.
1.版本命名方式的变化
版本号变化:2008年8月及以前按版本号命名:u-boot-1.3.4.tar.bz2(2008年8月更新) ; 2008年8月以后均按日期命名:u-boot-2011.06.tar.bz2(2011年6月更新)
2.目录结构的变化
U-Boot目录结构主要经历过2次变化,U-Boot版本第一次从u-boot-1.3.2开始发生变化,主要增加了api的内容;变化最大的是第二次,从 u-boot-2010.06 版本开始把体系结构相关的内容合并,原先的cpu与lib_arch内容全部纳入arch中,并且其中增加inlcude文件夹;分离出通用库文件lib。
3.编译方式的变化
2014.10开始,完全使用 Linux的Kbuild体系对U-Boot进行编译管理,也就是所有的配置都在.config文件里体现。
还有很多具体的变化这里不详述了,可以使用 git log 或者 make CHANGELOG 查看,以后的文章如果没有特殊声明都是 u-boot-2014.04 的版本,因为这个版本既不是很新也不是很久,网上讨论的会比较多,相关的中文文档也相对比较全,有利于大家共同讨论。
二、关于U-Boot 的学习环境
还是说一下我写这篇文档时的环境吧,Linux系统里个性是首要的,谁爱用啥就用啥,达到目的就行,我说一下我的供大家参考。
Ubantu 15.10 server 版 + awesome3.5桌面环境 + eclipse_CDT luna + vim 7.4 + arm-linux-gcc 4.33 . 下面是个截图
阅读(1541) | 评论(0) | 转发(0) |