打印

学习嵌入式的最佳路线ARM7—后记(转)

[复制链接]
2919|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
huzixian|  楼主 | 2011-3-2 22:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我想把我从事嵌入式的经历写下来,作为这本书的后记,或许能给读者以启发!2002年毕业后我在一家刚成立的小公司就职,开始应聘时以为公司是做上层软件开发,等进了公司时发现同事都是用稀奇古怪的设备--一个铁盒子,上面有各种小零件。后来打听才知道是仪隆的8位单片机(EM78P156EL)。这个公司的所有员工都是刚毕业的大学生,在我这前来的才早两个月。所以,大家都在学习,这些东西在大学只是在做实验的时候依稀记得。公司里的资料大部分是E文,也有一部分是中文。有些同事是电子专业的,对51比较熟,虽然我也上过8051的课,但是却是过眼烟云,真正要写程序调试还是不知如何动手。前半年,我并未参与用EM78做产品,而是用VB写一个windows下modem拨号软件。VB相对单片机来说算简单多了,但公司的主要产品是用单片机开发。所以,我有空就在学习怎么用EM78的仿真器。并尽一切可能请教同事,终于在同事的指导下,我写了第一个汇编程序,点亮led灯。这盏灯可以说照亮了我的人生,从此,我喜欢上了这个丑陋的家伙--EM78仿真器。当时,公司有好几个,但是有一半的同事并没有珍惜这个宝贝。后来,我用EM78读写ST(意法半导体)的24c02,第一次搞清楚了I2C原理,学会了怎么看时序图,怎么根据时序图写程序,学会了用外用表,示波器(模拟)。
  第二年,公司有一个新产品的开发计划,我有幸加入进去!这个产品是要通过图像传感器把图片拍下来,压缩后发到手机。最开始,老板选择的是51,但最后评估出来用51压缩一副320x240的BMP图片需要一到两分钟,因这个产品是用于图像报警,如果连压缩就要两分钟,小偷早就跑了,所以,老板决定改用ARM7。记得当时周立功第一套开发板还没有做出来,等他们做出来后,第一个客户就是我们。
  第一个板子我们用的是LPC2104,后来又买了lpc2106,记得最开始我们用STD2.5,摸索了很久。很快,有同事就发现了ADS1.2,后来我们都用ads了。因为这个产品规划了两个版本,有线和无线,即采集的图片通过有线(Ethernet 网卡)或无线(GPRS)发送到手机。所以我们分了四个小组,一个小组研究JPEG压缩图片,一个小组研究TCP/IP,一个小组研究ARM,一个小组研究图像传感器。因我担任这个项目的规划设计(刚一毕业也没这个能力,实际上是我们老板在规划,但是在与老板讨论的时候让我学会了怎选型,怎么评估,怎么控制成本,这些都是极其重要的知识。),因为要安排每个小组的人力,及进度,我有幸参与到每个小组的开发工作中,我的这段经历是我人生最大的一笔财富,因为这四部分知识是我今后职业生涯极其重要的,其中的任何一个小组所研究的内容都可以让我立足于这个竞争激烈的社会,何况我们掌握的ARM技术正在与中国这个嵌入式时代同步。
  06年,我来了上海,主要工作是把我们的WiFi Module移植到RTEMS(RTEMS是前美国军方研制的嵌入式系统, 最早用于美国国防系统,早期的名称为实时导弹系统(Real Time Executive for Missile Systems),后来改名为实时军用系统(Real Time Executive for Military Systems), 目前的全称是实时(Real Time Executive for Multiprocessor Systems)用,他的特点是非常的稳定,而且速度快。现在是一个开源项目的RTOS, 在全球还是有不少的用户,其中包括Motorola,朗讯等),我之前有简单移植过uC/os-II,但没有深入研究。其实,在这之前我也买过深圳远峰的ARM9开发板,虽然光盘资料有怎么移植linux和Wince的方法,但是对于从事ARM7两年多的我,任然不知如何入手,后来这套开发板被小偷闯入家中当成宝贝偷走了(包装比较好,小偷以为是贵重物品)。05年的时候,虽然凭着ARM裸奔技术也可以很容易的找到工作,但是也受到很大的限制。因为,稍微大一点或有实力的公司都是基于ARM和linux开发的,对linux不熟让我感觉缺了一支胳膊。
  来上海的这个公司,我所在的部门主要是移植WiFi,根据客户要求移植到各种OS,各种平台。这对一个想进军OS的人来说,是再好不过的机遇。ARM(不管是ARM7还是ARM9,也不管是philips,还是samsung,还是其他公司),对我来说不成问题,新的cpu我一天都可以熟悉用它。但是,OS就不同了,RTEMS虽说是微内核,但麻雀虽小,五脏俱全,而且其TCP/IP协议栈与linux一样是BSD的。其架构,其编译方法与linux大致差不多。而且,比uC/os-II在性能上要强大的多。可以说,是衔接linux的最好桥梁。
  我从06年3月份开始移植,当时是移植到s3c2410上,到五一长假的前一天,就可以ping通wifi网卡了,在这两个月中,我几乎每天花在rtems上的时间有14个小时。算起来,这两个月我可以抵得上在大学四年学一门课程的时间。期间,碰到了很多问题,但凭我ARM扎实的基础,和自己的毅力,我很快就进入到了OS的世界。后来,我很快就把wifi移植到了linux上面,并开始研究linux,后续在linux行移植了网卡驱动,LCD驱动,音频驱动,camera驱动。
  根据本人的体会,如果想从事驱动或BSP,Firmware的开发工作,对ARM的理解是非常重要的,而ARM7是你理解ARM核心和精髓最简单最好的途径。很多人,一开始就是买了一个ARM9的板子而且玩起了linux,如果你ARM和linux都是初次接触,能够驾驽得了的人很少,因其知识体系的庞大,让你很难深入进去学。
  此后记部分,读者若有疑问,或想与作者讨论如何学习嵌入式的方法问题,请给我发邮件ximenpiaoxue4016@sina.com 或加我QQ:1209050967,或上我BBS在对应版块发帖讨论,BBS地址:http://www.xiajiashan.com/bbs

相关帖子

沙发
yoyowodeai| | 2011-3-2 22:09 | 只看该作者
很受启发!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

262

主题

1534

帖子

2

粉丝