如何快速自学好嵌入式?

__佳能感动常在 2024-11-16 07:27:14
最佳回答
我主要从以下几个方面来探讨一、嵌入式系统的概念 着重理解“嵌入”的概念主要从三个方面上来理解。 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在内核定制时,会有相应选择,其中就是ordpad,pdf,mediaplay等等选择,如果我们选择 了,在ce启动后,就可以在界面中找到这些东西,如果是以前pc上将的windows操作系统,多半的东西都需要我们得新再装。 3、把软件内核或应用文件系统等东西烧到嵌入式系统硬件**中的rom中就实现了一个真正的“嵌入”。 以上的定义是我在6、7年前给嵌入式系统下自话侧重于理解型的定义,书上的定义也有很多,但在这个领域范围内,谁都不敢说自己的定义是十分确切的,包括那些专家学者们,历为毕竟嵌入式系统是计算机范畴下的一门综合性学科二、嵌入式系统的分层与专业的分类。 嵌入式系统分为4层,硬件层、驱动层、操作系统层和应用层。1、硬件层,是整个嵌入式系统的根本,如果现在单片机及接口这块很熟悉,并且能用c和汇编语言来编程的话,从嵌入式系统的硬件层走起来相对容易,硬件层也是驱动层的基础,一个优秀的驱动工程师是要能够看懂硬件的电路图和自行完成cpld的逻辑设计的,同时还要对操作系统内核及其调度性相当的熟悉的。但硬件**是基础,增值还要靠软件。 硬件层比较适合于,电子、通信、自动化、机电一体、信息工程类专业的人来搞,需要掌握的专业基础知识有,单片机原理及接口技术、微机原理及接口技术、c语言。 2、 驱动层,这部分比较难,驱动工程师不仅要能看懂电路图还要能对操作系统内核十分的精通,以便其所写的驱动程序在系统调用时,不会独占操作系统时间片,而导至其它任务不能动行,不懂操作系统内核架构和实时调度性,没有良好的驱动编写风格,按大多数书上所说添加的驱动的方式,很多人都能做到,但可能连个初级的驱动工程师的水平都达不到,这样所写的驱动在应用调用时就如同windows下我们打开一个程序运行后,再打开一个程序时,要不就是中断以前的程序,要不就是等上一会才能运行后来打开的程序。想做个好的驱动人员没有三、四年功底,操作系统内核不研究上几编,不是太容易成功的,但其工资在嵌入式系统四层中可是最高的。 驱动层比较适合于电子、通信、自动化、机电一体、信息工程类专业尤其是计算机偏体系结构类专业的人来搞,除硬件层所具备的基础学科外,还要对数据结构与算法、操作系统原理、编译原理都要十分精通了解。 3、操作系统层,对于操作系统层目前可能只能说是简单的移植,而很少有人来自已写操作系统,或者写出缺胳膊少腿的操作系统来,这部分工作大都由驱动工程师来完成。操作系统是负责系统任务的调试、磁盘和文件的管理,而嵌入式系统的实时性十分重要。据说,xp操作系统是微软投入300人用两年时间才搞定的,总时工时是600人年,中科院软件所自己的女娲hopen操作系统估计也得花遇几百人年才能搞定。因此这部分工作相对来讲没有太大意义。 4、应用层,相对来讲较为容易的,如果会在windows下如何进行编程接口函数调用,到操作系统下只是编译和开发环 境有相应的变化而已。如果涉及j**e方面的编程也是如此的。嵌入式系统中涉及算法的由专业算法的人来处理的,不必归结到嵌入式系统范畴内。但如果涉及嵌入式系统下面嵌入式数据库、基于嵌入式系统的网络编程和基于某此应用层面的协议应用开发(比如基于sip、h.323、astr**k)方面又较为复杂,并且有难度了。 三、目标与定位。 先有目标,再去定位。 学 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都做用得烂了,但对于初学者来,就却是件好事。 因此开发系统的选择,要看自己的未来从来目标方向、要看开发板接口资源、还要看业界的通用性。五、如何看待培训。 对于培训来讲,是花钱来买时间,很多工程师都喜欢自己学,认为培训不值,这也是有可能的,纯为赚钱的培训当然不会太有价值,但对于实力型的培训他们可能就亏大了,有这样一笔帐不知他们算过没有,如果一个一周的培训,能带给他们自学两年后才能掌握的知识,在培训完后他们用三个月到半年时间消化培训内容,这样他会省约至少一年半的时间来学其它的或重新站在另一个高度上工作,那么他将最迟一 年后会拿到他两年后水平所对应的工资,就是在工资与水平对应的关系上比同批人缩短一年,每月按最少1千计,再减去培训费用至少多1.0万,同时也省了一年 时间,不管是休闲也好,再继续提高也好,总之是跑到了队伍的前面了。,这也是我们好多朗沃学子来郎沃教育培训最纠结的问题,要舍得给自己投资。对于新人的培训相当于他们为自己提前买了份失业保险,有师傅会带领他们入道,才更高更快点 的提高。 六、成为高级嵌入式系统硬件工程师要具备的技能。 对于硬件来讲有几个方向,就单纯信号来分为数字和模拟,模拟比较难搞,一般需要很长的经验积累,单单一个阻值或容值的精度不够就可能使信号偏差很大。因此年轻人搞的较少,随着技术的发展,出现了模拟电路数字化,比如手机的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设计的辅助工具类如protelorcadpowperpcbmaplux2**e、 vdhl语言,要能用到这些工具画图画板做逻辑设计,再有就是接口设计审图能力,再者就是调试能力,如果能走到总体方案设计这块,那就基本上快成为资深工程师了。 20210311
汇率兑换计算器

类似问答
  • 如何快速录入人民币大写格式
    • 2024-11-16 08:07:48
    • 提问者: 未知
    1首先打开excel表格,将输入法切换为搜狗输入法,按下键盘的v。2按下键盘的数字键盘,输入要转换的**伯数字。3输入完数字之后,在候选框里按下键盘的b,选择b选项即可。end
  • 股票新手如何快速入门?
    • 2024-11-16 09:29:31
    • 提问者: 未知
    很多新入市的朋友,都有这样的一个想法:如何快速入门。很残酷地告诉你,股市没有快速入门的捷径,但是只要方法得当,新手也可以在股市里赚钱(赚钱不等于入门,入门了也不等于赚钱)。一、大环境不好的时候,坚决不操作:大环境不好不是说大盘不好,你炒的是个股,不是指数,指数涨,个股未必涨。适合你买的时机要满足3个条件:1.大盘整体上是向上趋势。指数上涨个股未必涨,但是指数跌,绝大数的个股都会跌。2.近期日均个股...
  • 学生党如何快速赚钱?
    • 2024-11-16 21:43:00
    • 提问者: 未知
    当选定**后我就把之前攒的600拿去投资进货当创业的本金了,600可能在现在的社会来说不算什么...其他快速赚钱的方式并不靠谱,相比较于我的同龄人,我这也算是快速赚钱了。...
  • 现货原油如何快速入门?
    • 2024-11-16 20:59:24
    • 提问者: 未知
    学习基本的行业术语,了解其中的含义,多看盘就可以了
  • 新手想学习花艺,该如何快速入门?
    • 2024-11-16 02:23:50
    • 提问者: 未知
    新手想学习花艺,该如何快速入门?想学习花艺,并且想往花艺师方向发展,该怎么快速入门?有哪些自学的渠道?很多女生都有一个开花店的情怀梦,身处美美的花丛中,喝一杯香醇的咖啡,大约是很多...
  • 25岁 转行 进入嵌入式 行业 路何方?
    • 2024-11-16 04:11:13
    • 提问者: 未知
    其实嵌入式有dsp,arm,简单的单片机,x86,ppc,fpga,他们都是嵌入式,你想做哪一个呀,全做的话 估计不是那么容易的。我也是自动化毕业的,大学是玩了一下单片机,后来...
  • 嵌入式技术在**的发展如何?
    • 2024-11-16 04:32:13
    • 提问者: 未知
    这些过程几乎涵盖了嵌入式软件开发的整个流程,因此非常有利于快速开发,并缩短产品上市时间(time to market)。...据资料统计,2002年,我国嵌入式软件市场销售额为118.56亿...
  • 大学的同一专业,嵌入式培养和非嵌入式培养有什么区别?
    • 2024-11-16 17:18:37
    • 提问者: 未知
    一、嵌入式培养 嵌入式培养说白了就是嵌入式系统相62616964757a686964616fe59b9ee7ad9431333433626434关技术的培训。嵌入式系统是硬件和软件相结合,嵌入到整机里使整机实现智能化的一个系统。二、嵌入式培养区别 1、高校作为重要的人才输出机构,每年的计算机相关专业毕业生数量有限,同时...
  • 如何自己改掉花钱的毛病,如何学会快速攒钱?
    • 2024-11-16 02:13:07
    • 提问者: 未知
    如何自己改掉花钱的毛病,如何学会快速攒钱?首席投资官评论员溪梅认为:在生活中总是会发现很多人打小花钱大手大脚的,时不常的请朋友吃个饭什么的或者平时爱乱买东西的人群:-攒钱,改掉,毛病...
  • 如何快速进入投资圈?
    • 2024-11-16 13:11:09
    • 提问者: 未知
    你好,很高兴为你解答。资本,资本,资本。有资本,无论是线上的投资交易,或者是线下的投资经理人都会找到你。没有资本,就老老实实的当个小老百姓吧。希望能帮到你,如果还有不明白的地方,欢迎追问,望采纳。
汇率兑换计算器

热门推荐
热门问答
最新问答
推荐问答
新手帮助
常见问题
房贷计算器-九子财经 | 备案号: 桂ICP备19010581号-1 商务联系 企鹅:2790-680461

特别声明:本网为公益网站,人人都可发布,所有内容为会员自行上传发布",本站不承担任何法律责任,如内容有该作者著作权或违规内容,请联系我们清空删除。