教你如何学习嵌入式系统

一、如何学习嵌入式系统- - 嵌入式系统的概念

着重理解“嵌入”的概念 ,主要从三个方面上来理解。

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中。而在定制操作系统内核时所选择的应用程序组 件就是完成了软件的“嵌入”,比如Win在内核定制时,会有相应选择,其中就是wordpad,PDF,MediaPlay等等选择,如果我们选择 了,在CE启动后,就可以在界面中找到这些东西,如果是以前PC上将的windows操作系统,多半的东西都需要我们得新再装。

3、把软件内核或应用文件系统等东西烧到嵌入式系统硬件平台中的ROM中就实现了一个真正的“嵌入”。

二、如何学习嵌入式系统- -嵌入式系统的分层与专业的分类。

嵌入式系统分为4层,硬件层、驱动层、操作系统层和应用层。

1、硬件层,是整个嵌入式系统的根本,如果现在单片机及接口这块很熟悉,并且能用C和汇编语言来编程的话,从嵌入式系统的硬件层走起来相对容易,硬件层也是驱动层的基础,一个优秀的驱动工程师是要能够看懂硬件的电路图和自行完成CPLD的逻辑设计的,同时还要对操作系统内核及其调度性相当的熟悉的。但硬件平台是基础,增值还要靠软件。

硬件层比较适合于,电子、通信、自动化、机电一体、信息工程类专业的人来搞,需要掌握的专业基础知识有,单片机原理及接口_技术、微机原理及接口_技术、C语言。

3、驱动层,这部分比较难,驱动工程师不仅要能看懂电路图还要能对操作系统内核十分的精通,以便其所写的驱动程序在系统调用时,不会独占操作系统时间片,而导致其它任务不能动行,不懂操作系统内核架构和实时调度性,没有良好的驱动编写风格,按大多数书上所说添加的驱动的方式,很多人都能做到,但可能连个初级的驱动工程师的水平都达不到。

嵌入式的驱动层比较适合于电子、通信、自动化、机电一体、信息工程类专业尤其是计算机偏体系结构类专业的人来搞,除硬件层所具备的基础学科外,还要对数据结构与算法、操作系统原理、编译原理都要十分精通了解。

3、操作系统层,对于操作系统层目前可能只能说是简单的移植,而很少有人来自已写操作系统,或者写出缺胳膊少腿的操作系统来,这部分工作大都由驱动工程师来完成。操作系统是负责系统任务的调试、磁盘和文件的管理,而嵌入式系统的实时性十分重要。据说,XP操作系统是微软投入300人用两年时间才搞定的,总时工时是600人年,中科院软件所自己的女娲Hopen操作系统估计也得花遇几百人年才能搞定。因此这部分工作相对来讲没有太大意义。

4、应用层,相对来讲较为容易的,如果会在windows下如何进行编程接口函数调用,到操作系统下只是编译和开发环 境有相应的变化而已。如果涉及Jave方面的编程也是如此的。嵌入式系统中涉及算法的由专业算法的人来处理的,不必归结到嵌入式系统范畴内。但如果涉及嵌 入式系统下面嵌入式数据库、基于嵌入式系统的网络编程和基于某此应用层面的协议应用开发(比如基于SIP、H.323、Astrisk)方面又较为复杂, 并且有难度了。

三、如何学习嵌入式系统- -目标与定位。

先有目标,再去定位。

学ARM,从硬件上讲,一方面就是学习接口电路设计,另一方面就是学习汇编和C语言的板级编程。如果从软件上讲,就是要学习基于ARM处理器的操作系统层面 的驱动、移植了。这些对于初学都来说必须明确,要么从硬件着手开始学,要么从操作系统的熟悉到应用开始学,但不管学什么,只要不是纯的操作系统级以上基于 API的应用层的编程,硬件的寄存器类的东西还是要能看懂的,基于板级的汇编和C编程还是要会的。因此针对于嵌入式系统的硬件层和驱动程的人,ARM的接 口电路设计、ARM的C语言和汇编语言编程及调试开发环境还是需要掌握的。

因此信盈达小编认为,对于初学者必然要把握住方向,自己学习嵌入式系统的目标是什么,自己要在那一层面上走。然后再着手学习较好,与ARM相关的嵌入式系统的较为实际的两个层面硬件层和驱动层,不管学好了那一层都会很有前途的。

如果想从嵌入式系统的应用层面的走的话,可能与ARM及其它体系相去较远,要着重研究基嵌入式操作系统的环境应用与相应开发工具链,比如WinCe操作系统下的EVC应用开发(与windows下的VC相类似),如果想再有突破就往某些音视频类的协议上靠,比如VOIP领域的基于SIP或H.323协议的应用层开发,或是基于嵌入式网络数据库的开发等等。

四、如何学习嵌入式系统- -开发系统选择。

很多ARM初学者都希望有一套自己能用的系统,但他们住住会产生一种错误认识就是认为处理器版本越高、性能越高越好,就象很多人认为ARM9与ARM7好, 信盈达小编认为对于初学者在此方面以此入门还应该理智,开发系统的选择最终要看自己往嵌入式系统的那个方向上走,是做驱动开发还是应用,还是做嵌入式系统硬件层设计与板级测试。

ARM7比较适合于那些想从硬件层面上走的人,因为ARM7系列处理器内部带MMU的很少,而且比较好控制,就比如S3C44B0来讲,可以很容易将 Cache关了,而且内部接口寄存器很容易看明白,各种接口对于用硬件程序控制或AXD单步命令行指令都可以控制起来,基于51单片机的思想很容易能把他 搞懂,就当成个32位的单片机,从而消除很多51工程师想转为嵌入式系统硬件ARM开发工程师的困惑,从而不会被业界某此不是真正懂嵌入式烂公司带到操作 系统层面上去,让他们望而失畏,让业界更加缺少这方面的人才。

五、如何学习嵌入式系统- -成为高级嵌入式系统硬件工程师要具备的技能。

对于硬件来讲有几个方向,就单纯信号来分为数字和模拟,模拟比较难搞,一般需要很长的经验积累,单单一个阻值或容值的精度不够就可能使信号偏差很大。因此年轻人搞的较少,随着技术的发展,出现了模拟电路数字化,比如手机的Modem射频模块,都采用成熟的套片,而当年国际上只有两家公司有此技术,自我感觉模拟功能不太强的人,不太适合搞这个,如果真能搞定到手机的射频模块,只要达到一般程度可能月薪都在15K以上。

另一类就是数字部分了,在大方向上又可分为51/ARM的单片机类,DSP类,FPGA类, 国内FPGA的工程师大多是在IC设计公司从事IP核的前端验证,这部分不搞到门级,前途不太明朗,即使做个IC前端验证工程师,也要搞上几年才能胜任。

一个优秀的硬件工程师应该能够在没有参考方案的前提下设计出一个在成本和性能上更加优秀的产品,靠现有的方案,也要进行适当的可行性裁剪,但不是胡乱的来,我遇到一个工程师把方案中的5V变1.8V的DC芯片,直接更换成LDO,有时就会把CPU烧上几个。

总之,硬件的内容很多很杂,硬件那方面练成了都会成为一个高手。硬件是要靠经验,也要靠积累的,十年磨一剑,百年磨一针。

教你如何学习嵌入式系统相关推荐

  1. 如何学STM32 —— 十年经验教你如何学习嵌入式系统

    一.如何学习嵌入式系统- - 嵌入式系统的概念 着重理解"嵌入"的概念 ,主要从三个方面上来理解. 1.从硬件上,"嵌入"将基于CPU的处围器件,整合到CPU芯 ...

  2. 很朴素的学习嵌入式系统的经验

    学习嵌入式,该学习什么基本的知识呢? 首先C语言,这个是毋庸置疑的,不管是做嵌入式软件还是硬件开发的人员,对C语言的掌握这个是必需的,特别是对于以后致力于嵌入式软件开发的人,现在绝大部分都是用C语言, ...

  3. 学习嵌入式系统的误区

    由于微处理器与微控制器种类繁多,也可能由于不同公司.不同机构出于自身的利益,做出一些误导性宣传,特别是我国嵌入式微控制器制造技术的落后及其他相关情况,使得人们对微控制器的发展,在认识与理解上存在差异. ...

  4. 新手小白学习嵌入式系统怎么学?嵌入式学习路线

    嵌入式可以说是当下有前途的IT应用领域,小到电子词典.手机,大到航空航天设备都是典型的嵌入式系统,因此,通过嵌入式技术人才的职业发展空间是非常大的.那么想进入嵌入式行业,新手小白学习嵌入式系统怎么学呢 ...

  5. 【转载】学习嵌入式系统需要具备的条件、方法及步骤

    事先说明,我并不是对嵌入式有多大的兴趣,但我非常希望自己能一直向底层前进,不停地去探究最底层的奥秘. 查阅了很多资料,似乎嵌入式最附合自己对底层的探求,或许它是,或许不是,但对于现在的我而言最重要的是 ...

  6. 学习嵌入式系统需要具备的条件、方法及步骤

    2019独角兽企业重金招聘Python工程师标准>>> 1.将C和C++学好学精(语言层次): 2.将数据结构.算法.操作系统学扎实(内功层次): 3.爬山成功后,深入学习.理解.运 ...

  7. 嵌入式学习路线怎么学,如何学习嵌入式系统

    随着互联网的快速发展,嵌入式也越来越火热,更多的人投入到嵌入式开发的行列中来,那么想要学习嵌入式,该从哪里入手学习,嵌入式学习路线图怎么学? 想要学习好嵌入式,想成为嵌入式软件工程师.那么当前企业需要 ...

  8. arm体系结构与编程_教程:如何学习嵌入式系统(基于ARM平台)

    一.嵌入式系统的概念 着重理解"嵌入"的概念 主要从三个方面上来理解. 1.从硬件上,将基于CPU的处围器件,整合到CPU芯片内部,比如早期基于X86体系结构下的计算机,CPU只是 ...

  9. 如何学习嵌入式系统(基于ARM平台)

    一.嵌入式系统的概念        着重理解"嵌入"的概念 主要从三个方面上来理解.     1.从硬件上,将基于CPU的处围器件,整合到CPU芯片内部,比如早期基于X86体系结构 ...

最新文章

  1. pandas使用idxmax函数获取dataframe每个数据行中最大值对应的列名称(column label of max value in each row in dataframe)
  2. MagicRecord For IOS API深层解析
  3. java实现把数据写入到Excel并下载
  4. 从学校到职场的路有多远
  5. python词云分析难吗_Python 词云分析周杰伦《晴天》
  6. php批量添加excel数据库表,php 把excel批量导入到数据库代码
  7. js中arguments的用法
  8. 4.看板方法---在五个季度内,从最差变为最好
  9. 快来对号入座!四句话告诉你怎样的企业适用于移动平台
  10. 【思路】Gym - 101173F - Free Figurines
  11. 8uftp,8uFTP是什么软件
  12. Python 中使用 ImageJ 详细教程
  13. Teleport Pro v1.72 中文破解版网页离线浏览工具下载
  14. 计算机五笔教学软件,指法练习 XP
  15. JIRA消息通知打通钉钉群
  16. 每月更新的Mac软件序列号查询小机器人KCNScrew Pack
  17. 北大学子求职经历与建议(IT类)
  18. 基于图像去雾处理的雾霾污染程度评估(任务书+lunwen+翻译及原文+答辩PPT)
  19. Mac AppStore 登陆提示 未知错误
  20. 2022年随州助理工程师职称如何申请?甘建二告诉你

热门文章

  1. java毕业生设计医患辅助系统计算机源码+系统+mysql+调试部署+lw
  2. 益盟服务器地址配置文件,益盟服务器地址配置文件
  3. 我的入门第二课——自由测试
  4. 遗传算法:交叉操作 Order Crossover OX1, OX2, OX3, OX4, OX5
  5. linux 运行php项目,如何在linux部署php项目
  6. 五、springboot 简单优雅是实现邮件服务
  7. 程序员都需要知道的8个冷知识
  8. 语音播报——用setTimeout实现轮询调用接口并播报语音功能
  9. 时间序列之自相关函数
  10. 小程序获取昵称和头像