嵌入式开发宝典(入门篇)

三入门篇(这篇最郁闷,掉电丢了一回,重新开始,算是纪念)

  常碰到初学的朋友提出这样的问题:怎样学习嵌入式开发?自己不是这个专业,开始也没有从事相关的工作.经历了许多不同的道路后,才定下来做这方面的工作。不敢说可以全面准确地回答了这个问题,只能谈谈自己的经历和感受,与大家分享。

  本人的专业是机电控制,工科出身,说句心里话,小时候理想是当科学家,从事基础研究,呵呵,现在还没彻底丢掉这个梦想,现实就是现实,可能好多人都有过自己的梦想。还是要感谢母校,给予自己基本的知识。回顾在校期间技术上唯一可以记得的就是毕业课题的单片机系统设计调试,虽也是简单的应用,跟作成产品相差还是很远,但感觉还是受益很多。毕业后做了几年MIS软件开发和简单的工业控制系统,根本就没有啥特点一提。

第一次接触嵌入式开发,是去一家小公司,做路由器单板BSP&Drivers开发,一开始就接触的是底层开发,呵呵,可能跟自己的单片机和软件编程经验有关吧。用得平台是PPC+Vxworks,跟硬件工程师一起,看板子,修改供应商提供的源码,忙得个晕头转向。除了要涉及基本的c语法,开发环境外,还要了解相关的通讯知识,自己根本就不了解,只能用到现学。还好这样的开发根本就不要太深入,基本就是修改。一个哥们C语言根本就不太懂,愣是将一块板子给跑起来了。系统方案都是芯片供应商提供,硬件原理图也提供,基本就是抄板子,软件开发包都有,不用改就可以跑上。所以说国人基本都是拿来主义,自己的核心东西很少,好多的所谓开发只是停留在这个层次。选择一个好的发展环境很重要,并且好多公司面试你的时候考的是你的基本功,如果都是这样的泛泛而为,对自己的发展很不利,要认识这一点,即使目前没有这样的环境,也要自己努力向这样发展。我毕竟有了工作经验,勤奋好学,呵呵,算悟性也高吧,最主要的还是我认识到了该怎样去做技术,作技术要把握实质,不要流于表面,要形成系统。可能有人不同意,但我说的是技术发展,好多人没有把技术作为终身的目标,所以还有更高的追求。但我想我这辈子就和技术离不开了。经历曲折痛苦,自己感觉终于可以说进入了正轨,虽然没有达到很高层次,但剩下得只是自己的努力和时间问题,还有就是外界对自己的认可和给予的机会。所以,自己的嵌入式入门是很曲折,很模糊的,但现在感觉很清晰了。

现在好多人都是专业出身,起码在学校期间就接触了好多相关的东西,并且对今后都有了好多了解,这是多么的幸福,要好好珍惜吧。

作嵌入式,首先要知道什么是嵌入式和做嵌入式需要的相关知识。

何谓嵌入式?我想好多人都不会给一个清楚的答案,包括许多高手。记得有一个定义,记不起来了。这里只能按照自己的理解来进行表达和总结,仅供交流。一提嵌入式,普遍印象是在mcu上跑东西。不错,可以这样理解。以前单片机和PC共存,单片机基本都是8位的,开发用汇编,后来出现了C51,没有操作系统。PC就是286、386、486等,加windows。差别太大,区分明显。技术发展后,单片机都达到32位了,尤其ARM的出现,使大多数人感受到了这个技术发展的成果,并且好多OS都可以移植上。但PC的技术相对发展放慢了,当然已经发展到了极高的水准。所以有人说是后PC时代。单片机和PC的区别不那么明显了。其实x86+windows linux也可以看作是一种嵌入式开发。是PC技术应用到了嵌入式,还是嵌入式融合了PC技术,这个不好说了,其实本来就是相同技术的一个最终融合过程。出发点因应用不同而显不同,后因技术的发展可以相互融合了。目前形成了这样的应用格局:单片机开发(如51 ,DSP,ARM7),没有操作系统;单片机+OS;PC+windows or linux。单片机的概念拓宽了,可以认为是MCU。所以最终还是硬件和软件的集成。硬件包括不同体系的CPU和外围电路,软件包括基本编程和OS。如果更加准确的说嵌入式开发,自己认为可以表示为:CPU+OS+APP。具体看自己的应用了。

所以,嵌入式涉及了软件和硬件知识,并且包含了行业应用。硬件涉及到了CPU架构和基本电路,软件涉及编程语言和操作系统。应用行业就包含了不同的硬件接口和软件接口。其实好多嵌入式开发主要还是在于所涉及应用行业技术的开发,基本的CPU+OS相对关注不多,方案也比较成熟,当然是应用的基础了,也是开发的一个基本平台。所以,嵌入式的进入点也分不同,你可以只关注应用方面的东西,比如应用软件的编制或者板子上特定应用电路,也可能你要做CPU基本系统和OS移植和驱动得开发,一般都有方案参考。

可以这样认为,x86+windows or linux是一种嵌入式开发,但这种系统资源比较多,考虑的条件相对要少些,其它真正的板子开发,资源相对少,开发时候尤其要注意这样的限制。这样的观念一定要存在。

现在可以总结一下入门要涉及的东西:编程语言(主要是C)及相关开发环境、操作系统(原理及移植过程)、CPU架构(基本架构及基本外围接口电路)。这只是大的分类,具体涉及的会很多,尤其和具体行业应用的相关知识,比如通信行业,要了解相关的架构和协议,图像处理要了解算法和原理等。一般入门应用编程比较容易些。相关具体细节可以举例如下:

1 硬件

  除了要了解CPU架构外,基本的接口知识 (如时钟,FLASH SDRAM等),还要涉及具体应用接口,如PCI总线、USB总线,以太网接口、光通信接口、ADSL接口等,都要涉及相关知识。但最终要集成到一块板子上,高速板和非高速板,这就要涉及PCB布线,信号完整性等问题,还要考虑EMC、EMI、结构等,电源更是要考虑的。至于EDA只是个工具罢了,我们是要用这个工具来辅助我们完成我们的应用。这只是考虑到的几个例子,最终体现的是扎实的硬件基本功,如果你的基本功过硬,任何应用只要了解一下就可以很快地加以解决。有了基本知识,遇到问题就可以问问自己为什么这样,这些应用都是在基本理论基础上产生的,一些限制和条件包括出现的问题,都离不开基本的东西。比如我们都知道电源地要加宽尽量,可以抗干扰。我们是否问一下问什么?还是只是机械的记住这个经验?换个角度想,地有2个作用,一个是供电流的回流,二是提供一个基准电压。如果这2个作用出现问题,可能会影响电路特性,包括上面的元器件。所谓干扰就是这样产生的,干扰无非就是外界对线路和线路自身产生的,最终理论表现为阻性、感性、容性的变化。底线宽和窄,受到的干扰表现出的性能就不同,最终影响到整个电路,宽相对阻抗小,根据电磁理论,外界对其的电磁和辐射干扰产生的结果小,线路电流涌动影响也小。地的特性和电路特性变动,就会影响相关器件,每个器件都有自己的适用范围,所以超出了这个范围,就表现不稳定。这样思考,就可以把电磁电路等理论联系起来,包括干扰的种类和途径,解决的办法,进而采取的措施。上面仅是个例子,有可能不准确,但这样思考了,比单纯的记忆好多了,可以形成系统,宾且遇到问题也好查找和解决。当然这样要涉及的东西就太多了,但基本上在学校应该都学过,还要有学习新东西的准备。只是要认识到这个。

2 软件

  软件可能基本就是C语言,当然其它语言应该类似。对于C的基本语法,这个不用说了。但这个是不够的。嵌入式上开发资源少,限制多,有好多值得注意的地方,比如内存,中断,任务调度等。这些是前提,如果恣意编码,肯定回有报应的。所以有这个思想,想实现这个东西,就要有过硬的C功底,才能完成,这是个基本的要求。如果光知道这个要求而没有能力来实现,只是个空谈。那末感觉自己C已经够用了吗?简单的一个例子,volatitle这个关键字啥含意?啥时候要记得用? Static的生存期是啥?inline的特点是啥?知识是无止境的。即使C过关了,你的算法过关了吗?这个是个很明显的东西,任何人都会打怵。有了C和算法的功底,只是个开始,具体应用中的技术了解吗?比如数据库技术、网络技术、信号处理等,只有非常了解才能写出好的应用程序。如果这些凑合着还能用,如何那?还是不够。前面说的只是C的表面应用,还要涉及操作系统和编译上的知识,比如bss段数据是啥?如何定义变量?程序是怎么在OS上加载运行的?这些都会影响到系统性能。如果在PC上编程可能涉及的不多,但嵌入式上你不考虑会很容易出现问题的。所以,软件也是个系统的问题,而不是只会C语言那么简单。当然如果你只想停留在这个表面上,可以不深入研究。驱动和操作系统移植还要涉及和硬件的接口,考虑的也很多。

另外可能会有一些其它相关的东西,比如调试技术及工具等,这些只是辅助的工具,会与不会的东西,不会涉及深层次的。

不禁写了这么些东西,可能很乱,可能没扣入门的题。只是自己的思路而已。嵌入式涉及的就是这些东西,要做,就要会这些东西。当然,入门可以从某一处入手,比如应用软件开发。但要了解自己,明白对自己的要求和方向,然后一步步做起。会了C语言和开发环境,可以编制简单的应用了,如果要做的更好,还要加强其它知识的了解。首先要认识到,然后才能去做。不要因为一点的进步而得意,以为都可以了。基本功是最主要的,有了这个才会作出好的东西。一个公司招聘新人往往考察的也是基本功,比如C语言、操作系统、编译原理、数据结构、电子电路、信号处理等,这就是所谓的一个人的素质,好的素质才能做好的工作。

入门篇可以结束了吗?不知道是否有了自己的收获,根据自己的情况来设计自己的未来吧。

(待续)

 
 
 
 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
内容简介 本书论及了嵌入式工程师职业生涯的方方面面。首先分析了嵌入式工程师必备的技能条件,讲述了掌握这些技能的学习途径。然后结合实际讨论了设计小型嵌入式系统时经济使用的自底向上方法和设计大型嵌入式系统时经常使用的自顶向下方法。最后讲述了嵌入式工程师的3 种职业道路—做自由职业者、为小公司工作以及为大公司工作,分别讨论了每种职业道路的优热和风险,为嵌入式工程师的职业选择提供了理论指导和借鉴参考。 本书不仅适合各层次嵌入式技术人员阅读,而且对于想要成为嵌入式工程师的其他职位人员,甚至是在校学生,都具有实际的指导意义。 目录 第1章 引言 1 1.1 关于本书 1 1.2 什么是嵌入式工程师 2 第2章 学习与教育 4 2.1 进入嵌入式工程领域的传统教育模式 4 2.2 非传统教育模式进入嵌入式工程领域 9 2.3 如果想编写嵌入式软件,那么至少要学习多少电子学知识 18 2.4 教育方面的陷阱、死胡同,以及必须规避的培训骗局 21 2.5 必需掌握的实践技能 25 第3章 自学自底向上的设计方法(小型嵌入式系统) 28 3.1 目标读者 28 3.2 intel 8051微控制器及其变种 31 3.3 atmel avr微控制器 39 3.4 ti msp430微控制器 46 3.5 microchip picmicro微控制器 52 3.6 满足特殊需求的异常架构微控制器 58 3.7 我应该学习什么编程语言呢?c++、c、汇编语言在小型嵌入式系统中 61 3.8 防盗版开发工具简介 65 3.9 基于avr微控制器和免费工具的8位嵌入式项目实例 67 第4章 自学自顶向下的设计方法(大型嵌入式系统) 93 .4.1 目标读者 93 4.2 嵌入式x86解决方案 94 4.3 arm处理器 103 4.4 powerpc 112 4.5 linux操作系统 114 4.6 ecos操作系统 121 4.7 面向大型嵌入式系统开发,应该学习什么编程语言 123 4.8 处理器选择的最后建议 124 第5章 做自由职业者 127 5.1 你适合做自由职业者吗?其中的风险与好处 127 5.2 从兼职工作到自由职业者——记账、纳税与工作量 128 5.3 寻找并维护客户的方法 130 5.4 迭代式项目:无休无止的噩梦 133 5.5 适当地为自己的服务定价 136 5.6 为自己建立良好的工作实践 138 5.7 不仅仅是握手:合同的重要性 140 第6章 在小公司工作 143 6.1 分析自己的目标:小公司的优势和风险 143 6.2 如何获得一份工作 144 6.3 小公司里的责任和压力 146 6.4 在小公司里的个人原动力 148 6.5 严格管理有限的资源 149 6.6 任务细目分类:一周的典型工作 153 第7章 在大公司工作 154 7.1 分析自己的目标:大公司的优势与风险 154 7.2 如何获得一份工作 155 7.3 全球化:项目外包与临时工作签证 157 7.4 管理规程与个人:不要触犯了公司的管理规程 162 7.5 管理与营销的关系 166 7.6 任务细目分类:一周常见工作 168 第8章 结束语 170

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值