您现在的位置是: 首页 > 手机测评 手机测评
arm硬件电路设计_arm 电路设计
tamoadmin 2024-08-24 人已围观
简介1.ARM开发具体是干什么的2.数字电路学成后能做什么工作?(比较常见的工种)3.单片机待遇怎么样4.关于单片机,DSP,ARM,嵌入式,Linux,EDA5.硬件编程学什么6.ARM 怎样做到低功耗7.从底层硬件到上层应用,嵌入式软件的开发可以分为哪几类?首先,要明白集成电路设计,尤其是数字电路,硬件描述语言(Verilog或VHDL)就是描述集成电路的数字部分,而FPGA芯片内部有很多类似于单
1.ARM开发具体是干什么的
2.数字电路学成后能做什么工作?(比较常见的工种)
3.单片机待遇怎么样
4.关于单片机,DSP,ARM,嵌入式,Linux,EDA
5.硬件编程学什么
6.ARM 怎样做到低功耗
7.从底层硬件到上层应用,嵌入式软件的开发可以分为哪几类?
首先,要明白集成电路设计,尤其是数字电路,硬件描述语言(Verilog或VHDL)就是描述集成电路的数字部分,而FPGA芯片内部有很多类似于单元库的基本器件,通过编译硬件描述语言下载其中,就可以物理实现硬件描述语言所描述的功能了。
FPGA芯片: 如果可能的话,任何芯片的功能都能下载到其中,因为它可以拿来作为芯片验证。(当然每种型号的FPGA的容量、性能不同,但是一些普通应用都是可以放进去的)
一般的芯片,单片机、CPU等等,都是已经设计好的芯片,它们通常有自己的功能。
而FPGA是属于集成电路设计流程中,验证ASIC的工具(目前也很多直接拿来做应用)。
以上就是区别,有帮助请纳,谢谢!
ARM开发具体是干什么的
随着人们自身素质提升,报告的用途越来越大,我们在写报告的时候要注意逻辑的合理性。那么报告应该怎么写才合适呢?以下是我为大家整理的电子信息工程毕业论文开题报告,希望能够帮助到大家。
毕业设计的内容和意义
毕业设计内容:
1.熟悉单片机系统设计方法,独立完成电路和程序设计。
2.用PROTEUS进行系统调试和仿真。
3.设计、制作并调试硬件系统。
4.完成相关软件文档资料。
毕业设计应完成的技术文件:
1.3000字以上毕业设计开题报告,2000字以上英文参考文献的中文译文。
2.毕业设计论文(15000字以上)。
3.提供设计原理图和相应程序。
毕业设计意义:
随着时代的发展,现代化建设步伐不断加快,对道路照明及道路亮化工程需求也更大,而能源的供需矛盾也越来越突出,节电节能、绿色照明的要求越来越迫切,越来越高。现在再用那些传统的手控、钟控照明系统的方法已不能满足要求。如何充分利用高科技手段解决上述矛盾也就成为当前照明控制领域一个新的和紧要的课题。路灯照明是日常生活中必不可少的公共设施。路灯照明耗电量约占总耗电量的15%,全国各地无不面对电力紧张带来的各种问题。面对供电紧张形势,路灯巡查对于国家来讲是一项需要耗费大量人力的工作,各种临时应急节电措施被广泛用:夜晚间隔关灯、调整路灯开关的时间、在用电紧张的日子里关闭景观照明等等,当用电高峰过后,这些措施可能就被束之高阁,明年的用电高峰来临,一切又会重新开始。这样的节电措施,在缓解用电紧张的同时,却带来的浪费和对人们日常生活的负面影响。缓解用电紧张的最佳和有效的办法是对用电实施智能化管理,减少浪费,使我们的每一度电都能物尽其用!启用先进路灯监控系统,可以对路灯实施统一启闭,对夜间照明系统和路灯的实时监控和管理,确保高效稳定,全天候运行,控制不必要的“全夜灯照明”,有效节约电能消耗。对于学校公共照明系统来说,用智能化的管理系统是实现能源节约、减少浪费、满足人们生活要求、显示现代化校园的科学解决方案。
目前已有一小部分校园参考了公路路灯的节能措施,到了后半夜将电灯亮度调低,或取等间隔亮灯的方式来节约用电,但是这样一个方法却带来路灯过亮或过暗的问题:
1.控制落后
开关灯方式落后:当前路灯控制,还停留在手动、光控、钟控方式。受季节、天气和人为因素影响,自动化管理水平低,经常该亮时不亮,该灭时不灭,极易造成极大的能源浪费,增加了财政负担。
2.操控不便
调节操控能力不足,无法远程修改开关灯时间,不能根据实际情况(天气突变,重大,节日)及时校时和修改开关灯时间。
3.灯况不明
不具备路灯状况监测,现有的照明设施管理工作主要用人工巡查模式,不仅工作量大,还浪费人力、物力、财力。故障依据主要来源于巡视人员上报和市民投诉缺乏主动性、及时性和可靠性,不能实时、准确、全面地监控全城的路灯运行状况缺乏有效的故障预警机制。
4.不能很好的应用在前半夜
因为其前半夜6个小时以上全部取正常亮度,这样就会出现在没有行人、车辆经过校园道路时的电力浪费这一现象,而除了晚上6点-9点人车流高峰期以外其余时间人车流量确实相对较少,所以我们认为校园照明有更大的节能潜力。
针对以上现有节能情况分析,我们设计了一种高效率的智能节能路灯,路灯控制器内应同时设有光控和时控模块,该模块先服从光度控制,再服从时间控制,能满足达到一定光度开关路灯和达到特定时间开关路灯的要求。同时,我们认为路灯应改进为为红外感测路灯。针对校园人、车流量的高低峰时段对路灯分为节能状态和标准状态。在人车流量的高峰期如清晨上班时间和傍晚18点—21点,路灯要保持持续标准亮度,而在深夜路灯将转为节能状态,通过红外感测,只在有人、车通过时才变亮。使用红外感测,与声控相比,感应精度更高,避免了一些噪音而使灯无效闪烁。将所有的路灯连接到单片机上,单片机和计算机通信,用计算机控制路灯工作状态。可设定自动控制方式和人工控制方式。自动控制方式可根据地太阳活动规律,并结合实际情况控制路灯的工作方式。当夜幕降临,或光线已经较暗时,虽然未达到设定时间,也能自动开启。交通高峰期,应达到持续满额亮度;高峰期后,进入红外感应,实现智能和节能的控制。人工控制方式可随时设定开关时间、路灯开启比例或单独控制路灯的开与关。另外通过路灯的工作状态可对路灯损坏实现实时报警,并可显示具体的位置,提醒维修人员及时维修,中心控制器带有时钟芯片,该时钟芯片带有EEPROM,可以保持单片机工作参数,即使通信发生错误,路灯也能按照最后的程序进行工作。
文献综述
一、设计方案
本设计选用STC89C52单片机作为系统的核心部件,实现系统的控制和处理的功能。各模块所包含的功能如下:(1)红外模块:夜晚进行检测是否有行人。(2)显示模块12864:显示相应的时间和日期信息。(3)时钟模块:手动切换时间,自己设定开灯时间。(4)光敏电阻传感器模块:用于检测周围环境光强度,若光强低于标准值则开启路灯。
二、硬件电路设计
1.主控制器STC89C52
STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
STC89C52具有以下标准功能:8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。
2.红外模块
本设计用HC-SR501红外模块,它是基于红外线技术的'自动控制模块,用德国原装进口LHI778探头设计,灵敏度高,可靠性强,超低电压工作模式,广泛应用于各类自动感应电器设备,尤其是干电池供电的自动控制产品。该模块用于检测夜晚是否有行人路过,因此产生高地电平,并通过软件的方法来处理电平信号。
3.光敏电阻传感器模块
本设计用3线制光敏电阻传感器模块,是一款灵敏型光敏电阻传感器,用比较器输出,信号干净,波形好,驱动能力强,超过15mA。同时配有可调电位器可调节检测光线亮度,用于检测周围环境光强度,若光强低于标准值则开启路灯。
4.显示模块
本设计用液晶显示器12864显示时间和日期。液晶显示屏的第一行显示年月日,第二行显示的实时时钟,硬件电路中的12864的数据端口接到单片机P1口,数码管的4,5,6管脚分别与单片机的P3.0-P3.2相连,通过单片机的信息处理,从而在液晶显示屏上显示各段信息。
四、软件设计
主程序主要设计各个部分子程序的调用,子程序有时钟程序和显示子程序两部分。程序初始化后,红外模块子程序判断有没有行人,输出一个信号,经软件处理。12864液晶显示子程序主要通过接收主程序发出的信号,将其设置输入为模式子函数形成,并初始化LCD子函数,显示日期子函数,显示时间子函数。
五、仿真实现
该系统的软件仿真用Proteus软件,当系统开机时,系统进入初始化界面,液晶显示第一行为时间信息,第二行为日期信息,当白天的时候,打开光强和红外判断,同时成立才开启路灯。设定按钮可手动改变时间信息。
参考文献:
1.胡汉才.单片机原理及其接口技术[M].北京:清华大学出版社.2001.7
2.周润景等.Proteus在MCS-51&ARM7系统中的应用[M].北京:电子工业出版社.2006.10
3.侯玉宝等.基于Proteus的51系列单片机设计与仿真[M].北京:电子工业出版社.2008.8
4.张靖武等.单片机系统的PROTEUS设计与仿真[M].北京:电子工业出版社.2007.4
5.楼然苗等.单片机课程设计指导[M].北京:北京航空航天大学出版社.2007.7
6.周向红等.51系列单片机应用与实践教程[M].北京:北京航空航天大学出版社.2008.5
7.李林功.单片机原理与应用—基于实例驱动和Proteus仿真[M].北京:科学出版社.2010.5
8.薛钧义,张彦斌.MCS-系列单片微机计算机及其应用[M].西安:西安交通大学出版社.19
9.何利民.单片机应用系统设计.[M]北京航空航天大学出版社.1995
研究内容
红外模块的使用
单片机读取时钟芯片
用液晶显示相关数据
绘出逻辑图
研究
第一周——第二周:下毕业设计任务书,明确设计要求。查阅、搜集毕业设计相关资料。着手翻译相关英文资料,并熟悉PROTEUS软件和单片机的相关开发知识。
第三周——第四周:对查阅的文献资料归纳综述撰写开题报告。完成毕业设计需求分析,确定系统框图。
第五周——第六周:方案论证,设计硬件电路。分析设计的电路,提出软件设计思路;毕业设计初期检查。
第七周——第八周:在PROTEUS中实现软、硬件设计与调试。分析调试中的问题,改进并重新调试达到技术要求。
第九周——第十周:软、硬件电路进行整体测试,修改并完善程序;毕业设计中期检查。
第十一周——第十二周:设计并制作印制电路板;完成硬件的安装和调试。完成整个系统的软件、硬件的调试。
第十三周——第十四周:研究工作总结,撰写毕业论文。
第十五周——第十六周:论文修改及评阅,论文答辩。
特色与创新
路灯控制器内应同时设有光控和时控模块,该模块先服从光度控制,再服从时间控制,能满足达到一定光度开关路灯和达到特定时间开关路灯的要求。同时,路灯为红外感测路灯。针对校园人、车流量的高低峰时段对路灯分为节能状态和标准状态。在人车流量的高峰期如清晨上班时间和傍晚18点—23点,路灯要保持持续标准亮度,而在深夜路灯将转为节能状态,通过红外感测,只在有人、车通过时才变亮。
数字电路学成后能做什么工作?(比较常见的工种)
ARM开发具体是:工程师使用ARM嵌入式Linux操作系统进行内核编译及文件系统制作,使用相关开发工具进行ARM软、硬件开发设计的专业技术人员。
英国ARM公司是全球领先的半导体知识产权 (IP) 提供商。全世界超过95%的智能手机和平板电脑都用ARM架构 。ARM设计了大量高性价比、耗能低的RISC处理器、相关技术及软件。2014年基于ARM技术的全年全球出货量是120亿颗,从诞生到现在为止基于ARM技术的芯片有600亿颗。
技术具有性能高、成本低和能耗省的特点。在智能机、平板电脑、嵌入控制、多媒体数字等处理器领域拥有主导地位。
扩展资料
1、ARM开发的职业要求
教育培训:自动化、通信、电子专业大专以上学历。
工作经验:熟悉通信原理,掌握RS485以太网协议;熟悉VHDL的设计,熟悉arm9软硬件设计;熟悉数字及模拟电路设计;有C/C++开发经验;熟悉C语言,熟悉ARM嵌入式系统开发,能熟练使用Protel、PADS和Cadence工具;
有良好的电子线路设计、分析能力,良好的硬件系统调试能力,流程快速理解英文技术文档。
2、ARM的特点
ARM 的商业模式主要涉及 IP 的设计和许可,而非生产和销售实际的半导体芯片。ARM向合作伙伴网络(包括世界领先的半导体公司和系统公司)授予 IP 许可证。
这些合作伙伴可利用 ARM 的 IP 设计创造和生产片上系统设计,但需要向 ARM 支付原始 IP 的许可费用并为每块生产的芯片或晶片交纳版税。除了处理器 IP 外,ARM还提供了一系列工具、物理和系统 IP 来优化片上系统设计。
参考资料:
参考资料:
单片机待遇怎么样
学了数电之后,能直接弄得也就是CPLD/FPGA这类芯片的开发。不过我个人认为,数电最大的价值在于它的一种逻辑思维方法。
如果搞电路设计(硬件电路),最主要还是模电。
另外还有一条道路是搞硬件程序开发,这种东西虽然不是直接用到数电,但是数字电路的逻辑思维确实在那里有很大作用,另外,数字电路中提到的竞争冒险问题也是需要考虑的。
PS:我学电子已经12年了,我感觉你在看待专业课程的时候,不要太急,在电路设计中往往不是一门课起作用,而是很多课程综合在一起。单独一门课就够了的很少很少。你有空多钻研钻研,提升自己的专业知识和能力,这样出去以后,你的机会就会比别人多一些,起点也会比别人高,这样对于你后面数十年的职业生涯会比较有利。
关于单片机,DSP,ARM,嵌入式,Linux,EDA
就你学习这点技术根本不够资格成为一名工程师,真正工程师有两种硬件工程师,软件工程师,我来一一给你介绍不同工程师的技术要求:
硬件工程师: 1. 有模电、数电基础,能知道放大电路,能设计出简单的放大电路,开关电路,电源电路就OK了。
2. 最少会一种PCB绘图软件,能独立完成原理图绘制、PCB设计,必须知道PCB的抗干扰设计。
3. 必须精通一款单片机51单片机已经过时了公司开发都是用ARM STM32单片机,这个是必须的,有的公司不要求会单片机。
待遇是看能力的, 5000一个月,如果牛b一点单片机开发工程师,我们公司项目经理一个月 17000 模电、数电精通,单片机精通,自己能独立完成.
硬件编程学什么
首先单片机,DSP,ARM都算是微型计算机吧,都是嵌入式系统的核心,其中低端一点的处理器就是单片机了,高端一点的就是ARM(为处理器,很多款诺基亚就是用的ARM11芯片)。DSP(数字处理器),速度相当快。
LINUX就是一种的嵌入式系统中很流行的开放的操作系统,可以移植在微型计算机当中,实现实时控制,
嵌入式分软硬,软一点就是操作系统方面,底册、层驱动程序方面吧,比如Linux等等。。硬一点就是以单片机,DSP,ARM为核心处理器和的一些数字模拟电路吧。。
EDA是一系列电子设计自动化软件。
如果你要做这些方面的话,每一个都不是简单的,需要循序渐进,建议如果有数电,模电等电路知识后可以从简单一点的单片机开始,然后学ARM会容易一些,这些也算是嵌入式系统范畴了,只是做的是嵌入式的硬件方面。
我也是学生,全是个人查资料的一些理解,如有不实,请谅解。
ARM 怎样做到低功耗
硬件编程学什么的回答如下:
硬件编程是一个涉及底层硬件设计和编程的领域,它需要掌握一些特定的知识和技能。
以下是一些需要学习的硬件编程相关内容:
数字电路设计:
学习数字电路设计的基础知识,如逻辑门、触发器、寄存器、移位器等,以及如何使用这些基本元素构建更复杂的电路。
微处理器体系结构:
掌握微处理器的体系结构和工作原理,如x86、ARM等,了解指令集和内存管理等方面的知识。
汇编语言:
学习汇编语言的基础知识和语法,了解如何编写汇编程序,以及如何将汇编程序与高级语言程序进行集成。
硬件描述语言(HDL):
学习硬件描述语言如Verilog、VHDL等,了解如何使用这些语言描述电路的行为和结构,以及如何将HDL代码编译成可编程逻辑器件(FPGA或ASIC)的配置文件。
电路仿真工具:
学习使用电路仿真工具如ModelSim、Quartus等,了解如何对HDL代码进行仿真和验证,以确保电路设计的正确性。
嵌入式系统开发:
学习嵌入式系统的基本概念和开发流程,了解如何将程序下载到嵌入式系统中,以及如何在嵌入式系统中进行调试和测试。
硬件调试工具:
学习使用硬件调试工具如JT、示波器、逻辑分析仪等,了解如何对硬件电路进行调试和故障排除。
操作系统和驱动程序开发:
学习操作系统和驱动程序开发的基础知识,如Bootloader、内核、文件系统等,了解如何开发USB、Ethernet等设备的驱动程序。
嵌入式图形界面开发:
学习嵌入式图形界面开发的基础知识,如嵌入式GUI、Qt/Embedded等,了解如何开发基于图形界面的应用程序。
除了以上提到的内容外,硬件编程还需要学习一些其他相关知识和技能,如电源设计、电磁兼容性(EMC)设计、信号完整性(SI)分析等。
同时,不断学习和掌握新的技术和工具也是非常重要的。通过不断学习和实践,可以不断提升自己的硬件编程能力和综合素质,以适应不断变化的市场需求。
从底层硬件到上层应用,嵌入式软件的开发可以分为哪几类?
考虑低功耗设计可以从以下几方面综合考虑:
·处理器的选择
·接口驱动电路设计
·动态电源管理
·电源供给电路的选择
一、处理器的选择
我们对一个嵌入式系统的选型往往是从其CPU和操作系统(OS)开始的,一旦这两者选定,整个大的系统框架便选定了。我们在选择一个CPU的时候,一般更注意其性能的优劣(比如时钟频率等)及所提供的接口和功能的多少,往往忽视其功耗特性。但是因为CPU是嵌入式系统功率消耗的主要来源---对于手持设备来讲,它几乎占据了除显示屏以外的整个系统功耗的一半以上(视系统具体情况而定),所以选择合适的CPU对于最后的系统功耗大小有举足轻重的影响。
一般的情况下,我们是在CPU的性能(Performance)和功耗(Power Consumption)方面进行比较和选择。通常可以用每执行1M次指令所消耗的能量来进行衡量,即Watt/MIPS。但是,这仅仅是一个参考指标,实际上各个CPU的体系结构相差很大,衡量性能的方式也不尽相同,所以,我们还应该进一步分析一些细节。
我们把CPU的功率消耗分为两大部分:内核消耗功率PCORE和外部接口控制器消耗功率PI/O,总的功率等于两者之和,即P=PCORE+PI/O。对于 PCORE,关键在于其供电电压和时钟频率的高低;对于PI/O来讲,除了留意各个专门I/O控制器的功耗外,还必须关注地址和数据总线宽度。下面对两者分别进行讨论:
1、CPU供电电压和时钟频率
我们知道,在数字集成电路设计中,CMOS电路的静态功耗很低,与其动态功耗相比基本可以忽略不计,故暂不考虑。其动态功耗计算公式为:
Pd=CTV2f
式中,Pd---CMOS芯片的动态功耗
CT----CMOS芯片的负载电容
V----CMOS芯片的工作电压
f-----CMOS芯片的工作频率
由上式可知,CMOS电路中的功率消耗是与电路的开关频率呈线性关系,与供电电压呈二次平方关系。对于一颗CPU来讲, Vcore电压越高,时钟频率越快,则功率消耗越大。所以,在能够满足功能正常的前提下,尽可能选择低电压工作的CPU能够在总体功耗方面得到较好的效果。对于已经选定的CPU来讲,降低供电电压和工作频率,也是一条节省功率的可行之路。
2、总线宽度
我们还经常陷入一个误区,即:CPU外部总线宽度越宽越好。如果我们仅仅从数据传输速度上来讲,也许这个观点是对的,但如果在一个对功耗相当敏感的设计来说,这个观点就不一定正确了。
同样引用公式Pd=CTV2f ,对于每一条线(地址等数据线)而言,都会面临这样的功率消耗,显而易见,当总线宽度越宽的时候,功耗自然越大。每条线路的容性负载都不太一样,但一般都在4~12PF之间。我们来看下面一个例子:一片1Mbit Flash通过8bit和16bit的总线与CPU相连,总线频率为4MHZ ,总线电压为3.3V。
用16-bit总线和用8-bit总线会有3.7mw的功耗差异。当然,如果需要大量频繁地存取数据的场合下,用8-bit总线不见得会经济,因为增加了读写周期。
另外,从上面的例子我们也可以看到:如果CPU用内置Flash的方式,也可大大地降低系统功率消耗。
二、接口驱动电路的低功耗设计
接口电路的低功耗设计,往往是容易被大家所忽略的一个环节,在这个环节里,我们除了考虑选用静态电流较低的芯片外,还应该考虑以下几个因素:
上拉电阻/下拉电阻的选取
对悬空脚的处理
Buffer的必要性
通常我们习惯随意地确定一个上拉电阻值,而没有经过仔细地计算。现在我们来简单计算一下,如果在一个3.3V的系统里用4.7KΩ为上拉电阻,当输出为低的时候,每只脚上的电流消耗就为0.7mA,如果有10个这样的信号脚时,就会有7mA电流消耗在这上面。所以我们应该在考虑在能够正常驱动后级的情况下(即考虑IC的VIH或VIL),尽可能选取更大的阻值。现在很多应用设计中的上拉电阻值甚至高达几百KΩ。另外,当一个信号在多数情况下时为低的时候,我们也可以考虑用下拉电阻以节省功率。
CMOS器件的悬空脚也应该引起我们的重视。因为CMOS悬空的输入端的输入阻抗极高,很可能感应一些电荷导致器件被高压击穿,而且还会导致输入端信号电平随机变化,导致 CPU在休眠时不断地被唤醒,从而无法进入休眠状态或其他莫名其妙的故障,所以正确的方法是将未使用到的输入端接到VCC或地。
Buffer 有很多功能,如电平转换,增加驱动能力,数据传输的方向控制等等,但如果仅仅基于驱动能力的考虑增加 Buffer的话,我们就应该慎重考虑了,因为过驱动会导致更多的能量被白白浪费掉。所以我们应该仔细检查芯片的最大输出电流IOH和IOL是否足以驱动下级IC,如果可以通过选取合适的前后级芯片来避免Buffer的使用,对于能量来讲是一个很大的节约。
三、动态电源管理(DPM)
所谓动态的电源管理就是在系统运行期间通过对系统的时钟或电压的动态控制来达到节省功率的目的,这种动态控制是与系统的运行状态密切相关的,这个工作往往通过软件来实现。
1、选取不同工作模式
如前所述,系统时钟对于功耗大小有非常明显的影响。所以我们除了着重于满足性能的需求外,还必须考虑如何动态地设置时钟来达到功率的最大程度节约。CPU内部的各种频率都是通过外部晶振频率经由内部锁相环(PLL)倍频式后产生的。于是,是否可以通过内部寄存器设置各种工作频率的高低成为控制功耗的一个关键因素。现在很多CPU都有多种工作模式,我们可以通过控制CPU进入不同的模式来达到省电的目的。
我们以SAMSUNG S3C2410X (32bit arm 920T内核)为例,它提供了四种工作模式:正常模式、空闲模式、休眠模式、关机模式
CPU在全速运行的时候比在空闲或者休眠的时候消耗的功率大得多。省电的原则就是让正常运行模式远比空闲、休眠模式少占用时间。在类似PDA的设备中,系统在全速运行的时候远比空闲的时候少,所以我们可以通过设置使CPU尽可能工作在空闲状态,然后通过相应的中断唤醒 CPU,恢复到正常工作模式,处理响应的,然后再进入空闲模式。
2、关闭不需要的外设控制器
一般来讲,CPU都提供各种各样的接口控制器,如I2C、I2S、LCD、Flash、Timer、UART、SPI、 USB等等,但这些控制器在一个设计里一般不会全部都用到,所以我们对于这些不用的控制器往往任其处于各种状态而不用花心思去管。但是,当你想尽可能节省功耗的情况下,则必须关注它们的状态,因为如果不将其关闭,即使它们没有处于工作状态,但是仍然会消耗电流。
通过设置寄存器我们可以有选择地关闭不需要的功能模块,以达到节省电的目的,比如在我们的实际应用中,ADC、 I2C、I2S和SPI都没有用到,通过CLKCON寄存器的设置,我们可以节省2mA的电流。当然,也可以动态关闭一些仍然需要的外设控制器来进一步节省能量。如在空闲模式下,CPU 内核停止运行,我们还可以进一步关闭一些其他的外设控制器,如USB,SDI,FLASH等,只要保证唤醒CPU的I/O控制器正常工作即可,如通过 UART唤醒,则UART控制器不能被关闭。等到CPU被唤醒后,再将USB、SDI、Flash等控制器再打开。
上面两种方式只是动态电源管理的最为简单的实现。在这两种方式中,一种是通过改变了系统的时钟频率,另一种是通过控制外设控制器的开关来达到节约能量的目的。在最近的研究中,已经有人把目光投入到了同时动态改变处理器的电压和频率来进一步节省功率,如IBM和 MontaVista合作进行的嵌入式系统的动态电源管理的研究。这是一个更为复杂、也更为系统的工程,它涉及了从硬件到操作系统以及应用层的有关内容。
四、电源供给电路
在数字电路设计中,工程师往往习惯于用最简单的方式来完成电源的设计,但在对功耗要求严格的情况下,我们就必须对用何种电压变换结构仔细考虑一番再做决定。
通常来讲,我们有以下几种进行电压转换的方式:
线性稳压(Linear Regulator)
DC to DC
LDO(Low Drop-Out)
其中LDO本质上还是一种线性稳压,主要用于压差较小的场合。所以我们将其合并为线性稳压来谈。
对于线性稳压来说,其特点时电路结构简单,所需元件数量少,输入和输出压差可以很大,但其致命弱点就是效率低,功耗高。其效率η完全取决于输出电压大小。
压差越大,可提供的最大输出电流越小。设用LM7805,输入12V,输出电压为5V,压差为7V, 输出的电流为1A的情况下,我们可以计算出消费在线性稳压器上的功率为P=ΔV*IOUT=7*1=7w,效率仅为η=5×1/(5*1+7*1)= 41.7%,由这个结果我们可以看出,有一大半功率消耗在IC本身上。
DC to DC电路的特点是效率高,升降压灵活,但缺点时电路相对复杂,干扰较大。一般常见的由Boost和Buck两种电路,前者用于升压,后者用于降压
这两种电路的核心是通过MOS管的开关来控制电感和电容间的能量转换。调节MOS管栅极脉冲信号的占空比可以控制MOS管的导通和关闭,从而改变输出电压的高低。
由转换效率图可见,当输入为12v,输出为5v时,转换效率约为82%,为线性稳压器转换效率的一倍。LM2596的开关频率为固定的130KHZ,如果我们提升器件的开关频率,如用NS的LM2676时(260KHZ开关频率),在同样的应用条件下,效率可达88%以上。
从上面的论述中我们可见,在适当的情况下使用DC-DC的电压转换线路,可以有效地节约能量,降低整机功耗。
一、嵌入式系统的概念
着重理解逗嵌入地的概念
主要从三个方面上来理解。
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下如何进行编程接口函数调用,到操作系统下只是编译和开发环境有相应的变化而已。如果涉及Je方面的编程也是如此的。嵌入式系统中涉及算法的由专业算法的人来处理的,不必归结到嵌入式系统范畴内。但如果涉及嵌入式系统下面嵌入式数据库、基于嵌入式系统的网络编程和基于某此应用层面的协议应用开发(比如基于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与9的差别就是在某些功能指令集上丰富了些,主频提高一些而已,就比如286和386。对于用户来讲可能觉查不到什么,只能是感觉速度有些快而已。
ARM7比较适合于那些想从硬件层面上走的人,因为ARM7系列处理器内部带MMU的很少,而且比较好控制,就比如S3C44B0来讲,可以很容易将Cache关了,而且内部接口寄存器很容易看明白,各种接口对于用硬件程序控制或AXD单步命令行指令都可以控制起来,基于51单片机的思想很容易能把他搞懂,就当成个32位的单片机,从而消除很多51工程师想转为嵌入式系统硬件ARM开发工程师的困惑,从而不会被业界某此不是真正懂嵌入式烂公司带到操作系统层面上去,让他们望而失畏,让业界更加缺少这方面的人才。
而嵌入式系统不管硬件设计还是软件驱动方面都是十分注重接口这部分的,选择平台还要考察一个处理器的外部,你接触外部越多,越熟悉他们那你以后就业成功的机率就越高,这就是招聘时所说的有无逗相关技能地,因为一个人不可能在短短几年内把所有的处理器都接触一遍,而招聘单位所用的处理器就可能是我们完全没有见过的,就拿台湾数十家小公司(市价几千万)的公司生产的ARM类处理器,也很好用,但这些东西通用性太差,用这些处理器的公司就只能招有相关工作经验的人了,那什么是相关工作经验,在硬件上讲的是接口设计,在软件上讲是操作系统方面相关接口驱动及应用开发经验。我从业近十年,2000年ARM出现,我一天始做ARM7,然后直接跑到了Xscale(这个板本在ARM10-11之间),一做就是五年,招人面试都不下数百人,在这些方面还是深有体会的。
我个人认为三星的S3C44b0对初学者来说比较合适,为什么这么说哪看因为接口比较丰富,技术成熟,资料较多,应该十分适合于初学者,有问题可能很容易找人帮且解决,因为大多数人都很熟悉,就如同51类的单片机,有N多位专家级的人物可以给你帮忙,相关问题得以很快解答,所然业界认为这款ARM都做用得烂了,但对于初学者来,就却是件好事。
因此开发系统的选择,要看自己的未来从来目标方向、要看开发板接口、还要看业界的通用性。
五、如何看待培训。
首先说说我自己,我目前从业近十年,与国内嵌入式系统行业共同起步,一直站在嵌入式系统行业前沿,设计过多款高端嵌入式系统平台产品并为众多公司提供过解决方案,离职前为从事VOIP的美资公司设计IP-PBX,历任项目经理、项目主管、技术总监、部门经理,积累众多人脉,并集多年经验所得,考虑到学生就业与公司招人的不相匹配,公司想招人招不到,而学生和刚毕业的工程师想找份工作也不太容易,于此力创知天行科技有限公司,开展嵌入式系统教育培训。
因一线的科研人员和一线的教师不相接触,导至国内嵌入式人才缺乏,国外高校的技术超前于业界公司,而国内情况是业界公司方面的嵌入式系统技术要远远领先于高校。为架构业界与高校沟通的桥梁,把先进技能带给高校学子,为学生在就业竞争中打造一张王牌,并为业界工程师快速提升实现自我创造机遇,我就这样辞去了外企年薪20多万的职位,做嵌入式系统方面的培训了。
对于培训来讲,是花钱来买时间,很多工程师都喜欢自己学,认为培训不值,这也是有可能的,纯为赚钱的培训当然不会太有价值,但对于实力型的培训他们可能就亏大了,有这样一笔帐不知他们算过没有,如果一个一周的培训,能带给他们自学两年后才能掌握的知识,在培训完后他们用三个月到半年时间消化培训内容,这样他会省约至少一年半的时间来学其它的或重新站在另一个高度上工作,那么他将最迟一年后会拿到他两年后水平所对应的工资,就是在工资与水平对应的关系上比同批人缩短一年,每月按最少1千计,再减去培训费用至少多1.0万,同时也省了一年时间,不管是休闲也好,再继续提高也好,总之是跑到了队伍的前面了。
另一层面上讲,对于新人的培训相当于他们为自己提前买了份失业保险,有师傅会带领他们入道,我今年暑时班里最年轻的一个学生是大二的,今年才上大三,这学期才刚学单片机,但现在ARM方面的编程工作已经搞得有声有色了,再过一年多毕业,他还会失业吗看
再者通过培训,你可以知道很多业界不为常人所知的事,同时也为自己找了个师傅,就比如说,两个工程师分别用S3C2410和PXA255来做手持设备,同样两人都工作四年,再出去找工作,两人工资可能最多可相差一倍,为什么看这就是业界不为常人所知的规则,2410属于民品,被业界用烂了,做产品时成本特敏感,当然也对人才成本敏感了,PXA255是intel的东西,一个255 CPU能买三个2410,一直被业界定义为贵族产品,用的公司都是大公司或为军方服务的公司,不会在乎成本,只要把东西做好,一切都好说,但这方面做的人也少啊,因为开发系统贵啊。
对于说为自已找了个好师傅,我想是这样的,因为同级工程师间存在着某此潜在的竞争关系,有很多人不愿意把自己知道的东西教给别人,这意味着他将要失业,就是所说的教会徒弟,饿死师傅,但对于我们这些人就不存在这样的关系了,我是在嵌入式系统平台设计上走到了一定程序,目前在国内这块的技术上已经是自己很难再突破自己,因此很多东西我对大家都是OPEN的,就比如说下面那部分关于接口设计中所提到的时序接口东西,我要是不讲,却使是高级硬件工程师我想也几乎只有10%的人能知道吧。
六、成为高级嵌入式系统硬件工程师要具备的技能。
首先我声明,我是基于嵌入式系统平台级设计的,硬件这个方向我相对来讲比较有发言权,如果是其它方面所要具备的基本技能还要和我们培训中心其它专业级讲师沟通,或去网站看看。他们的方面上我只能说是知道些,但不是太多,初级的问题也可以问我。
对于硬件来讲有几个方向,就单纯信号来分为数字和模拟,模拟比较难搞,一般需要很长的经验积累,单单一个阻值或容值的精度不够就可能使信号偏差很大。因此年轻人搞的较少,随着技术的发展,出现了模拟电路数字化,比如手机的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\ORCAD\PowperPCB\Maplux2\ISE、VDHL语言,要能用到这些工具画图画板做逻辑设计,再有就是接口设计审图能力,再者就是调试能力,如果能走到总体方案设计这块,那就基本上快成为资深工程师了。
硬件是要靠经验,也要靠积累的,十年磨一剑,百年磨一针。