关闭

谈谈我的嵌入式经验

222人阅读 评论(0) 收藏 举报
弹弹我自己的经历,也许会对你有些帮助。 
我是00年毕业,专业是机械系焊接工艺,和计算机是不搭边的,工作后发现机械这行薪水太少,所以转投IT产业,假造一份简历,混进一家公司,做了3年,然后换了2次工作,一直做到现在,这说明了一点,写程序只需要知道%5或更少就可以了(我当时只会用C语言写hello world!,不知道我们主管怎么看上我的,或许他只看了我伪造的简历)。所以大部分东西,比如linux内核源代码,谁吃饱了没事干去看它,一点用都没有,了解它是一个多进程并且稳定的内核就足够了,你需要的是一本函数参考手册,然后在需要时调用系统调用就行了。学习源代码什么的,我觉得有点炫耀自己的意思,其他就没什么好处了! 
废话也说了不少,谈谈经验吧,好歹咱也在嵌入式领域混了5年多,8位,16位,32位全都做过,CPU的主频也经历了4M->16M->40M->266M的发展历程!编程语言也经过了汇编->汇编+C->C语言的飞跃。既然大家对linux比较感兴趣,那么我也谈谈如何在嵌入式linux下开发产品的步骤: 
1。领导多方考察,决定如摩托罗拉mx21 CPU 
2。购买开发板(一套一万多)并由芯片商提供开发环境BSP(Board Support Packet),然后派个产品工程师(不是软件工程师)对大家进行为期一天的培训,其实就是告诉大家BSP里面有什么东西
3。自己干吧
下面是我的工作了,我负责建立开发环境,linux内核裁剪,驱动程序和GUI部分。 
声明:本人以前从未接触过linux开发,所以有个清晰的思路就非常重要了(实际上,做软件来说,只要有清晰的思路,其他都不是问题), 
1。开发环境,首先建立编译环境,安装linux操作系统(先用虚拟机),询问培训人员如何编译,下载,运行hello world C程序,结果发现下载速度不理想,程序的调试会非常困难(在程序中加入printf语句,编译,下载,然后观察printf输出结果),所以考虑到板上运行的是标准linux内核,接口都是统一的,那么先在PC的linux下调试程序,然后交叉编译,下载到板上,会省很多力气。那么思路清晰了,目标就是让目前产品的源代码可以在linux下运行,然后交叉编译,下载到板上运行,下面就是具体工作了: 
1。编写Makefile,保证可以用gcc编译源代码,为了用gdb调试,CFLAG 加上-g选项。 
2。设定输出,使用linux提供的framebuffer机制,将屏幕映射到一段内存,对内存的操作可以立即显示在屏幕上。这个去网上抄段代码就可以了。 
3。设定输入,当然用键盘了,使用tty设备作为输入,同样去网上抄段代码。 
4。设定定时器,继续抄代码。 
5。运行起来,可以在pc上运行我们的产品了. 
6。交叉编译,下载到目标板上了,要修改写文件,输入,输出设备文件名要改,CFLAG中的-g选项去掉,不然代码要大3倍,下载起来太慢了,然后开始下载,去抽只烟,回来后下载结束,运行,发现死机,然后加入printf语句,看看死在那里,然后编译,下载,观察结果,这是个漫长的过程,有次程序死循环,调试了3天,不停地编译,下载,观察结果,最后发现是循环变量的类型有问题,有char改为int就好了,这在pc上是看不出来的。
7。告诉大家,开发环境基本建立,然后测试其他功能,如语音,视频播放器,flash动画播放器等,等待硬件部门制作产品开发板。 
8。然后调试自己的产品开发版,调试各种驱动程序(驱动程序一般是单独调试,差不多后再合入内核) 
以上只是产品开发的一般步骤,事实上,我还在第6步徘徊。。。。 
手累了,其他的以后再说吧
另外告诉你个增长知识的好方法:移植linux代码到VC6中去。 
1。所有程序无外乎输入,输出,其中输入最重要,使用DirectDraw就可以了。 
2。找个linux下的程序,比如flash播放器,gif解码程序,让它在VC6下运行起来,好歹看个画面也可以。  
在移植过程中你会遇到很多问题,然后去网上寻找解决办法,久而久之,你对问题自然会有清晰的思路,而且会扩宽你的知识面。移植最好是系统程序,移植AP没什么意思,也学不到东西! 
浏览源代码最好用sourceinsight。 
有本linux C 函数库手册。 
用google搜索,我是不用百度的
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:47462次
    • 积分:974
    • 等级:
    • 排名:千里之外
    • 原创:48篇
    • 转载:16篇
    • 译文:0篇
    • 评论:16条
    最新评论