【转载】嵌入式自学经历和体会

目的
     回想自己从2000年自学 单片机开始,到后来的 ARM,再到Linux,经历了很多,也体会了很多,有 经验,也有教训,所以希望通过此次机会与读者相互交流,也让更多的爱好者在自学过程中有所借鉴。如果能得到您的共鸣,请给阿南写信( [email protected]),真诚期盼成为您的朋友、知己。

初识单片机和电子竞赛
   大一的暑假没有回家,留在学校里希望能向王师兄(我的老乡,也是校友,当时他在帮老师做些项目)学点 技术,后来他向我推荐了单片机和 全国大学生 电子竞赛。和普通学生一样,想着要是能参加电子竞赛那是多么自豪呀!且对单片机很是好奇,于是去图书管借了些 基础书来阅读,很快就被它的强大功能所吸引,也有了想迅速学好它,将来参加电子竞赛的念头。

仿真器,下定决心学好单片机
   由于当时学校还没有开模拟、数字电子等专业课程,所以学单片机还是很困难的,一般我都拿两、三本单片机基础书一起看,这本没理解清楚就对照着另外一本再看,旁边还会放着模拟、数字等基础 教程以便查阅。
   暑假很快就过去了,在这段时间虽然不做其它事情专心 学习,但单片机毕竟是一门实践性很强的技术,在没有多大的进展后又找了王师兄,告诉他学习的困惑。他告诉我要想学好单片机,必须要有个仿真器实践,大概要1500元。天哪!这么贵?这对我这个农村的孩子来讲,实在太贵了!另外买了之后,还不一定就能学会呢!经过一个星期的思想斗争后,终于下定决心要买。当时的想法是这样:“从小家里就穷,父母赚钱很辛苦,姐姐为了生活也早早辍学,他们为了我能上大学将来有所出息真的复出了很多心血,所以我必须学好技术,将来出人头地回报他们;如果我要参加电子竞赛且取得好成绩,在技术上必须要超越同学、师兄及其它院校的同龄人,而论聪明、基础不可能占优,唯有比他们更早的开始,更加的勤奋和善于思考;是的,很心疼父母的这些辛苦钱,也正是这原因更加的会促使我必须尽最大的努力,更加勤奋的学习”。
培养兴趣,它是最好的老师
   买了仿真器后,我比以前任何时候都更加的勤奋了。图书管、书店找书学习,独自骑两小时自行车买器件,万能板上焊接 电路,学习自己 编程,用仿真器仿真,万用表测量各种信号变化等。我到了一种对单片机近乎疯狂的地步,调试遇到困难时非常的痛苦(上课、吃饭、睡觉都想着它,去图书管、书店查书 分析 原理,找师兄请教等,还渴望着要是有个单片机 培训班该多好啊),解决问题后又是那么的畅快和兴奋,就这样对它产生了很深的感情,也已不再是当初的具大压力和包袱下学习了,而是在一种很浓厚的兴趣下享受着它给我带来的喜怒哀乐。

冲破难关,学会独立
   时间过的真快,自学单片机已经一年了,这个暑假我依然没有回家,而王师兄回家了。在这一年中,我对51系列单片机的原理已经差不多都理解,也 实验测试了所有的片内外设,只有并行 通信测试还一直没有 成功过。就是ADC0809的A/D转换实验,已经断断续续调了近两个月,分析了所有书上的相关内容,对原理也已经太清楚了,而仿真器就是采集不到正确的数据。当时遇到困难时没有像现在这样方便的网络,也没有示波器,只能分析书本和凭自己的想象和试验,另外总是期盼着师兄能帮助解决,但是我不能总依赖他人,必须学会独立。后来静下心来想了各种解决、测试的方法和线索,一个个排除,最终在仿真器说明书中发现“POD52仿真头的P0、P2口只能用作I/O用,POD51可以作为总线用”,由于一直 使用POD52的头,所以读写等信号都没有出来,换成POD51果然就成功了,当时真的很兴奋!之后我的单片机学习就变得非常顺利,一般的 系统都能独自完成,也终于可以自豪的宣告:我的单片机 入门啦。在这一过程中,我体会到了独自思考,解决问题的重要性,也明白了 开发 工具在实践过程中所起到的作用。其实很多问题是要用示波器测试,和请求工具厂商技术支持的。

上帝是公平的,机会留给有准备的人
   入门单片机后,不仅自己做些小课题,也用它完成课程 设计,参加校里组织的竞赛等。虽然没有像身边同学那样积极参加院里的工程师摇篮协会,但自己的勤奋、动手能力及对单片机的执着还是得到老师的肯定。初识贾老师(负责组织参加 全国 大学生电子竞赛的老师)时,他给了一道99年的竞赛题――工频真有效值表。该题有很多的 运算,考虑到汇编语言实现的难度,所以那时积极的学习用C语言为单片机编程。在大一时开过C语言的基础课,再加上良好的汇编语言为单片机编程的基础能力,这课题也很顺利的完成了。之后,贾老师将我推荐给方老师(方老师是学校99届的优秀毕业生,留校任实验师,也是源峰科技主要的研发工程师)。目的很明确:学好单片机备战03年SONY杯全国大学生 电子设计竞赛。
   从那以后,我已不再是自己一个人在宿舍里学习,有方老师的指导,也不用再骑车买 元件和只有万用表测量信号。实验室什么都有,常用器件、 电源、最好的仿真器、示波器等。也不仅仅只在学习单片机和C语言编程,还要学习单片机以外的相关技术,如Protel绘制原理图、 PCB制板,学习各种总线和协议,学习电机 控制等,还要学习PLC、MCGS组态 软件以及VB。最初是由于备战电子竞赛才被贾老师安排到方老师身边,而这2年半的时间里,我早已不仅仅是为了竞赛,更多的是在体会和享受着整个学习过程,将单片机实践 应用的过程,体会方老师对技术对工作的一种专注和执着。
   回想自己五年的大学学习生活,感觉真的很幸运,最初的王师兄,后来的贾老师和方老师,以及没有提到的女朋友及所有帮助过的朋友,在此对他们表示衷心的感谢,感谢他们总是在适当的时候出现,指导和帮助着我,让我为之感动,为之奋斗。同时也深深体会一个道理:机会总是留给足够真诚,足够勤奋、执着,有所准备的人;连自己都不能感动,何以感动别人?感动上帝!

坎坷的一年 ―― 技术上的追求而不断放弃工作
   当同学们纷纷进入大中专院校,从事一名让多少人羡慕的稳定的教师岗位时,而我却选择了南下打工,希望在技术上有更高的造诣。
   当时ARM在国内已经流行,我和广大爱好者一样,和当年初识单片机一样被深深的吸引,特别想掌握、应用它。最初很想加入广州周立功(专业从事单片机、ARM等相关技术的推广公司),但最终失败。然后去了深圳一家从事无线网卡开发公司,但因不是向往的单片机、ARM应用开发,又去了广州一家公司,从事单片机的应用开发。半年后作出了一个让很多人都很难理解的决定,去深圳一家从事ARM等开发工具的推广公司,而待遇只有原来的三分之一,省吃俭用基本只能维持自己生活,而且这里除了老板外,只有自己才算是从事技术的,白天给客户送货,做技术支持,晚上独自学习、研究ARM,周末再回广州看望女朋友。但是至今我都没有后悔当初的决定,因为那里有我学习ARM所需的一切硬件平台和那段难忘的经历。经过一个月断断续续的努力,使我在不懂ARM的情况下独自调试完成了AT91SAM7S64DEMO板。7S64当时还很少人应用,没有 中文 资料,出现问题要自己解决,所以完成后让自己信心大增,也深深体会到只要有基础、动手能力,有开发工具,无论是ARM还是DSP等,有决心都能很快的掌握。那段时间,也让我有机会去过很多公司,了解到很多工程师,了解到他们都在应用、学习些什么技术,也是那段时间知道了Linux,也意识到了单片机、ARM及Linux等技术是一种工具,开发产品的工具,当你很好的掌握它时,就可以开发很有价值的产品,同时如果不能最终的利用它开发有实践意义的产品,也就失去了它应有的价值,而且也只有在无数次实践产品的开发过程中磨练它们,才能更深入的体会出它们的精华和缺陷。没过多久,在了解公司策略、方向后,为了技术上的更高追求,我再次离开深圳回到广州,此时没有急着找工作,而是继续完成uCOS在7S64的移植工作,及进一步的学习ARM,学习更加常用的处理器:S3C44B0、S3C2410。

该是安稳工作的时候了
     我于05年8月1日正试进入目前的这家公司。回想自己在不到一年的时间,居然就职过四家公司,这让我的内心极度疲惫与不安,所以自从第一天上班开始就下定决心,无论多么困难,无论有什么理由都要坚持下去。
     中小公司的好处就是锻炼的机会多,只要您有本事都可以完全展现出来,不会有英雄无用武之地,所以之前学的ARM、单片机很快就在这里展现出来,得到公司及同事们的认可,也于年底顺利的完成了第一批产品样机,让自己深感欣慰,也再次 感受到产品成功开发带来的喜悦。

工作之余学习Linux
   掌握ARM后,我就开始学习Linux。因为有单片机的基础,所以很快就可以上手ARM,但是Linux却不能,还是有很多知识需要学习,先要学会Linux下的基本操作及命令,然后学习应用编程, 驱动以及网络和GUI,不过我们已经有C语言的编程能力及ARM的硬件基础,上手它也不难。另外有很多朋友提起Linux总是想到Linux内核的学习,然后被它大量的内核代码所吓倒。其实我们需要紧记自己是应用工程师,一切以应用为主,只要能 基于Linux开发出想要功能的产品,出现问题能够顺利解决,其它不需要的可以暂时不用学习。
   虽然平时的工作挺忙,也时常需要加班,但我还是坚持利用晚上、早上及周末等的空余时间学习,因为我知道工程师的职业生涯是短暂的,只有不断的保持学习的心态,才能让它一直延续。同时也意识到我们的产品与国外同行产品之间的差距,这种差距不仅体现在设计理念上,还有技术水平,而技术当中最明显的就是基于 嵌入式操作系统的应用上。我们目前的产品虽然也使用了ARM9等高端处理器,但还都是前后台系统(就是读者常说的超级单片机裸奔),所以在产品功能的实现上出现了瓶颈,最明显的表现就是在网络应用上,虽然也可以利用如串口转网口等模块来暂时解决,但在速度等会受到限制,只能用作控制,而不能传送音频、视频。所以要想突破这个瓶颈必须引入嵌入式操作系统,这也坚定了我尽快掌握Linux应用开发的信念。

只有付出的更多才能争取更大的机会,而自信也是那么的重要
   当完成来公司的第一批系列产品后,我开始盘算着公司的下一代产品,盘算着公司明年的研发计划和任务,期待着能够突破瓶颈,大大提升产品的功能和性能。因此决定春节不回家过年,加快Linux的学习。可是家里却传来了不好的消息:妈妈身体不好,刚动完手术。这让我真的不知道该怎么办是好,经过再三思考,在电话里含着泪告诉爸爸我的决定,之后沉重的心情也导致胃病复发。
   之前我主要是学习基于PC机的Linux,过年的两个星期主要学习基于ARM9处理器S3C2410A平台的嵌入式Linux开发,之后由于平时只需对已完成的产品做些BUG调试和维护,因此上班也有很多时间继续学习。一直到5月份领导正式和我们讨论新产品的开发方案,当时我已根据自己对新产品的理解,学完了Linux等所涉及的相关知识、技术,因此我自信的提出了基于Linux下的产品方案,不过领导一直没有同意,提出了很多在Linux下产品需要实现、解决的疑问,另外一个重要问题就是能否招到合适的Linux工程师。之后,我一边对疑问进行验证,一边积极的寻找合适的Linux工程师,也联系了一些从事Linux开发的朋友,但最终都因为公司觉得要求的待遇过高,而没有批准。一直到7月份,在对产品实现所需的相关技术深入学习评估后,我坚定的向领导承诺能够独自实现、解决所有的方方面面。虽然有些害怕和忧虑,但却给自己阻断了所有的退路。事实证明那是完全正确的,很多东西并没有当初想象的那么复杂,自己也有能力解决出现的问题,时间也足够。

在有限的工程师生涯里,留下些有意义的点点滴滴
   我有一个好习惯,总是舍得花时间去记录自己在学习、工作中出现的问题,或写出 心得和总结。最初是由于自己记性越来越差的原因,所以记录下来作为今后的参考。后来慢慢的积累多了,觉得它对自己实在太珍贵,也意识到对其它朋友可能也有参考价值,所以在21ICBBS上发布了这些笔记,后来得到了很多朋友的肯定与支持。现在由于北航出版社的鼓励,让我不惜花大量的时间、精力去丰富和完善它,希望能够给更多的朋友,也给自己留下这些有意义的点点滴滴。

你可能感兴趣的:(职场,嵌入式,休闲)