一年多入门嵌入式的感想(高手请过)
cvrli 2011-01-17 09:21:08 知道为什么忽然觉得LINUX其实对于开发人员其实并不是一个好的选择,说这个话很多人要对我扔鸡蛋,别急说说我的看法:
1,CE固然不好但是开发的环境很好,可以给嵌入式的开发者带来很多便利;
2,CE的开发周期较小,无需其他的插件;
LINUX的优点:
1,开源,便宜;
2,稳定,效率高;
3,支持很多插件,例如GTK,JAVA等。
从上面看来你会选择LINUX,可是对于高校的创新实现,我的体会如下;
1,LINUX所需很强的知识体系,例如交叉编译,MAKEFILE的编写,文件系统的制作;
2,LINUX对于初学者至少是1年,如果要精通要就是3年以上,如果是学生入手,LINUX的驱动,APP的开发,QT的移植,跟文件系统的制作都需要大量的知识体系,不过很不走运的是这些东西目前还没有什么人愿意体系的讲解他的原理和步骤。UBOOT就是个例子,我想问的是如果你会开发2440的UBOOT,那么对于其他的平台例如XSCALE的UBOOT你是否也能短期内完成开发?
3,LINUX的驱动开发是目前最难掌握的部分,在开发过程中琪头文件的位置和编译的MAKEFILE需要自己寻找和编写,对于一个初学者来说这是不是过于复杂了呢?
4,几乎每一个细节都需要关注。读过为东山书的人可能能作出64M的UBOOT和YAFFS文件系统,但是一旦NAND换成了256的,那么所有的底层都将被改变,这些东西好像对于一个初学者过于的复杂。
5,UI的开发移植过于的繁琐。举个例子,QT的启动需要修改RCS脚本,这个脚本的说明对于初学者时候过于困难呢?
6,QT的开发的是否资源过少?例如你想在QT下编写一个控制COM的程序,发现有点难以下手,因为开源的东西不是很全面,于是你只有在GOOGLE上面查找,结果很难找到合适的参考代码,或者是能用的代码。
别急,我不是再说LINUX毫无意义,我选择LINUX放弃了CE,或者是CE是个DEMO,产品的制作我一定会用LINUX。我在这里只是建议我的学生们,做嵌入式如果想最快的方式实现自己的概念,可以先用CE做个DEMO,LINUX可以同步积累。啊,当然我还想说明的是,LINUX是个很超前的操作系统,CE比起他来可以说有很多缺点,但是我从一个学生有限的时间和精力来看,LINUX是个很好的学习对象,但是如果你想不要被它过于复杂的知识体系而迷失方向的话,我觉得同学们其实一边积累LINUX的东西一边通过VC去快速实现自己的想法,往往会带来更好的收获。
无论如何在实践过程中,积累和创意是同样重要的,如果LINUX的IDE开发过程可以做到VC那样,那么也许嵌入式真的就是LINUX的天下了,但是开源意味着无人愿意做这个事情。我想M8开始也想过用LINUX系统,为什么用回CE呢?这个问题恐怕只有魅族的工程师能回答,但是一点就是,LINUX无法提供SDK给其他开发人员,如果采用了LINUX那么现在的M8的软件数量是多少呢?ANDRIOD的系统虽然是LINUX基础,但是中间加入了JAVA虚拟层,开发过程中不再是LINUX的开发,而是JAVA 的开发。说了那么多,我还是给出我自己的体会吧。
LINUX一定要学,但是不可以着急,急也没有用,可以作为一个最好的学习对象,好好钻研,包括架构,驱动,启动过程,源代码的组成等等都是很好的学习对象。
CE不要完全排斥,至少VC的开发过程还是比较有用的,这将帮助你快速的实现你的想法,有了阶段的实现,嵌入式的快乐也就享受到了,但是没有必要去研究它的运行过程,你就当作一个嵌入式的电脑开发一个VC就可以,驱动我想任何开发板都会提供BSP或者是SDK,直接使用就好。
我的经验告诉我,CE就是一个傻瓜开发过程,不用理会底层是什么,例如PXA255的COM程序直接在2440SDK的环境下编译就可以实现移植。
LINUX是个很好的但是却不是友好的学习对象,了解LINUX玩转LINUX可以了解OS的很多层面,但是学会不只是简单的移植,而是包括补丁,内核代码修改,底层驱动开发,UI的开发等一系列的东西,不仅仅是会了一个2440的移植,如果改用6410呢?是不是也能做出一套满意的系统,包括boot,rootfs,kernel,ui等。
以上只是我对于自己学期嵌入式的一个感想,一家之言不代表任何立场,如果是高手这篇文章就是垃圾,如果是新手希望帮助你们减少嵌入式的学习难度。