关于应用层软件开发和系统底层开发的选择

2024-05-09 05:16

1. 关于应用层软件开发和系统底层开发的选择

说说自己的体会啊!供你参考。
你说的对两个方向编程的看法基本都对。但有一点,就是“算法”,其实并不是到处在发明新算法。更多时候是在使用既有算法。或者说是要你在设计的时候能够适时地发现什么时候、哪里该用哪个算法,然后有效地使用它。这要求的更多还是使用既有的,而不是要你去创新。

另外,我并不觉得你应该这么纠结地选择。要知道,你想选择,用人单位也要选择。所以,未必找工作时就真的那么如你所愿能找到你想去的方向。毕竟吃饭很重要,如果半年1年也找不到你想的方向又如何?招人的岗位是很多,但问题是真正选你的又是哪个?机会多,并不意味着就有你的。所以,还是谨慎地乐观比较好。衣食无忧才能谈享乐和追求不是?!如果马上就要饿死,那只要能充饥什么都是好的。

关于应用层软件开发和系统底层开发的选择

2. 学嵌入式,底层驱动开发比应用开发更重要吗?为啥呢?

那要看你的侧重点在哪里
底层应用开发是为硬件搭设一个通用平台做准备,应用开发要用到这些底层驱动程序与硬件打交道
在嵌入式设计中,如果你设计了一款硬件,这款硬件的底层模块使用了与标准驱动程序不一样的配置(比如管脚、速度、和其他参数等),就需要修改底层驱动程序,甚至新编一个驱动程序,目的是为了让高层应用调用,如果你不能完成这个工作,那么你的嵌入式硬件将不可能正常使用。这是偏重于嵌入式硬件系统设计方面的工作。
应用开发一般是比较高级的开发,换句话说,就是已经在搭建好基本系统的软件平台上实现复杂功能组合完成任务。比如视频采集和网络传输应用,你需要正确地调用(通过标准的驱动调用接口)视频输入端口的驱动程序、在应用层面设计视频压缩、将压缩完成的数据通过调用网络驱动发送出去。这是偏重于软件应用系统设计方面的工作。
一个嵌入式系统,底层软件和应用软件都是不可或缺的。你可以考虑从底层驱动开始进行学习,在学习中必然会学到在应用层面调用或者调试你的驱动,然后在应用程序方面再进一步学习。

3. 从底层硬件到上层应用,嵌入式软件的开发可以分为哪几类?

从底层硬件到上层应用,嵌入式软件的开发可以分为以下三类:
1、嵌入式操作系统开发

嵌入式操作系统EOS(Embedded Operating System)是一种被广泛使用的系统软件。过去,它主要用于工业控制和国防系统领域。 EOS负责分配和调度嵌入式系统的所有软件和硬件资源,控制和协调并发活动。

它必须体现其所在系统的特征,并能够通过加载和卸载某些模块来实现系统所需的功能。嵌入式操作系统通常以商业操作为主。自1980年代以来,商业嵌入式操作系统已开始蓬勃发展。

2、嵌入式支撑软件开发

支撑软件是用于帮助和支撑软件开发的软件,通常包括数据库和开发工具,其中数据库是最重要的。随着移动通信技术的进步,人们对移动数据处理提出了更高的要求。嵌入式数据库技术已受到学术,工业,军事和民用领域的关注。

嵌入式移动数据库或简称为移动数据库(EMDBS)是支持移动计算或特定计算模型的数据库管理系统。数据库系统与操作系统和特定的应用程序集成在一起,并在各种智能嵌入式设备或移动设备上运行。
3、 嵌入式应用软件开发
嵌入式应用软件是针对特定应用领域,基于某一固定的硬件平台,用来达到用户预期目标的计算机软件。由于用户任务可能有时间和精度上的要求,因此有些嵌入式应用软件需要特定嵌入式操作系统的支持。
嵌入式应用软件和普通应用软件有一定的区别,它不仅要求其准确性、安全性和稳定性等方面能够满足实际应用的需要,而且还要尽可能地进行优化,以减少对系统资源的消耗,降低硬件成本。

扩展资料:
嵌入式软件开发的特点:
近年来,随着计算机技术的迅猛发展,基于通信技术的信息技术以及Internet的广泛应用,传统的控制学科正在发生变化,并出现了许多新的增长点。

嵌入式系统涉及系统的最低层,芯片层的信息处理和控制。从某种意义上说,理解和控制这些“微观”世界是控制的真正目的。就设计思想和总体架构而言,通常意义上的嵌入式系统和控制系统之间存在许多差异。

在嵌入式系统和开发环境方面,仍然存在许多仍在研究和开发中的问题,例如嵌入式系统的硬件和软件协同设计方法;多目标、多任务微内核嵌入式操作系统;分布式嵌入式系统实时问题,分布式计算,分布式信息交互和综合处理;嵌入式系统的多目标交叉编译和调试工具的研究等。
参考资料来源:
百度百科-嵌入式软件

从底层硬件到上层应用,嵌入式软件的开发可以分为哪几类?

4. 从底层硬件到上层应用,嵌入式软件的开发可以分为哪几类?

一、嵌入式系统的概念
    
  着重理解逗嵌入地的概念  

  主要从三个方面上来理解。
  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下如何进行编程接口函数调用,到操作系统下只是编译和开发环境有相应的变化而已。如果涉及Jave方面的编程也是如此的。嵌入式系统中涉及算法的由专业算法的人来处理的,不必归结到嵌入式系统范畴内。但如果涉及嵌入式系统下面嵌入式数据库、基于嵌入式系统的网络编程和基于某此应用层面的协议应用开发(比如基于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语言,要能用到这些工具画图画板做逻辑设计,再有就是接口设计审图能力,再者就是调试能力,如果能走到总体方案设计这块,那就基本上快成为资深工程师了。

  硬件是要靠经验,也要靠积累的,十年磨一剑,百年磨一针。

5. 从底层硬件到上层应用,嵌入式软件的开发可以分为哪几类?

从底层硬件到上层应用,嵌入式软件的开发可以分为以下三类:
1、嵌入式操作系统开发

嵌入式操作系统EOS(Embedded Operating System)是一种被广泛使用的系统软件。过去,它主要用于工业控制和国防系统领域。 EOS负责分配和调度嵌入式系统的所有软件和硬件资源,控制和协调并发活动。

它必须体现其所在系统的特征,并能够通过加载和卸载某些模块来实现系统所需的功能。嵌入式操作系统通常以商业操作为主。自1980年代以来,商业嵌入式操作系统已开始蓬勃发展。

2、嵌入式支撑软件开发

支撑软件是用于帮助和支撑软件开发的软件,通常包括数据库和开发工具,其中数据库是最重要的。随着移动通信技术的进步,人们对移动数据处理提出了更高的要求。嵌入式数据库技术已受到学术,工业,军事和民用领域的关注。

嵌入式移动数据库或简称为移动数据库(EMDBS)是支持移动计算或特定计算模型的数据库管理系统。数据库系统与操作系统和特定的应用程序集成在一起,并在各种智能嵌入式设备或移动设备上运行。
3、 嵌入式应用软件开发
嵌入式应用软件是针对特定应用领域,基于某一固定的硬件平台,用来达到用户预期目标的计算机软件。由于用户任务可能有时间和精度上的要求,因此有些嵌入式应用软件需要特定嵌入式操作系统的支持。
嵌入式应用软件和普通应用软件有一定的区别,它不仅要求其准确性、安全性和稳定性等方面能够满足实际应用的需要,而且还要尽可能地进行优化,以减少对系统资源的消耗,降低硬件成本。

扩展资料:
嵌入式软件开发的特点:
近年来,随着计算机技术的迅猛发展,基于通信技术的信息技术以及Internet的广泛应用,传统的控制学科正在发生变化,并出现了许多新的增长点。

嵌入式系统涉及系统的最低层,芯片层的信息处理和控制。从某种意义上说,理解和控制这些“微观”世界是控制的真正目的。就设计思想和总体架构而言,通常意义上的嵌入式系统和控制系统之间存在许多差异。

在嵌入式系统和开发环境方面,仍然存在许多仍在研究和开发中的问题,例如嵌入式系统的硬件和软件协同设计方法;多目标、多任务微内核嵌入式操作系统;分布式嵌入式系统实时问题,分布式计算,分布式信息交互和综合处理;嵌入式系统的多目标交叉编译和调试工具的研究等。
参考资料来源:
百度百科-嵌入式软件

从底层硬件到上层应用,嵌入式软件的开发可以分为哪几类?

6. 嵌入式底层驱动开发需要哪些方面的知识,具体点的,新手求告知

 嵌入式底层驱动开发需要哪些方面的知识,具体点的,新手求告知  嵌入式底层开发,需要你精通c语言,c语言可以操作底层,其次,你要熟悉汇编,很多东西比如程序怎么执行的,需要你反汇编之后才能知道。你还需要了解,arm体系结构。uc的的知识,你也需要知道,用户空间的编程基本是用uc写的,学习uc,建议买本书。uinux高级环境编程,把这本书学好了,用户空间的编程基本没问题,建议你初次学习编程,买本嵌入式驱动的书看看吧  希望可以帮到你,望选为满意回答
  嵌入式驱动开发要具备哪些方面的知识  嵌入式驱动开发需要了解的知识大概有以下几类:  1 嵌入式操作系统驱动框架。每一个操作系统都有自己的构架,应该了解驱动在整个系统中的具 *** 置与构建驱动程序的主要事项  2 总线知识,比如PCI、USB总线。  3 芯片知识。驱动其实就是对设备上一些寄存器的配置、CPU与设备本身的通讯以及对不同命令的处理  4 要做好驱动,必须对所使用的CPU体系结构有一个比较深刻的认识  5 C++基本用不上,主要是C和汇编。  6 做驱动最好要懂内核调试(比如说linux)
  嵌入式驱动开发需要哪些硬件知识  计算机组成技术,单片机原理及开发技术,C程序设计,计算机操作系统,硬件驱动主要是和底层的接口,学习一下模拟电子技术和数字电子技术最基础的内容就好。
  嵌入式驱动开发需要了解的知识大概有哪些呢?  嵌入式驱动以及嵌入式Linux内核开发主要用的都是C语言,JAVA是基于上层开发的语言,而C是基于底层驱动开发的。所以如果想要做好嵌入式驱动开发主要是要把C语言基础打好,这样对以后的发展会有很大帮助的。再则需要了解一点硬件方面的知识,例如单击片或者开发板和开发软件工具使用。下面就由福州卓跃教育具体介绍如何学习嵌入式驱动。
  如何开始学习嵌入式驱动开发? 是每个想学习嵌入式驱动开发初学者的第一个问号.由于嵌入式开发较上层类软件开发的特殊性,如果没有相应的仪器设备及一个很好的环境,对初学者来说简直就是梦魇,如果没有相应的指导,可能就要多摔几个跟头和多消耗一些脑细胞,因为驱动开发不像上层类的开发那么直观,写个程序就可以在PC机上直接查看了,驱动开发只有烧到板子上才能验证。
   
  嵌入式驱动开发需要了解的知识大概有以下几类:
  1 嵌入式操作系统驱动框架。每一个操作系统都有自己的构架,应该了解驱动在整个系统中的具 *** 置与构建驱动程序的主要事项
  2 总线知识,比如PCI、USB总线。
  3 芯片知识。驱动其实就是对设备上一些寄存器的配置、CPU与设备本身的通讯以及对不同命令的处理
  4 要做好驱动,必须对所使用的CPU体系结构有一个比较深刻的认识
  5 C++基本用不上,主要是C和汇编。
  6 做驱动最好要懂内核调试(比如说linux)
  另外嵌入式开发涉及的知识面还是非常多的,包括选型的CPU类型和他的体系结构,CPU上提供的外围接口,以及为某个特殊功能而加入的外围设备.这些是一个合格嵌入式开发人员需要掌握的最基本的知识。
  对我们作为嵌入式开发提出了更高的要求,重要的一点是嵌入式开发多是看不到摸不着的东西,相对来说非常的抽象,所以这时候就要借助一些测量设备来协助我们,比如基础的万用表,示波器,电流计,频率计,Trace32等甚至一些为方便开发自己做的一些小工具,当然不限于硬件和软件的.
  基于linux的嵌入式底层驱动开发应该怎样系统的学习?注意哪些方面?  1、国内的书内容都差不多,相互抄来抄去。  国外的书质量虽然高,但是一般人阅读速度吃不消。  不过,还是建议读国外的书(如果有时间的话),长痛不如短痛。  2、不一定非要有开发板,可以用skyeye等软件模拟。  但是,软件模拟和实体机肯定是有区别的。还是建议选一块开发板。  3、ARM板是个硬件,可以用来学习WinCE、Vxworks、Linux、uCos等等系统开发。  可以用来学习以上系统的驱动和应用开发。  Linux驱动分两块内容:学习硬件工作流程(单片机程序),  Linux驱动上层结构  (platform、mtd、字符设备、块设备、网络设备、各种总线 等上层结构)  4.前景大大滴好,但是道路十分之曲折。  要有心里准备,得有文火久煨的毅力。
  嵌入式开发的方面的知识?  看你的兴趣应该是软件方面的,没什么特殊要求,基础知识扎实就行,编译原理,操作系统原理,C/C++,数据结构等课程要好好学!
  如何自学linux驱动开发,做驱动开发需要哪些方面的知识  做嵌入式应用的话一般的编程就可以了。那么嵌入式驱动开发与内核开发的话就需要学习多个方面的知识。我就把这方面的要求给你交流一下:  (一家之言啊,自己多年从事嵌入式开发的一点感悟)  嵌入式驱动开发需要了解的知识大概有以下几类:  1 嵌入式操作系统驱动框架。每一个操作系统都有自己的构架,应该了解驱动在整个系统中的具 *** 置与构建驱动程序的主要事项  2 总线知识,比如PCI、USB总线。  3 芯片知识。驱动其实就是对设备上一些寄存器的配置、CPU与设备本身的通讯以及对不同命令的处理  4 要做好驱动,必须对所使用的CPU体系结构有一个比较深刻的认识  5 C++基本用不上,主要是C和汇编。  6 做驱动最好要懂内核调试(比如说linux)
  学习嵌入式 要学习哪些方面的知识  从基础来,入门后分向硬软两个方向偏重:  基础:计算机基础,数据结构,软件工程,C编程,C++原理,单片机原理,微机原理,计算机体系结构  软件偏重:Linux系统编程,软件工程高级,操作系统  硬件偏重:数字电路,FPGA,电路设计,自动控制
  嵌入式开发工程师和嵌入式底层驱动开发工程师一样么  嵌入式开发工程师,严格意义上还会分为应用开发、QT开发、底层开发工程师等。所做的工作,在整个嵌入式开发体系里面是不一样的。南京有一家培训机构叫英贝得嵌入式学院,好像在南京雨花软件园,你上他们官网英贝得教育向老师了解一下,了解一下就可以了。