本人是一嵌入式新手,绝对不是高手,所以本文的目的不在于阐述一些技术性的东西,而是想将我自己到目前为止在学习嵌入式过程中的收获写出来与大家分享。
我是大约一个月前买的开发板,然后中途去南方玩了半个月,处理开学相关事宜又花费了几天的时间,完全学习和研究开发板也就只有1周多的时间。这段时间里把厂家给的bootloader,kernel,cramfs都在板子上安装运行了几遍,然后自己动手修改了cramfs(因为我没买LCD,所以把原厂cramfs中QT的东西给去掉了),还把mpg123移植到了开发板上来用开发板听音乐。在这个过程中碰了很多的壁,但是最后都比较顺利的解决了。那么接下来就说说我对嵌入式入门的一些心得。
一,在进入嵌入式这个领域之前要对自己评估一下,看看自己是不是准备好了去学习嵌入式相关的东西。比如很多人都想做Linux,那么就要对Linux要比较熟悉。这个熟悉不是说对内核,对代码有多了解,而是至少要会基本的操作,很难想象让一个连编译程序,编辑文本文件都很困难的人去弄嵌入式的软件吧。
二,要舍得花钱买开发板。公欲善其技,必先利其器。也就是说,理论上可能掌握了很多,但是不去实践,那只能是纸上谈兵,这样是无法学好嵌入式的。弄个开发板自己摆弄摆弄,即使什么都不懂,也可以按照说明书把厂家给的程序下载到开发板上运行运行,先知其然,然后再通过具体的学习知其所以然,这样可以避免学习中的枯燥。现在市场上开发板的种类繁多,相同CPU的板子价格却相差很多,令很多人都不知道怎么选择购买。我的看法是,尽量买大厂的产品。因为在初学阶段学习资料少是个很头疼的事,很多时候都是无从下手,不知道如何去做,那么随开发板附送的资料就很重要了。大厂技术比较强,附带的程序都是可以在板子上运行的,例如我买的优龙ST2410这个板子(不是广告啊),光盘上带了一个bootloader,个2.4.18的内核,还有一个cramfs,这些程序的源代码都是厂家事先做好或者修改好的,完全适用于初学者使用。而有些实力不行的小厂家的资料不齐全,我们学习的时候需要自己弄bootloader什么的,那入门就很难了。但是大厂的板子都很贵,大家可以根据预算来选择适合自己的开发板,不过无论怎样,在学习上投资都是值得的。
三,不要事无巨细的学习,要有明确的目标。我最开始给自己制定的学习计划是:学习arm体系结构 -> 学习arm汇编 -> 自己移植bootloader -> 自己移植kernel -> 做应用,但是不久就被我否决了,因为这个过程实在是太枯燥太痛苦了,在学习资料少,没人指导的情况下根本无法进展。于是我决定使用厂家的代码来“玩”开发板,自己弄些应用上去。先是完全使用厂家给的bootloader,kernel,cramfs。之后发现cramfs中的一些控制Linux初始化的文件不符合我的要求,于是修改cramfs,删除了QT,修改了网卡初始的IP地址,安装到板子上能运行了之后就开始尝试做一些应用,比如hello world这样的程序。最后移植了一个mpg123到板子上。完全可以在不知道原理的情况下来使用板子的一些功能,等熟悉板子了再回头学习其中的道理,这样就容易一些。学习嵌入式就是这样,根据问题来选择学习的内容,否则会很盲目,最后就失去信心了。
四,要有耐心。不能否认,在学习一门自己完全不了解的技术是很烦人的。嵌入式的复杂在于它的交叉性。也就是说为了研究某一个嵌入式的问题,你有可能得学习很多其他的知识,比如操作系统,编译,体系结构等等,那么对于这种情况需要我们有足够的耐心。我在交叉编译mpg123的时候前几次无论怎么修改makefile都无法编译成功,最后我发现我用的arm-linux-gcc是2.9版本的,比较老,于是我换成新的3.4.1版本,就ok了。
以上是我初学嵌入式所获得的一些浅显的经验,基本都是基于软件方面的,硬件的DIY我就不行了。希望我的经验能给大家一些帮助。
刚刚和LUPA的嵌入式版主要了uboot的代码,接下来的我想研究研究厂家的bootloader代码然后移植一下uboot
阅读(2510) | 评论(2) | 转发(0) |