嵌入式
越来越多的人选择从事嵌入式开发工作,伴随而来的便是各种对硬件和寄存器的抓耳挠腮。你真的认为你现在的调试方式就是最合适的吗?先看看小粥为你带来的嵌入式调试实用秘籍!
使用集成开发环境开发基于ARM 的应用软件,包括编辑、编译、汇编、链接等工作全部在PC机上即可完成,调试工作则需要配合其他的模块或产品方可完成,目前常见的调试方法有以下几种:
1、指令集模拟器
优点:部分集成开发环境提供了指令集模拟器,可方便用户在 PC 机上完成一部分简单的调试工作。
缺点:由于指令集模拟器与真实的硬件环境相差很大,因此即使用户使用指令集模拟器调试通过的程序也有可能无法在真实的硬件环境下运行,用户最终必须在硬件平台上完成整个应用的开发。
2、驻留监控软件
优点:驻留监控软件( Resident Monitors )是一段运行在目标板上的程序,集成开发环境中的调试软件通过以太网口、并行端口、串行端口等通讯 端口与驻留监控软件进行交互,由调试软件发布命令通知驻留监控软件控制程序的执行、读写存储器、读写寄存器、设置断点等。
缺点:驻留监控软件的不便之处在于它对硬件设备的要求比较高,一般在硬件稳定之后才能进行应用软件的开发,同时它占用目标板上的一部分资 源,而且不能对程序的全速运行进行完全仿真,所以对一些要求严格的情况不是很适合。
3、JTAG 仿真器
优点:JTAG仿真器也称为JTAG调试器,是通过 ARM 芯片的JTAG边界扫描口进行调试的设备。 JTAG 仿真器比较便宜,连接比较方便,通过现 有的JTAG边界扫描口与ARM CPU 核通信,属于完全非插入式 ( 即不使用片上资源 ) 调试,它无需目标存储器,不占用目标系统的任何端 口,而这些是驻留监控软件所必需的。
缺点:由于 JTAG 调试的目标程序是在目标板上执行,仿真更接近于目标硬件,因此,许多接口问题 ,如高频操作限制、 AC 和 DC 参数不匹配,电线长度的限制等被最小化了。
使用集成开发环境配合 JTAG 仿真器进行开发是目前采用最多的一种调试方式。
4、在线仿真器
优点:在线仿真器使用仿真头完全取代目标板上的 CPU,可以完全仿真 ARM 芯片的行为,提供更加深入的调试功能。
缺点:这类仿真器为了能够全速仿真时钟速度高于100MHz的处理器,通常必须采用极其复杂的设计和工艺,因而其价格比较昂贵。
在线仿真器通常用在ARM的硬件开发中,在软件的开发中较少使用,其价格高昂也是在线仿真器难以普及的因素。
看了这么多种调试方法,哪种适合你呢?
文章来源:周立功单片机
作者:何立民
“思考”与“行为”是人类智能的两种类型。“思考”是大脑独立的思维方式,“行为”是作用于客体的智力表现。
两种不同的智能类型决定了人工智能两种形式、两条道、两种工具、两个领域。人工智能源自图灵机模型,图灵机在实现了人工智能的实用化智力内核(微处理器)后,迅速分化成两种不同的智力内核(通用微处理器与嵌入式微控制器),以满足人工智能两个领域的全面需求。
人类智能的两种表现
思维与智力行为是人类智能的两种表现方式,人类思考方式是思维,人类的行为方式是智力。无论是思维还是智力,都是知识基础上的能力与行为。动物没有知识,人们很难窥见动物思考,只能从动物的行为中了解它们的智力。人们常常喜欢将某些宠物的智力与人类相比,殊不知两者有本质不同:马戏团的小狗会数数,只是条件反射的训练结果,没有任何知识内涵。因此,人类智能是知识基础上的行为与能力。
人类智能与动物智力的本质差异是人类几百万年演化的结果。人类与动物的根本差异在于:动物们在自然竞争中演化,人类摆脱了自然竞争,进入到“认识世界、改造世界”的特殊演化道路。认识世界的思考与改造世界的行为能力构成了人类特殊智能。人们可以从人类大脑的特殊进化中,了解到这种特殊智能的演化结果。
首先是大脑容量的异常进化。百万年来,人类相对于其他物种,唯一明显的进化特征,是脑容量的急剧增长。
据人类学家统计,几百万年前,黑猩猩的脑量平均为400毫升,作为人类祖先的“南方古猿”,脑量为400~770毫升,其后进化的“爪哇人”为775~900毫升、“北京人”为850~1300毫升,现代人脑量平均为1400毫升。与此同时演化的黑猩猩,其脑容量却没有明显变化。现代神经医学研究指出,人类大脑容量的增加,主要是大脑皮层的异常发育所致。大脑皮层主管高级神经活动,体现了人类感知、认知、思维、思考的知识效应,充分表明人类智能的基础是知识。
其次,是人类左大脑的异常进化。20世纪60年代,美国心理生物学家斯佩里博士发现了人类左右大脑的割裂现象,提出了大脑不对称性的“左、右脑分工理论”,荣获1981年诺贝尔生理学或医学奖。人类左右大脑不同功能的分工现象表现在:左半脑主要负责逻辑、理解、记忆、时间、语言、判断、排列、分类、逻辑、分析、书写、推理、抑制、感觉(视、听、嗅、触、味觉)等,其思维方式具有连续性、延续性和分析性,因此左脑可以称作“意识脑”、“学术脑”、“语言脑”。右半脑主要负责空间形象记忆、直觉、情感、身体协调、视知觉、美术、音乐节奏、想象、灵感、顿悟等,思维方式具有无序性、跳跃性、直觉性等,因此右脑又可以称作“本能脑”、“潜意识脑”、“创造脑”、“音乐脑”、“艺术脑”。
百万年来,在认识世界、改造世界中演化,为了生存成为人类进化的主旋律,人类的智能最终形成了以左脑为主的思维、行为方式。可以看出,人类智能主要是知识基础上左大脑的思维(思考)与行为(智力)能力。现阶段,人工智能也将沿着这两种能力表现进行探索与实践。
一个源头的两个分支
1956年夏天,一批有远见卓识的年轻科学家聚在一起,共同研究和探讨用机器模拟人类智能的一系列有关问题,并首次提出了“人工智能”这一概念,人们认为它标志着“人工智能”这门新兴学科的正式诞生。
人工智能,除了理论研究,还必须有能实现人工智能的先进技术与工具,这就是现代计算机。因此,不少人把人工智能看成是计算机的一个分支,其源头则是图灵学者们对“可计算原理”的开创性研究成果。
图灵学者们提出“万物皆可为函数”的可计算原理,1936年5月,图灵发表了著名论文《论可计算数及其在判定问题上的应用》,并提出了图灵机概念。1946年,在图灵机思想影响下,第一台数字计算机“ENIAC”在美国宾夕法尼亚大学诞生,但体积庞大、造价高昂,与图灵理想的人工智能机相距甚远,“ENIAC”的实用化发展也受到诸多限制,直到半导体微处理器诞生,情况才得到根本的转变。
20世纪60年代半导体集成电路诞生后,Intel于1971年、1972年相继推出了第一代4位微处理器4004与第一代8位微处理器8008。紧随其后的是微处理器的不断改进与微处理器基础上现代计算机的快速发展。在嵌入式系统领域,1974年仙童半导体公司推出了第一个微控制器系列F8,随后微控制器开始了爆发式的创新热潮。
1976年Intel公司开始了MCS 48探索,1980年又完善成经典的8位微控制器MCS 51系列。在通用计算机领域,1981年IBM 公司在8088微处理器基础上,创建了通用计算机IBMPC。
从上面的追溯中可以看出,20世纪30年代,一批图灵学者们以“一切皆可计算”的理论与模型,成为人工智能的源头;1955年,由约翰·麦卡锡(John McCarthy)等人发起的达特茅斯会议上正式定义“人工智能”,催生了人工智能革命;20世纪70年代微处理器诞生,开启了人工智能的实践时代,其后“人工智能”大行其道,成为20世纪与空间技术、能源技术并列的三大尖端科技,又与基因工程、纳米科学一起成为21世纪三大前沿技术。
两个并行发展的人工智能领域
与人类智能的两个领域(思维与行为)相对应,微处理器诞生后,也迅速分化为通用微处理器与嵌入式微处理器,这是一个十分有趣的科技现象。“思考”是大脑在知识基础上的“思维能力”;“行为能力”是人类个体与客观世界的交互状态,除知识以外,还必须有对外部世界的感知与控制。微处理器诞生后,现代计算机智力革命就是沿着这两个领域并行发展。通用微处理器基础上的通用计算机用于实现人类大脑思维能力仿真;嵌入式微处理器基础上的嵌入式系统用于实现人类智力行为替代的智能化工具。
早期,人们以为人工智能就是对人类思维信息过程的模拟,它包括人脑的结构机制模拟与制造“类人脑”的功能模拟。微处理器诞生后,通用计算机承担了思维信息过程模拟的重任;嵌入式系统以智能化工具来替代人类智力行为,这无疑将早先人工智能的“思维仿真”进一步扩大到“行为替代”的广义领域,从此掀开了人工智能历史的新篇章。对此,有人用“强人工智能”与“弱人工智能”来区别这两种不同的人工智能领域。
“强人工智能”,是研究人类大脑及大脑思维仿真的人工智能领域。1980年,美国加州大学伯克利分校哲学教授约翰·罗杰斯·希尔勒(JohnRogersSearle)认为:“计算机不仅是用来研究人的思维的一种工具,而且,只要运行适当的程序,计算机本身就是有思维的。”因此,强人工智能领域有两类,即类人的人工智能与非类人的人工智能。类人的人工智能目标是实现人造大脑,使机器能像人类一样思考和推理,是人工智能的顶级工程,也有人称它为超强人工智能。非类人的人工智能,即机器对人脑功能的仿真。深蓝计算机“国际象棋大师”、沃森计算机“智力竞赛”、AlphaGo“围棋大师”都是机器对人脑的功能仿真,它们起源于20世纪70年代计算机的专家系统研究。
“弱人工智能”,是指用机器实现人类的智能行为,用于代替人类个体的脑力劳动。由于现代计算机的完善与广泛应用,用专家系统及智能化工具形式实现的人工智能比比皆是,充斥在人们周围,人们却视而不见。约翰·麦卡锡这位在20世纪50年代提出人工智能概念的学者也感叹于我们日常生活中每天都在使用人工智能,同时也抱怨于“一旦一样东西用人工智能实现了,人们就不再叫它人工智能了”。另外,不要一提到人工智能就想着机器人,所有内部嵌有微控制器的工具,或在计算机上实现人类思维能力的计算机软件,都是人工智能的表现形式。
全方位渗透的人工智能革命
结合现代人工智能学者温斯顿教授的简明观点—人工智能就是研究如何使计算机去做过去只有人才能做的智能工作,可以看出,20世纪50年代人工智能诞生后,由于计算机工具的滞后,人工智能领域一直没有实质性的进展。20世纪70年代半导体微处理器诞生后,微处理器基础上的现代计算机才成为实现人工智能应用的有力武器,从此开始了以人工智能为中心的现代计算机智力革命。由此构成形形色色、用于替代人类智能的工具,如集成电路芯片、通用计算智力仿真的专家系统和嵌入式系统的智能化工具。
许多业内人士都知道,半导体集成电路可以替代电子工程师的部分智力工作。过去设计一个电子时钟要了解计时原理、设计与调试计时电路,有了集成电路时钟芯片后,电子工程师只要在时钟芯片基础上添加人机交互界面即可。16位模/数转换曾经是国家级科研项目,有了16位模/数转换芯片之后,再也无人从事模/数转换的科学研究。最具说服力的是目前工科院校中模拟电路、数字电路课程内容的不断萎缩,以及大量模拟电路、数字电路专家岗位的丧失现象。
在通用计算智力仿真领域,20世纪70年代兴起了专家系统热潮,随后是形形色色的商品化软件(办公软件、科学计算/分析软件、管理软件、工程设计软件等)问世。这些商品化软件渗透到各行各业,代替人们的脑力劳动。当这些智力仿真成果铺天盖地而来时,人们不以为然。幸好有深蓝计算机“国际象棋大师”、沃森计算机“智力竞赛”、AlphaGo的“围棋大师”对人工智能的普及,让人们对人工智能有了初步的认识。
在嵌入式系统领域,微控制器以智力内核角色嵌入到工具中,实现人类工具的智能化革命。早期的工具智能化是传统电子系统的智能化改造,改造后的智能化工具代替了使用者的智力劳动。自动洗衣机代替了洗衣工的智力劳动,汽车故障自动检测系统免除了维修技师的智力劳动,智能手机多方面代替了人们生活中的智力劳动。在前沿科技领域,众多的智能化设备代替了科学家的智力劳动。
如今,在AlphaGo掀起的这股人工智能热潮中,引发了人们对机器人的众多遐想与议论。在这些遐想与议论中,人们应该意识到,我们已沉浸在一个人工智能的汪洋大海之中。多年来,人工智能彻底改变了我们的生活方式,改变了我们的世界观,只是我们往往浑然不知。
文章来源: 嵌入式资讯精选
本文从技术和就业经验等角度,为即将进入嵌入式开发的工程师们详细讲述嵌入式的概念、嵌入式开发之间的异同以及应该如何做出选择。是一些经验之谈,希望对大家有所帮助。
一、工程师眼中的“嵌入式系统”
在工程师看来:着重理解“嵌入”的概念,主要从三个方面来理解:
1、从硬件上,将基于CPU 的外围器件,整合到CPU 芯片内部,比如早期基于X86体系结构下的计算机,CPU 只是有运算器和累加器的功能,一切芯片要靠外部桥路来扩展实现,象串口之类的都是靠外部的16C550/2的串口控 制器芯片实现。目前这种串口控制器芯片早已集成到CPU 内部。还有PC 机有显卡,而多数嵌入式处理器都 带有LCD 控制器,但某种意义上就相当于显卡。比较高端的ARM 类Intel Xscale 架构下的IXP 网络处理器CPU 内部集成PCI 控制器(可配成支持4个PCI 从设备或配成自身为CPI 从设备);还集成3个NPE 网络处理器引擎,其中两个对应于两个MAC 地址, 可用于网关交换用,而另外一个NPE 网络处理器引擎支持DSL,只要外面再加个PHY 芯片即可实现DSL 上网功能。IXP 系列最高主频可以达到1.8G,支持2G 内存,1G×10或10G×1的以太 网口或Febre channel 的光通道。IXP 系列应该是目标基于ARM 体系结构下由Intel 进行整合后成Xscale 内核的最高的处理器了。
2、从软件上,就是在定制操作系统内核里将应用一并选入,编译后将内核下载到ROM 中。而在定制操作系统内核时所选择的应用程序组件就是完成了软件的“嵌入”,比如WinCE 在内核定制时,会有相应选择,其中就是 wordpad,PDF,MediaPlay 等等选择,如果我们选择了,在CE 启动后,就可以在界面中找到这些东西,如果是以前PC 上的windows 操作系统,多半的东西都需要我们得新再装。
3、把软件内核或应用文件系统等东西烧到嵌入式系统硬件平台中的ROM 中就实现了一个真正的“嵌入”。 以上的定义是我在6、7年前给嵌入式系统下自话侧重于理解型的定义,书上的定义也有很多,但在这个领域范围 内,谁都不敢说自己的定义是十分确切的,包括那些专家学者们,因为毕竟嵌入式系统是计算机范畴下的一门综合性学科。
二、嵌入式系统的分层及对口专业要求
嵌入式系统分为4层,硬件层、驱动层、操作系统层和应用层。
1、硬件层:是整个嵌入式系统的根本。如果现在单片机及接口这块很熟悉,并且能用C 和汇编语言来编程的话,从嵌入式系统的硬件层走起来相对容易,硬件层也是驱动层的基础,一个优秀的驱动工程师是要能够看懂硬件的电路图和自行完成CPLD 的逻辑设计的,同时还要对操作系统内核及其调度有相当的熟悉。但硬件平台是基础,增值还要靠软件。
硬件层比较适合于电子、通信、自动化、机电一体、信息工程类专业的人来搞。需要掌握的专业基础知识有: 单片机原理及接口技术、微机原理及接口技术、C 语言等。
2、驱动层:这部分相对而言比较难。驱动工程师不仅要能看懂电路图,还要能对操作系统内核十分的精通,以便其所写的驱动程序在系统调用时,不会独占操作系统时间片,而导致其它任务不能运行。若不懂操作系统内核架构和实时调度性,没有良好的驱动编写风格,按大多数书上所说添加的驱动的方式,这样可能连个初级的驱动工程师的水平都达不到,所写的驱动在应用调用时就如同windows 下我们打开一个程序运行后,再打开一个程序时,要不就是中断以前的程序,要不就是等上一会才能运行后来打开的程序。想做个好的驱动人员没有三、四年功底,操作系统内核不研究上几遍,不是太容易成功的,但其工资在嵌入式系统四层中是最高的。 驱动层比较适合于电子、通信、自动化、机电一体、信息工程类专业尤其是计算机偏体系结构类专业的人来搞。 当然除硬件层所具备的基础学科外,还要对数据结构与算法、操作系统原理、编译原理都要十分精通。
3、操作系统层:对于操作系统层而言目前可能只能说是简单的移植,而很少有人来自已写操作系统,或者写出缺胳膊少腿的操作系统来,这部分工作大都由驱动工程师来完成。操作系统是负责系统任务的调试、磁盘和文件的管理,而嵌入式系统的实时性十分重要。据说,XP 操作系统是微软投入300人用两年时间才搞定的,总时工时是 600人/年;中科院软件所自己的女娲Hopen 操作系统估计也得花几百人/年才能搞定。因此这部分工作相对来讲没有太大意义。
4、应用层:相对来讲较为容易。如果会在windows 下进行编程接口函数调用,到操作系统下只是编译和开发环境有相应的变化而已。如果涉及Java方面的编程也是如此。嵌入式系统中涉及算法的由专业算法的人来处理,不必归结到嵌入式系统范畴内。但如果涉及嵌入式系统下面的嵌入式数据库、基于嵌入式系统的网络编程和基于某些应用层面的协议应用开发(比如基于SIP、H.323、Astrisk)方面,又较为复杂,并且有度了。
三、目标与定位
先有目标,再去定位。
学ARM,从硬件上讲,一方面就是学习接口电路设计,另一方面就是学习汇编和C 语言的板级编程。从软件上讲,就是要学习基于ARM 处理器的操作系统层面的驱动和移植。这些对于初学者来说必须明确,要么从硬件着手开始学,要么从操作系统的熟悉到应用开始学,但不管学什么,只要不是纯的操作系统级以上基于API 的应用层的编程,硬件的寄存器类的东西还是要能看懂的、基于板级的汇编和C 编程还是要会的。因此针对于嵌 入式系统的硬件层和驱动层的人来说,ARM 的接口电路设计、ARM 的C 语言和汇编语言编程及调试开发环境还是需要掌握的。
对于初学者必然要把握住方向,自己的目标是什么,自己要在哪一层面上走。然后再着手学习才比较好,与 ARM 相关的嵌入式系统的较为实际的两个层面硬件层和驱动层,不管学好了那一层都会很有前途的。 如果想从嵌入式系统的应用层面的走的话,可能与ARM 及其它体系相去较远,要着重研究基嵌入式操作系统的 环境应用与相应开发工具链,比如WinCE 操作系统下的EVC 应用开发(与windows 下的VC 相类似),如果想再 有突破就往某些音视频类的协议上靠,比如VOIP 领域的基于SIP 或H.323协议的应用层开发,或是基于嵌入式 网络数据库的开发等等。
对于初学者来讲,要量力而行,不要认为驱动层工资高就把它当成方向了,要结合自身特点,嵌入式系统四个层 面上无论哪个层面上来讲都是有高人存在,当然高人也对应的高工资。我是做硬件层的,以前每月工资中个人所 得税要被扣上近3千大元。当然我一方面充当工程师的角色,一方面充当主管人物的角色,两个职位我一个人干, 但上班时间就那些。硬件这方面上可能与我PK 的人很少了,才让我拿到那么多的工资。
四、如何选择合适的开发系统
很多ARM 初学者都希望有一套自己能用的系统,但他们往往会产生一种错误认识,就是认为处理器版本越高越好,性能越高越好,就象很多人认为ARM9比ARM7好, 我想对于初学者在此方面以此入门还应该理智,开发系统的选择最终要看自己往嵌入式系统的哪个方向上走,是做驱动开发还是应用,还是做嵌入式系统硬件层设计与板级测试。如果想从操作系统层面或应用层面上走,不管是驱动还是应用,当然处理器性能越高越好了,但这个东西自学,有十分大的困难,不是几个月或半年或是一年二年能搞定的事。
在某种意义上讲,ARM7与ARM9的差别就是在某些功能指令集上丰富了些,主频提高一些而已,就比如286 和386。对于用户来讲可能觉察不到什么,只能是感觉速度有些快而已。
ARM7比较适合于那些想从硬件层面上走的人,因为ARM7系列处理器内部带MMU 的很少,而且比较好控 制。就比如S3C44B0来讲,可以很容易将Cache 关了,而且内部接口寄存器很容易看明白,各种接口对于用硬件 程序控制或AXD 单步命令行指令都可以控制起来。基于51单片机的思想很容易搞懂,就当成个32位的单 片机,从而消除很多51工程师想转为嵌入式系统硬件ARM 开发工程师的困惑,从而不会被业界某些不是真正懂 嵌入式烂公司带到操作系统层面上去,让他们望而生畏,让业界更加缺少这方面的人才。
而嵌入式系统不管硬件设计还是软件驱动方面都是十分注重接口这部分的,选择平台还要考察一个处理器的外部资源,你接触外部资源越多,越熟悉他们,以后就业成功的机率就越高,这就是招聘时所说的有无“相关技能”,因为一个人不可能在短短几年内把所有的处理器都接触一遍,而招聘单位所用的处理器就可能是我们完 全没有见过的,就拿台湾数十家小公司(市价几千万)的公司生产的ARM 类处理器,也很好用,但这些东西通用性 太差,用这些处理器的公司就只能招有相关工作经验的人了,那什么是相关工作经验,在硬件上讲的是外围接口设计,在软件上讲是操作系统方面相关接口驱动及应用开发经验。我从业近十年, 2000年ARM 出现,我一开始做ARM7,然后直接跑到了Xscale(这个板本在ARM10-11之间),一做就是五年,招人面试都不下数百人,在这些方面还是深有体会的。
我个人认为三星的S3C44b0对初学者来说比较合适,为什么这么说? 因为接口资源比较丰富,技术成熟,资料较多,应该十分适合于初学者。有问题可能很容易找人帮且解决,因为大多数人都很熟悉,就如同51类的单片 机,有N多位专家级的人物可以给你帮忙,相关问题得以很快解答,所然业界认为这款ARM 都用得烂了,但对于初学者来,却是件好事。
总的来说,开发系统的选择,要看自己的未来从业目标方向,要看开发板接口资源,还要看业界的通用性。
五、成为高级嵌入式系统硬件工程师要具备的技能
对于硬件来讲有几个方向,就单纯信号来分为数字和模拟。模拟比较难搞,一般需要很长的经验积累,单单一个阻值或容值的精度不够就可能使信号偏差很大。因此年轻人搞的较少,随着技术的发展,出现了模拟电路数字化。 比如手机的Modem 射频模块,都采用成熟的套片,而当年国际上只有两家公司有此技术,自我感觉模拟功能不 太强的人,不太适合搞这个,如果真能搞定到手机的射频模块,只要达到一般程度可能月薪都在15K 以上。
另一类就是数字部分了,在大方向上又可分为51/ARM 的单片机类,DSP 类,FPGA 类。国内FPGA 的工程 师大多是在IC 设计公司从事IP 核的前端验证,这部分不搞到门级,前途不太明朗,即使做个IC 前端验证工程 师,也要搞上几年才能胜任。DSP 硬件接口比较定型,如果不向驱动或是算法上靠拢,前途也不会太大。而ARM 单片机类的内容就较多,业界产品占用量大,应用人群广,因此就业空间极大。而硬件设计最体现水平和水准的就是接口设计这块,这是各个高级硬件工程师相互PK、判定水平高低的依据。而接口设计这块最关键的是看时序, 而不是简单的连接,比如PXA255处理器I2C 要求速度在100Kbps,如果把一个I2C 外围器件,最高还达不到100kbps 的与它相接,必然要导致设计的失败。这样的情况有很多,比如51单片机可以在总线接LCD,但为什么这种LCD 就不能挂在ARM 的总线上,还有ARM7总线上可以外接Winband 的SD 卡控制器,但为什么这种控制器接不到ARM9或是Xscale 处理器上,这些都是问题。因此接口并不是一种简单的连接,要看时序,要看参数。 一个优秀的硬件工程师应该能够在没有参考方案的前提下设计出一个在成本和性能上更加优秀的产品,靠现有的方案,也要进行适当的可行性裁剪,但不是胡乱的来,我遇到一个工程师把方案中的5V 变1.8V 的DC 芯片,直接更换成LDO,有时就会把CPU 烧上几个。前几天还有人希望我帮忙把他们以前基于PXA255平台的手持GPS 设备做下程序优化,我问了一下情况,地图是存在SD 卡中的,而SD 卡与PXA255的MMC 控制器间采用的SPI 接口,因此导致地图读取速度十分的慢,这种情况是设计中严重的缺陷,而不是程序的问题。因此我提了几条建议,让他们更新试下再说。
因此想成为一个优秀的工程师,需要对系统整体性的把握和对已有电路的理解,换句话说,给你一套电路图你能看明白多少,看不明白80%以上的话,说明你离优秀的工程师还差得远。其次是电路的调试能力和审图能力,但最最基本的能力还是原理图设计、PCB 绘制、逻辑设计这块。这是指的硬件设计工程师,从上面的硬件设计工程师中还可以分出ECAD 工程师,就是专业的画PCB 板的工程师,和EMC 设计工程师,帮人家解决EMC 的问题。硬件工程师再往上就是板级测试工程师,就是C 语言功底很好的硬件工程师,在电路板调试过程中能通过自已编写的测试程序对硬件功能进行验证。然后再交给基于操作系统级的驱动开发人员。 总之,硬件的内容很多很杂,硬件哪方面练成了都会成为一个高手,我时常会给人家做下方案评估,很多高级硬件工程师设计的东西,经常被我一句话否定。因此工程师做到我这种地步,也会得罪些人,但硬件的确会有很多不为人知的东西,让很多高级硬件工程师也摸不到头脑。
那么高级硬件工程师技术技能都要具备哪些?首先要掌握EDA 设计的辅助工具类如Protel OR CADPowper PCBMaplux2ISE、VDHL 语言,要能用到这些工具画图画板做逻辑设计,再有就是接口设计审图能力, 再者就是调试能力,如果能走到总体方案设计这块,那就基本上快成为资深工程师了。
深入了解各种器件特性,选择最合适的处理器、外围器件、操作系统和软件库,尽可能地优化软件设计,最贴切地满足应用需求,以获得最好的系统性价比,是嵌入式系统设计开发的精髓。
硬件是要靠经验,也要靠积累的,十年磨一剑,百年磨一针。
不过最后提醒大家:追求技术不是人生的唯一目的,切不可把它当成喜悦的唯一源泉,平时身边有很多美好的事物都值得用心去珍惜。呵呵,我已经在担心自己的智力是否会在30岁到来之前枯竭了。好好珍惜短暂的大学生活,好好珍惜自己的青春,不要整天呆在实验室,左手键盘右手烙铁的。
文章来源:玩转单片机