高手分享的嵌入式学习心得

来源:本站
导读:目前正在解读《高手分享的嵌入式学习心得》的相关信息,《高手分享的嵌入式学习心得》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《高手分享的嵌入式学习心得》的详细说明。
简介:文章介绍了总结了高手对于嵌入式学习的心得,希望对大家有所帮助。

一、 嵌入式系统的定义

根据网络上搜索到的关于嵌入式系统的定义,结合自己对嵌入式系统的理解,把嵌入式系统定义如下:

1、 嵌入式系统简单的说就是面向特定应用设计的专用计算机系统;

2、 嵌入式系统与普通的PC或者notebook不同,嵌入式系统的外形尺寸、功耗、外部适配器等各种特征必须满足应用的要求和限制;

3、 嵌入式系统的软件包括操作系统烧录在一块电路板上;

4、 使用低功耗的X86级别的CPU,采用模块化的设计,配置了最基本的计算机周边配备而制成。这种计算机通常采用Windows操作系统;

5、 嵌入式系统的CPU可以是:4位、8位、16位、32位;

6、 嵌入式系统应用广泛,诸如:

1) 小家电

2) 汽车

3) 电梯

4) 电视

5) 录像机或者VCD、DVD

6) mp3、mp4

7) 工业控制

8) 医疗设备

9) 卫星

10) 电话

11) PDA

12) 飞行系统等等

13) ……

7、 嵌入式系统的体系结构:

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。。。

8、 嵌入式系统更多的表现为SoC的特点,也就是把整个系统都集成在一个芯片上,例如,ATMEL的arm7的芯片91sam7x128/256等;用户可以获得廉价而功能强大的嵌入式系统;

二、 最正确的学习道路 - 从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总线已被广泛应用于各个行业之中。大致有以下这些行业:

1、 汽车电子

2、 自动控制

3、 智能大厦

4、 电子系统

5、 纺织

6、 智能仪表

7、 医疗系统

8、 电梯

9、 安防监控

10、 电源

11、 运动控制

12、 …等各领域中,取代了原来的落后的RS485的通讯方式。

bitbus/modbus在物理层上都是Rs485的。

第二步:熟悉ARM7,掌握ARM这个超级单片机(32位)

三、 直奔主题 - 不要穿着棉袄洗澡

学什么很重要,没有必要穿着棉袄洗澡,直奔主题,要学就学最有用的东西。

比如单片机,学什么型号?市场上的单片机,有51、AVR、PIC、freescale等不同的系列,把任何一款单片机学会了玩通了那都是很不错;

但是我个人认为还是51系列的单片机在中国使用最多,去中发问问哪款单片机出货量最大就知道啦;

据说有些大学现在还在教授Z80,在论坛上争论起来,有些人支持,有些人反对;支持的人认为这是一款很好的原型机,可以学到很多计算机的原理;

但是对于嵌入式系统的学习者,一款已经过时的技术学它做什么?难道学了不能致用是对的?

学习51不也一样能了解计算机的基础知识?而学好了51毕业出去就能生存;

大家都知道485总线要想可靠工作非专家不可,而现在canbus作为更加可靠性能更加卓越的总线技术,节点数量每年递增;可以说,51+canbus能够让你如虎添翼;

那么,是不是去学习canbus要能获得更加远大的前途而不必在485上浪费宝贵的青春?答案显然是前者。

毕业之前的大学n年+毕业设计就是为了迈出就业的第一步;第一步很重要。

人生不要有断点,一步接着一步,现在迈出的一步就是为了下一步做好准备,甚至为了比较长远的以后...

四、 把嵌入式系统分成模块学习 - 庖丁怎样解牛?

拿到一个电路设计的任务的时候,或者拿到一块完整系统的电路板的时候,怎样去分析它的系统构成呢?

作为一个电子系统,它的构成通常是:

1. 单片机最小系统

2. 配置(内存、时钟、看门狗、eeprom)

3. 开关量输入

4. 开关量输出

5. 模拟量输入

6. 模拟量输出

7. 人机界面(按键+液晶显示/LED显示)

8. 通讯接口和协议

因此设计的时候,或者分析的时候,要按照这个分类来选择。

举个例子:开关量的输入输出的扩展,有以下的方法:

1、 串口扩展

2、 并行扩展

那么,在系统设计的时候,到底是使用串行扩展还是并行扩展,就需要权衡性能和价格,而选择一种最合适的扩展方法;

在《从51初学者到电子工程师》一书中,将把这些知识点列表出来。

在这个基础上,按照这个思路,您再去构筑自己的知识体系。

其实,任何一门学问,难得就是入门;而入门,就是要有一个完整的知识体系;一开始这个知识体系仅仅是一个个点,到后来就能成为一套完整的体系,知识的网越织越密。

五、 大学阶段掌握一门傍身之技取得先手之利 - 精通一门略通其它

看刚毕业的学生的简历,到处都是熟悉的字样,比如:

……

熟练使用c51、protel;

了解ARM/ucos2/Linux

分析过ucos2内核代码。

比较了解Linux底层硬件驱动软件结构比较

做过一些嵌入式硬件驱动的设计

很熟悉网络通信知识及网络编程

……

实际上,对于企业来说,并不关心你学了多少的知识,而是关心你是否有一门比较精通的手艺,来了就能干活。

那么,该怎样去做呢?俺觉得,应该是在精通一门手艺的情况下,略通其它。

嵌入式系统本身也是多方面的,硬件软件都有,但是,要有自己的最强项,因为企业都是用你的最强项。面面俱到实际上对于在校的学生来说是不可能的。我认为,对于在校的学生,应该重点放在c语言的熟练上;一方面是因为硬件没有实际的实践,很难能拿得出手,当然实践的成本也高;当然自己动手做一个学习板还是很有必要的,也不算很难;还有就是在企业中,软件和硬件的配置基本上是1:4的情况;对于成熟产品,基本上,硬件修改的情况非常小,升级都是在软件的功能的增加和完善上。

当然去强化自己的一门技术不等于放弃其它,而是说,要有重点的学习,要学会发力,把自己的精力集中在一门技术上;稍微大一点的企业都是有明确的分工的。

而如果能在大学学习的阶段就能熟练掌握一门技艺,或者是c语言的编程,或者是原理图和PCB,或者熟练掌握模拟电子...,那么就能很快找到嵌入式系统的开发工作,也就上道了。

六、 第一份工作很重要 – 哪怕去实验室打杂也要做跟嵌入式沾边的工作

第一份工作很重要,人生的第一步很重要,走好第一步,可以少走2~3年底的弯路;没有走好,有可能这辈子就废了;

工作了2~3年之后,用人单位看重的是你的工作经验,直接影响到您的价值能不能升值;就象微软不会招聘做物流的人去做软件,如果您做的是机械设计,当然用人单位也不会让您去做51的开发;

然而,第一份工作能不能做嵌入式开发,首先是您能不能在大学的4年内取得先手之利;先取得一些嵌入式开发的经验,比如C51的编程等等;

如果您经验也不是很丰富,一开始可以计较工资的高低,而是干了再说,哪怕是到实验室打杂;

这样也比干点别的再回过头来做嵌入式的开发要强。

七、 怎么加强自己?- 时间规划+勤奋

有一个明确的职业生涯的规划,同时要有一个达到这个目标的可以实施的准确的时间表。现在竞争这么激烈,不付出超出常人的努力在现今的中国是不可能脱颖而出的;人太多了,竞争太激烈了。企业如此,个人也是如此;当然,真正的卓越的企业或者个人,更重要的是理念,怎样去培养自己的核心竞争力!个人认为,简单的说,那就是技术专家+行业专家。

年轻人往往对职业生涯的规划迷迷茫茫;但是时间如白驹过隙一去不复返。如果说每个人的成就有大有小。善于思考是一方面,行动敏捷是一方面,抓紧时间,提高效率那则是最重要的因素之一。

八、 嵌入式系统设计的3个境界 - 熟练、熟能生巧、系统设计的思想

熟练:熟练掌握c语言、电路模块、eda工具;

熟能生巧:干活多了,从中悟出很多的技巧;干得活又快又好,这是熟能生巧;

系统设计:不满足于熟能生巧,而开始考虑,代码重复使用,代码设计的标准化、模块化;使得后来的开发能在一个标准的平台上进行;对嵌入式系统设计有了自己的独到的见解。

也还可以使用另外的标准来作为嵌入式系统设计的境界:

可靠性高:在同样的成本下,做出来的东西可靠性高于竞争对手;

可靠性高的情况下成本更低:能用比竞争对手成本更低的电路设计作出可靠性更高的产品;

在此基础之上,功能更加强大,用户使用更方便:进入到行业专家的境界了。

九、 细节决定成败 – 精心设计硬件电路

对于电子工程师而言,当拿到一个datasheet,或者一个电路图,或者设计的电路图,首先是站在前人的肩膀上,尽量不去做重复的劳动;但是,要对每一个电阻、电容在电路中的作用心里很清楚-把可有可无的器件去掉。要是您对电路中的元器件的作用还不是很清楚,举例,为什么上拉电阻是5.1K?换成1K行不行?换成10K行不行?什么是上拉?什么是强上拉?什么是弱上拉?去耦电容的作用是什么?这些都要做到清清楚楚。每一个细节构成可靠的产品;而一个细节的疏忽带来的是大量的经济的损失和声誉的丧失。

十、 改善你的命运 - 了凡四训

十一、 寻找足够大的平台 – 寻找机会与可持续发展

十二、 学会发力 - 快、准、狠

看准嵌入式系统设计可以作为傍身之技的话,那就要:

快:下手要快,想到了就去做,赶紧去学;

准:抓住8位mcu、can总线、arm7这样的道路,不走错;

狠:用功要狠,白天黑夜,吃了吃饭睡觉时时想着;男人嘛,就是要对自己狠一点。

十三、 团队精神 – 并行处理的代名词

定义可从几方面来理解嵌入式系统:

◆嵌入式系统是面向用户、面向产品、面向应用的,它必须与具体应用相结合才会具有生命力、才更具有优势。因此可以这样理解上述三个面向的含义,即嵌入式系统是与应用紧密结合的,它具有很强的专用性,必须结合实际系统需求进行合理的裁减利用。

◆嵌入式系统是将先进的计算机技术、半导体技术和电子技术和各个行业的具体应用相结合后的产 物,这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统。所以,介入嵌入式系统行业,必须有一个正确的定位。例如Palm 之所以在PDA领域占有70%以上的市场,就是因为其立足于个人电子消费品,着重发展图形界面和多任务管理;而风河的Vxworks之所以在火星车上得以 应用,则是因为其高实时性和高可靠性。

◆嵌入式系统必须根据应用需求对软硬件进行裁剪,满足应用系统的功能、可靠性、成本、体积等要 求。所以,如果能建立相对通用的软硬件基础,然后在其上开发出适应各种需要的系统,是一个比较好的发展模式。目前的嵌入式系统的核心往往是一个只有几K到 几十K微内核,需要根据实际的使用进行功能扩展或者裁减,但是由于微内核的存在,使得这种扩展能够非常顺利的进行。

实际上,嵌入式系统本身是一个外延极广的名词,凡是与产品结合在一起的具有嵌入式特点的控制系 统都可以叫嵌入式系统,而且有时很难以给它下一个准确的定义。现在人们讲嵌入式系统时,某种程度上指近些年比较热的具有操作系统的嵌入式系统,本文在进行 分析和展望时,也沿用这一观点。

一般而言,嵌入式系统的构架可以分成四个部分:处理器、存储器、输入输出(I/O)和软件(由于多数嵌入式设备的应用软件和操作系统都是紧密结合的,在这里我们对其不加区分,这也是嵌入式系统和Windows系统的最大区别)。

提醒:《高手分享的嵌入式学习心得》最后刷新时间 2024-03-14 01:15:22,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《高手分享的嵌入式学习心得》该内容的真实性请自行鉴别。