仙呢榕儿
成为一位合格的嵌入式系统软件工程师所需要具备的条件
1、明确自己的发展方向,并为此制定可行的职业计划很多学生总不确定将来可能做什么,所以对于专业学习根本就没有计划或分析,而是抱着走一步算一步的态度
这样的想法往往就会通过潜意识去暗示你自己,导致最终你变得无所事事、碌碌无为
如果你从现在起,确定自己的发展方向,制定职业计划并为此付出实际行动,那么无论你将来是往技术、管理方向发展还是自主创业,甚至无论你将来是否仍然执行你现在制定的计划,你都将获得能力的提高
2、具有理论与实践并重,内外双修的素质一个合格的嵌入式系统软件工程师,是真正理解了嵌入式系统软件产品的本质及软件产品研发思想精髓的人
掌握嵌入式系统软件开发语言、应用语言工具解决工作中的具体问题、完成目标任务是嵌入式系统软件工程师的主要工作
但从嵌入式系统软件工程师这个角度来看,这只是外在的东西,并非重要的、本质的工作
学习、掌握嵌入式系统软件产品开发理论知识、软件开发方法,并在实践中理解、应用软件产品的分析、设计、实现思想来解决具体的嵌入式系统软件产品研发问题,才是真正的嵌入式系统软件工程师的必要素养
3、具有良好的职业知识表达能力正如前面所言,斯迈尔特职业教育的目标是培养学生能用、能做、能想、能说的能力
实际上,能说是最关键的能力培养
建立在能说能力的背后的是你对相关知识的确实理解和你对问题的敏捷反应
4、深入理解了嵌入式系统的概念?从硬件上理解
嵌入式系统硬件是将传统的基于CPU的外围器件,整合到CPU芯片内部
例如比较高端的ARM类IntelXscale架构下的IXP网络处理器CPU内部集成了PCI控制器,还集成了3个NPE网络处理器引擎
从软件上理解
嵌入式系统就是在定制操作系统内核里将应用一并选入,编译后将内核下载到ROM中
而在定制操作系统内核时所选择的应用程序组件则是完成了软件的嵌入
比如WinCE在内核定制时,会有相应选择,其中就是Wordpad、PDF、MediaPlay等等选择
如果我们选择了,在CE启动后,就可以在界面中找到这些东西
从实现上理解
把软件内核或应用文件系统等东西写入到嵌入式系统硬件平台中的ROM,就实现了一个真正的嵌入
5、知道嵌入式系统的分层方式嵌入式系统分为4层,硬件层、驱动层、操作系统层和应用层:?硬件层:是整个嵌入式系统的根本,如果你现在对单片机及接口这块很熟悉,并且能用C语言和汇编语言来编程的话,那么从嵌入式系统的硬件层做起来就相对容易
硬件层是嵌入式系统的基础,但嵌入式系统增值还是要靠软件
驱动层:要能看懂电路图还要能对操作系统内核十分的精通,以便所写的驱动程序在系统调用时,不会独占操作系统时间片,而导至其它任务不能运行
当然,不懂操作系统内核架构和实时调度性、没有良好的驱动程序编写风格,仅仅只是按照资料介绍去添加驱动程序,是很多人可以做到的,但这也仅仅只是个初级的嵌入式系统驱动工程师的最低水平
操作系统层:在操作系统层的主要工作还是移植,而很少有人来自已写操作系统
应用层:需要掌握编程语言、开发工具,知道在Linux/Windows精通嵌入式系统的程序设计是最主要的要求,因为编程是嵌入式系统软件工程师花费绝大部分时间的工作,因此嵌入式系统软件工程师必须熟练掌握操作系统和嵌入式硬件结构,看得懂诸如硬件寄存器一类的内容、掌握基于板级的汇编和C编程,了解硬件的接口电路设计,掌握基于嵌入式操作系统的环境应用与工具链,比如Linux下的ARM工具链等等
7、熟练使用嵌入式系统开发平台拥有一套嵌入式系统实验平台,能够极大地帮助嵌入式系统软件初学者尽快熟悉和掌握嵌入式系统
熟悉一个实际的嵌入式系统开发平台,并且能够从事某个具体项目的开发,是获得实际进行嵌入式系统软件开发工作经验的必经之路
如果你满足了上面的这些要求,你就可以成为一位合格的嵌入式系统软件工程师
当然,真正优秀的嵌入式系统软件工程师是要靠工作中的积累才能形成的,而这也是用实际工作时间来衡量的
水瓶座小小猪
嵌入式软件工程师需要学什么?对嵌入式LINUX操作系统及其上应用软件开发目标:1、 掌握主流嵌入式微处理器的结构与原理(ARM9相对比较容易)。2、 必须掌握一个嵌入式操作系统,如LINUX系统,这是一个开源的系统。3、 必须熟悉嵌入式软件开发流程并做一些嵌入式软件项目。学习路线:1、硬件知识对于硬件部分要求并不高,只要能看懂原理图,看懂通信协议,看懂芯片手册就可以。不求能设计原理图,更不求能设计电路板。如果能有一些《数字电路》的基础就更好,没有也没关系。我们主要掌握硬件工作原理。要掌握常见硬件,如ADC,PWM,UART、I2C、SPI等。2、编程语言学习学习C语言,推荐C语言的设计者Dennis M. Ritchie和著名计算机科学家Brian W. Kernighan编写的一部介绍标准C语言及其程序设计方法的著作,《C程序设计语言》。3、学习LINUX系统编程首先学会使用了解LINUX,学习LINUX命令,软件安装,工具使用。学习文件IO,多进程多线程,进程间通信,套接字等。推荐《UNIX环境高级编程》,《TCP/IP详解 卷一》4、学习LINUX设备驱动首先需要学习LINUX内核基础部分,包括内核配置编译,内核模块,并发控制,字符设备,设备模型,平台设备等。在学习常用驱动框架,如INPUT系统,帧缓冲驱动,网络设备驱动,块设备驱动,音频设备驱动等,掌握这些驱动框架,了解原理,总结哪些部分需要我们实现。基础部分可以参考《Linux设备驱动 第三版》,该书虽然老,但是原理讲的比较透彻,还可以参考。驱动框架可以到网上搜素资料,网上有很多关于驱动框架的介绍,这里就不推荐具体的文章,大家可以自己找一下。
优质工程师考试问答知识库