学习有捷径吗?俺认为是有的,正确的道路就是捷径。
就好象是登山,若是有导游图,那就能找到一条最正确的路线;若是没有导游图,本身瞎琢磨,东问西问,也未必能找到最佳的路线。
有时候回首前尘,会谓叹,要是当时我这样作就行了;这也说明了人生会有一个最优解。
嵌入式系统的学习也是同样,做为电子专业或者其它专业的学生来讲,想要把嵌入式系统的学习搞好,走一条成功的人生道路,那应该怎么去作呢?俺试着分析看看。
固然人生的道路不少不少,嵌入式不多是惟一的道路,也绝对不是最好的道路;这些都是因人而异的;
若是你没有什么别的资源,俺主要指的是人脉,资金,须要靠技术吃饭,正好你学的是电子、自动化、通信...这样跟嵌入式相关的专业,又正好喜欢技术,那么能够考虑把嵌入式看成本身的傍身之技来学习。这时寻求嵌入式系统学习的最优解就有了意义。
1、 嵌入式系统的定义
根据网络上搜索到的关于嵌入式系统的定义,结合本身对嵌入式系统的理解,把嵌入式系统定义以下:
一、 嵌入式系统简单的说就是面向特定应用设计的专用计算机系统;
二、 嵌入式系统与普通的PC或者notebook不一样,嵌入式系统的外形尺寸、功耗、外部适配器等各类特征必须知足应用的要求和限制;
三、 嵌入式系统的软件包括操做系统烧录在一块电路板上;
四、 使用低功耗的X86级别的CPU,采用模块化的设计,配置了最基本的计算机周边配备而制成。这种计算机一般采用Windows操做系统;
五、 嵌入式系统的CPU能够是:4位、8位、16位、32位;
六、 嵌入式系统应用普遍,诸如:
1) 小家电
2) 汽车
3) 电梯
4) 电视
5) 录像机或者VCD、DVD
6) mp三、mp4
7) 工业控制
8) 医疗设备
9) 卫星
10) 电话
11) PDA
12) 飞行系统等等
13) ……
七、 嵌入式系统的体系结构:
1) CPU
2) RAM
3) ROM或者flash ram
4) AD
5) DA
6) 人机界面(例如按键+LED/LCD/彩色液晶显示器/)
7) I/O
8) Usart
9) USB
10) CAN
11) 以太网
12) 嵌入式的操做系统,例如:uc/os、linux、vxworks、wince、dos。。。
八、 嵌入式系统更多的表现为SoC的特色,也就是把整个系统都集成在一个芯片上,例如,ATMEL的arm7的芯片91sam7x128/256等;用户能够得到廉价而功能强大的嵌入式系统;
2、 最正确的学习道路 - 从8位mcu到canbus到ARM7
第一步:熟悉8位mcu
我的的见解是,学习嵌入式的技术有个脉络:8位mcu(51或者avr...)+can2.0B+arm7+arm9,学习的时候能够按照这个脉络来进行;
做为低端的嵌入式系统,选择8位mcu做为入门是比较适中的,而8位mcu中,相比pic、avr、freescale等等8位单片机来讲,又以选择51核的单片机做为学习8位mcu的首选来更加合适。固然这个观点是仁者见仁智者见智;若是须要理由的话,那么也许如下这些理由能够做为参考:
1. 51上积累了大量的优秀的代码和其它资源;网络上这样的资源太多了,几乎就是不花钱的;
2. 生产51内核的单片机的厂家不少,好比:ATMEL、华邦、LG、飞利浦、STC(宏晶科技)、TI、…
3. 51单片机在细分低端市场,面向不一样的行业应用,厂家推出了不一样的产品,如LPC900系列,STC的12CXXXX系列;在功能、价格、功耗,体积,封装、抗干扰等方面来知足行业用户的需求;例如,如今的51单片机愈来愈多的集成了A/D、D/A、SPI、I2C、PWM、内部时钟、看门狗、eeprom、ISP/IAP等等,已经跟传统的ATMEL的89C51/52有了很大的差异!功能愈来愈强大的同时成本愈来愈低,并且不担忧某个厂家缺货...
4. 。。。。(还在不断增长之中)
第二步:熟悉can2.0A/B,在精通51的基础上,熟悉can2.0A/B
为何是canbus而不是modbus bus、bitbus?
CAN是德国Bosch 公司为解决现代车辆中众多的控制和数据交换问题,开发出一种CAN(Controller Area Network)现场总线通讯结构。其主要特色是:
1. 8字节的短帧传送,故传输时间短、抗干扰性强;
2. 高速,最高速度可达1Mbit/s;
3. 多主方式,多主之间又能够分红是主节点和次节点;各节点都可在任意时刻主动向网络上的其余节点发送信息,不分主从,通讯灵活;发送的时候总线自动仲裁主次;主节点占有优先权;
4. 能够作到全区广播、分区广播和点对点通信;
5. Can控制器自动过滤帧号不符的帧;大大减轻了CPU的负担;
6. 具备多种错误校验方式如CRC及其余校验措施,数据出错率极低;并且在严重错误的状况下,节点会自动离线,避免影响总线上其它节点;Rs485常常是一个节点影响了总线上全部的节点;
7. 采用无损坏的仲裁技术;
做为一种技术先进、可靠性高、功能完善、成本合理的远程网络通信控制方式,CAN总线已被普遍应用于各个行业之中。大体有如下这些行业:
一、 汽车电子
二、 自动控制
三、 智能大厦
四、 电子系统
五、 纺织
六、 智能仪表
七、 医疗系统
八、 电梯
九、 安防监控
十、 电源
十一、 运动控制
十二、 …等各领域中,取代了原来的落后的RS485的通信方式。
bitbus/modbus在物理层上都是Rs485的。
第二步:熟悉ARM7,掌握ARM这个超级单片机(32位)
3、 直奔主题 - 不要穿着棉袄洗澡
学什么很重要,没有必要穿着棉袄洗澡,直奔主题,要学就学最有用的东西。
好比单片机,学什么型号?市场上的单片机,有5一、AVR、PIC、freescale等不一样的系列,把任何一款单片机学会了玩通了那都是很不错;
可是我我的认为仍是51系列的单片机在中国使用最多,去中发问问哪款单片机出货量最大就知道啦;
听说有些大学如今还在教授Z80,在论坛上争论起来,有些人支持,有些人反对;支持的人认为这是一款很好的原型机,能够学到不少计算机的原理;
可是对于嵌入式系统的学习者,一款已通过时的技术学它作什么?难道学了不能致用是对的?
学习51不也同样能了解计算机的基础知识?而学好了51毕业出去就能生存;
你们都知道485总线要想可靠工做非专家不可,而如今canbus做为更加可靠性能更加卓越的总线技术,节点数量每一年递增;能够说,51+canbus可以让你如虎添翼;
那么,是否是去学习canbus要能得到更加远大的前途而没必要在485上浪费宝贵的青春?答案显然是前者。
毕业以前的大学n年+毕业设计就是为了迈出就业的第一步;第一步很重要。
人生不要有断点,一步接着一步,如今迈出的一步就是为了下一步作好准备,甚至为了比较长远的之后...
4、 把嵌入式系统分红模块学习 - 庖丁怎样解牛?
拿到一个电路设计的任务的时候,或者拿到一块完整系统的电路板的时候,怎样去分析它的系统构成呢?
做为一个电子系统,它的构成一般是:
1. 单片机最小系统
2. 配置(内存、时钟、看门狗、eeprom)
3. 开关量输入
4. 开关量输出
5. 模拟量输入
6. 模拟量输出
7. 人机界面(按键+液晶显示/LED显示)
8. 通信接口和协议
所以设计的时候,或者分析的时候,要按照这个分类来选择。
举个例子:开关量的输入输出的扩展,有如下的方法:
一、 串口扩展
二、 并行扩展
那么,在系统设计的时候,究竟是使用串行扩展仍是并行扩展,就须要权衡性能和价格,而选择一种最合适的扩展方法;
在《从51初学者到电子工程师》一书中,将把这些知识点列表出来。
在这个基础上,按照这个思路,您再去构筑本身的知识体系。
其实,任何一门学问,可贵就是入门;而入门,就是要有一个完整的知识体系;一开始这个知识体系仅仅是一个个点,到后来就能成为一套完整的体系,知识的网越织越密。
5、 尽量得到更多的信息 - 站在前人的肩膀上
当您拿到一个设计任务的时候,怎么入手呢?
要把这个任务按照模块分解,再充分利用网络上的资源,找到现成的或者相似的解决方案。
试举一例:
《基于CAN总线的智能I/O读写模块》
当你拿到这个任务的时候怎么着手呢?
一、 您会想到,哦can总线是什么东西啊,不知道;不过没有关系,狗狗之;
哈哈,结果出来啦,原来是周立功先生推的can总线啊,知道知道;把周立功网站上的有关can的资料都下载下来学习;
二、 哦那原理图怎么画呢?再次狗狗之,不过此次要使用图片;嗯可是我已经知道了,还有一个can总线控制器的芯片,sja1000,那就使用这个词来搜索吧;
哈哈找到了,连89c5X+sja1000+82C250(总线收发器)都有了;哦还有一个复位电路,不过没有关系,俺可使用stc89C5X,内置看门狗和复位电路;
三、 剩下I/O读写模块怎么办呢?
哦模块化的设计思路,想一想看,老树都说了什么?
I/O有多种的扩展方法,一种是串行、一种是并行,那我须要扩展吗?算算I/O的数量,硬件还剩下哪些资源呢?
一、p0、p2被占用了
二、WR、RD也被占用了,哦仔细看看,int0也被sja1000的中断占用了;
三、p1/p3加起来是16根口线,剩下16-3(RD、WR、int0)=13个口线;
四、看门狗喂狗须要一个(若是内置看门狗的能够不要)
还剩下13个;
如今须要8入8出,超出了,那么就须要扩展
扩展有2种方法:
一、串行
二、并行
串行速度慢点,可是简单;
也可使用并行,能够按照对ram的读写同样的方法来扩展;反正sja1000也是并行的;
串行又能够分红:
输入串行扩展;
输出串行扩展;
嗯要不就定下来,输入使用串行扩展,反正输入的开关量为了抗干扰也要使用时间片,1ms间隔扫描至少3~5次才能判断;
输入串行扩展可使用74HC165;好像74hc166也能够,不记得了;须要2根I/O;
这样13-2=11,再减去输出的8个口线,彻底够用了;还剩下3个口线;那就把串口也作出来调试和下载用;哈哈。。。
不过…开关量8入8出的信号是什么形式?
嗯一般输出输出都是干接点;
输入须要光电隔离;要使用一个隔离的Dc/DC模块;
输出7407直接驱动继电器便可;
光耦使用什么型号呢?
嗯老树说了,有TLP521-1,再找来TLP521-1的资料看了,光耦隔离的芯片也有了...
再找来7407的芯片的datasheet看了,驱动继电器的芯片的资料也有了...
再去找nais的继电器的资料看了,继电器输出也有了...
再去找接线端子的资料或者去配套市场看看,输入输出电源can接口的端子也有了...
作到这些,硬件就差很少了
......
哦还有协议,嗯使用啥协议呢?嗯好像zlg那里有一个什么iCAN的协议,但是网站上没有,怎么办呢?老办法,搜索看看,哦,老周那里有一本书讲了ican的协议,嗯去互动出版社定购一本,过2天就能送到了...
不过代码尚未,嗯再搜搜看,要不就到21ic上问问...
6、 大学阶段掌握一门傍身之技取得先手之利 - 精通一门略通其它
看刚毕业的学生的简历,处处都是熟悉的字样,好比:
……
熟练使用c5一、protel;
了解ARM/ucos2/Linux
分析过ucos2内核代码。
比较了解Linux底层硬件驱动软件结构比较
作过一些嵌入式硬件驱动的设计
很熟悉网络通讯知识及网络编程
……
实际上,对于企业来讲,并不关心你学了多少的知识,而是关心你是否有一门比较精通的手艺,来了就能干活。
那么,该怎样去作呢?俺以为,应该是在精通一门手艺的状况下,略通其它。
嵌入式系统自己也是多方面的,硬件软件都有,可是,要有本身的最强项,由于企业都是用你的最强项。面面俱到实际上对于在校的学生来讲是不可能的。我认为,对于在校的学生,应该重点放在c语言的熟练上;一方面是由于硬件没有实际的实践,很难能拿得出手,固然实践的成本也高;固然本身动手作一个学习板仍是颇有必要的,也不算很难;还有就是在企业中,软件和硬件的配置基本上是1:4的状况;对于成熟产品,基本上,硬件修改的状况很是小,升级都是在软件的功能的增长和完善上。
固然去强化本身的一门技术不等于放弃其它,而是说,要有重点的学习,要学会发力,把本身的精力集中在一门技术上;稍微大一点的企业都是有明确的分工的。
而若是能在大学学习的阶段就能熟练掌握一门技艺,或者是c语言的编程,或者是原理图和PCB,或者熟练掌握模拟电子...,那么就能很快找到嵌入式系统的开发工做,也就上道了。
7、 第一份工做很重要 – 哪怕去实验室打杂也要作跟嵌入式沾边的工做
第一份工做很重要,人生的第一步很重要,走好第一步,能够少走2~3年末的弯路;没有走好,有可能这辈子就废了;
工做了2~3年以后,用人单位看重的是你的工做经验,直接影响到您的价值能不能升值;就象微软不会招聘作物流的人去作软件,若是您作的是机械设计,固然用人单位也不会让您去作51的开发;
然而,第一份工做能不能作嵌入式开发,首先是您能不能在大学的4年内取得先手之利;先取得一些嵌入式开发的经验,好比C51的编程等等;
若是您经验也不是很丰富,一开始能够计较工资的高低,而是干了再说,哪怕是到实验室打杂;
这样也比干点别的再回过头来作嵌入式的开发要强。
8、 怎么增强本身?- 时间规划+勤奋
有一个明确的职业生涯的规划,同时要有一个达到这个目标的能够实施的准确的时间表。如今竞争这么激烈,不付出超出常人的努力在现今的中国是不可能脱颖而出的;人太多了,竞争太激烈了。企业如此,我的也是如此;固然,真正的卓越的企业或者我的,更重要的是理念,怎样去培养本身的核心竞争力!我的认为,简单的说,那就是技术专家+行业专家。
年轻人每每对职业生涯的规划迷迷茫茫;可是时间如白驹过隙一去不复返。若是说每一个人的成就有大有小。善于思考是一方面,行动敏捷是一方面,抓紧时间,提升效率那则是最重要的因素之一。
9、 嵌入式系统设计的3个境界 - 熟练、熟能生巧、系统设计的思想
熟练:熟练掌握c语言、电路模块、eda工具;
熟能生巧:干活多了,从中悟出不少的技巧;干得活又快又好,这是熟能生巧;
系统设计:不知足于熟能生巧,而开始考虑,代码重复使用,代码设计的标准化、模块化;使得后来的开发能在一个标准的平台上进行;对嵌入式系统设计有了本身的独到的看法。
也还可使用另外的标准来做为嵌入式系统设计的境界:
可靠性高:在一样的成本下,作出来的东西可靠性高于竞争对手;
可靠性高的状况下成本更低:能用比竞争对手成本更低的电路设计做出可靠性更高的产品;
在此基础之上,功能更增强大,用户使用更方便:进入到行业专家的境界了。
10、 细节决定成败 – 精心设计硬件电路
对于电子工程师而言,当拿到一个datasheet,或者一个电路图,或者设计的电路图,首先是站在前人的肩膀上,尽可能不去作重复的劳动;可是,要对每个电阻、电容在电路中的做用内心很清楚-把无关紧要的器件去掉。要是您对电路中的元器件的做用还不是很清楚,举例,为何上拉电阻是5.1K?换成1K行不行?换成10K行不行?什么是上拉?什么是强上拉?什么是弱上拉?去耦电容的做用是什么?这些都要作到清清楚楚。每个细节构成可靠的产品;而一个细节的疏忽带来的是大量的经济的损失和声誉的丧失。
11、 改善你的命运 - 了凡四训
12、 寻找足够大的平台 – 寻找机会与可持续发展
十3、 学会发力 - 快、准、狠
看准嵌入式系统设计能够做为傍身之技的话,那就要:
快:下手要快,想到了就去作,赶忙去学;
准:抓住8位mcu、can总线、arm7这样的道路,不走错;
狠:用功要狠,白天黑夜,吃了吃饭睡觉时时想着;男人嘛,就是要对本身狠一点。
十4、 团队精神 – 并行处理的代名词linux
--------------------------------------------------------------------------------------------- 编程
定义可从几方面来理解嵌入式系统:
网络
◆嵌入式系统是面向用户、面向产品、面向应用的,它必须与具体应用相结合才会具备生命力、才更具备优点。所以能够这样理解上述三个面向的含义,即嵌入式系统是与应用紧密结合的,它具备很强的专用性,必须结合实际系统需求进行合理的裁减利用。
模块化
◆嵌入式系统是将先进的计算机技术、半导体技术和电子技术和各个行业的具体应用相结合后的产 物,这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。因此,介入嵌入式系统行业,必须有一个正确的定位。例如Palm 之因此在PDA领域占有70%以上的市场,就是由于其立足于我的电子消费品,着重发展图形界面和多任务管理;而风河的Vxworks之因此在火星车上得以 应用,则是由于其高实时性和高可靠性。
工具
◆嵌入式系统必须根据应用需求对软硬件进行裁剪,知足应用系统的功能、可靠性、成本、体积等要 求。因此,若是能创建相对通用的软硬件基础,而后在其上开发出适应各类须要的系统,是一个比较好的发展模式。目前的嵌入式系统的核心每每是一个只有几K到 几十K微内核,须要根据实际的使用进行功能扩展或者裁减,可是因为微内核的存在,使得这种扩展可以很是顺利的进行。
性能
实际上,嵌入式系统自己是一个外延极广的名词,凡是与产品结合在一块儿的具备嵌入式特色的控制系 统均可以叫嵌入式系统,并且有时很难以给它下一个准确的定义。如今人们讲嵌入式系统时,某种程度上指近些年比较热的具备操做系统的嵌入式系统,本文在进行 分析和展望时,也沿用这一观点。
学习
通常而言,嵌入式系统的构架能够分红四个部分:处理器、存储器、输入输出(I/O)和软件(因为多数嵌入式设备的应用软件和操做系统都是紧密结合的,在这里咱们对其不加区分,这也是嵌入式系统和Windows系统的最大区别)。网站
@本篇文章纯属转载,但愿你们多看看牛人学习的心得。操作系统