首页 » 软件优化 » 嵌入式开发 技能(嵌入式开发硬件操作系统都是)

嵌入式开发 技能(嵌入式开发硬件操作系统都是)

admin 2024-07-24 07:21:12 0

扫一扫用手机浏览

文章目录 [+]

首先IT是一个需要不断学习的行业,没有哪个行业像我们一样需要不断接触新事物、学习新知识。
就像《学不起电脑》里的吼叫,搞上层开发,各种编程语言会害死你;搞系统开发,各种系统会害死你;搞底层开发,各种汇编程序、芯片、指令集会害死你;当然,不管你搞哪一层,各种编译器、工具、软硬件知识等等都会害死你。
任何一种知识,少部分都是一堆砖头般的书本,不懂也可以来21ic问。
其次,嵌入式行业更像IT中的IT,缺乏标准,规范多变,技术变化很快,新流行的技术可能过两年就失去生命力了。
比如Symbian,诺基亚放弃了,Intel的MeGoo,一点动静都没有,现在Android很火。
也许再过几年它就会像今天的Symbian一样,感觉永远跟不上时代的步伐了。

所以很多人说IT是年轻人干的活,一点也不为过,年纪大了不一定能干技术活。
尤其在中国,技术人员的地位……(你们懂的)。

嵌入式行业需要什么样的技术人才?

嵌入式开发 技能(嵌入式开发硬件操作系统都是) 软件优化
(图片来自网络侵删)

仔细查看各类招聘的职位要求。

1、通用要求:如教育背景、多年工作经验、创新精神、抗压能力强、吃苦耐劳、沟通能力好、态度认真等。

2、专业要求:要求说了那么多,无非就是熟练掌握各方面知识。
熟练掌握控制理论、熟练掌握电路设计、熟练掌握各种硬件驱动开发、熟练掌握linux内核及裁剪、熟练掌握C/C++/Java语言、熟练掌握DSP、熟练掌握ARM、熟练掌握linux/ecos/ucos/wince/VxWorks、熟练掌握嵌入式数据库、熟练掌握多线程编程、熟练掌握各种网络协议、熟练掌握各种总线协议、熟练掌握Symbian/Android/IOS平台应用开发、熟练掌握汇编、编译器、二进制工具;熟练掌握各种媒体封装格式、编解码;熟练掌握通讯技术;熟练掌握硬件原理图;熟练掌握PCB设计;熟练掌握计算机结构; 熟练掌握bootloader,熟练掌握。


感觉只要是业内的,就得熟练掌握(天呐!
感觉掌握一个要花好长时间。


读完这些,特别是专业要求,你是不是已经不知所措了?

那么我们来分析一下上面的要求。
各个公司的通用要求看起来都是互相复制粘贴的,比如学历(我个人觉得学历能力显然更重要),经验(n年经验,还是n年前的n年经验?),个人品格等。
不知道各个公司在员工入职前是怎么考核的。
至于专业要求(其实精通其中几个就相当了不起了),乍一看让人眼花缭乱。
了解嵌入式开发的结构之后可能就容易理解了。

嵌入式产品从技术实现角度可分为两类:简单的无操作系统支持的产品和复杂的有操作系统支持的的产品。
从目前的发展方向看,后者是趋势。
前者从程序实现角度可分为三层:硬件层、驱动层、应用层;后者可分为四层:硬件层、驱动层、系统层、应用层。

因此嵌入式开发从下至上一般需要四类工程师:嵌入式硬件开发、嵌入式驱动开发、嵌入式系统开发、嵌入式软件开发。

他们应该具备什么技能?

1、嵌入式硬件开发:这个是硬件工程师做的,一般是自动化、电子、通信等专业出身。
要求熟悉电路知识,各种常用元器件,掌握模拟电路、数字电路设计开发能力,熟悉硬件开发模式和设计模式,熟悉各种芯片及外设,熟悉8位、16位、32位处理器嵌入式硬件平台开发。
有的需要有FPGA开发经验,熟练掌握常用硬件设计工具:Protel/PADS(PowerPCB)/Cadence/OrCad。
一般要有4~8层高速PCB设计经验。
由于我不是硬件工程师,对这方面不熟悉,所以不敢多说。

2、嵌入式驱动开发:这个可以由硬件工程师或软件工程师来做,主要看设备而定。
目前驱动开发除非是简单的设备驱动,其实很多时候都是移植的,所以更需要掌握目标平台的硬件和系统特性。
所以至少要掌握一些操作系统、系统结构、计算机组成原理、数据结构的知识。
熟悉嵌入式ARM/MIPS/PowerPC架构。
具备单片机、一个或多个32位嵌入式处理器的移植开发能力,熟悉bootloader流程,有扎实的硬件知识,看得懂硬件原理图,能独立完成相关硬件驱动调试,能根据芯片手册编写软件驱动。
如果涉及到网络设备,可能还需要掌握很多高层网络协议的原理。
个人觉得这里面虽然大部分都不是很困难,但极其重要。
当然如果在这个层面上还要给上层提供多线程的支持,有些驱动也很难写。

3、嵌入式系统开发:没听说过有硬件工程师干这个的。
干这个,必不可少的是熟悉操作系统的原理,比如内存管理、线程调度、文件系统等;还必须精通处理器架构、指令集、寻址方式、调试、汇编和混合编程,熟悉操作系统的启动流程。
对于Linux,必须熟悉Linux配置文件的修改,掌握内核剪裁、内核移植、交叉编译、内核调试、bootloader编写、根文件系统制作、Linux系统集成部署的整个流程。
如果真写这部分,难度还是挺恐怖的,好在大部分都是移植,很少听说有公司要开发操作系统,没有Google那样的实力。

4、嵌入式软件开发:嗯,没有操作系统的话,程序一般不会很复杂,如果有操作系统的支持,就很接近一般的软件开发了,所以可以算是桌面开发了。
这需要熟悉系统API,熟练掌握C语言的高级编程知识,包括函数和程序结构的知识、指针、数组、常用算法、库函数的使用、数据结构的基本内容;掌握面向对象程序设计的基本思想和C++语言的基本内容;熟练掌握嵌入式Linux下的程序设计,熟练掌握嵌入式Linux开发环境,包括系统编程、文件I/O、多进程多线程、网络编程、GUI图形界面编程、数据库;熟悉常用图形库的编程,如QT、GTK、miniGUI、fltk、nano-x等,掌握各种应用层的网络协议的使用,各种音视频技术等。

还有一些技能可以用于上述四个类别:

1 基本技能:嵌入式开发有一些必备的基本技能。

a) 熟悉开发平台。
目前,大多数嵌入式开发都是在 Linux 或类似 Linux 的环境中完成的。
所以你应该熟悉使用 Linux、编写 shell 脚本、修改配置文件、使用 GCC GDB 以及使用 Make 工具,对吧?

b) 比如如何使用项目管理工具?现在是什么时代?你不会用CVS、SVN?你还活在软件时代的原始社会吗?

c) 数据结构与算法。
如果你搞软件开发,却不懂数据结构,不懂如何优化算法,不懂如何度量复杂度,那你也太不靠谱了吧?当然,这并不是要求你知道所有的算法,记住所有的数据结构。
至少你要知道它们到底是什么东西,它们的作用是什么,这样至少在需要的时候可以查到。

d) 编程语言,关于JAVA,我知道JAVA的突然崛起震动了编程语言界,但是在嵌入式开发中,不懂C或者C++实在是让人无法接受。
当然现在很多手机应用程序都是完全用Java写的,如果只想做嵌入式上层软件开发,不想再深入,直接用JAVA也未尝不可。
关于汇编,好吧,这个可能比较难,毕竟跟具体的硬件架构(主要是CPU)有关,但是汇编确实很有意思,有些时候,是无可替代的。

2.特殊技能:对于嵌入式开发的某些部分来说必不可少,但对于其他部分(例如应用程序开发)可能不是很有用。

a) 数字电路,这个...主要需要了解一些基本的电路知识,比如门电路,逻辑电路,存储器,寄存器,以便更好的理解嵌入式芯片,存储器,外围设备等硬件的设计,但是在软件开发中往往不一定用到。
因为大多数硬件都提供了很齐全的软件接口。

b) 操作系统,这个是指平台上选择的操作系统。
嵌入式产品的操作系统太多了。
但是操作系统内部的设计原理都是一样的。
首先要学的是操作系统原理,了解进程通信、内存管理、文件系统等几个重要的部分,因为这些在软件开发特别是内核驱动开发中会用到。
接下来可以熟悉至少一种主流的操作系统。
Linux 是个不错的选择。
了解它的内核架构,设备驱动架构,如何编译、裁剪、编写应用程序,以及如何在具体的嵌入式产品上使用它们。

c) 计算机组成/微机原理主要是了解微机硬件的工作原理以及一些关键结构如CPU、总线、I/O、内存等是如何工作的。
虽然是很枯燥的知识,但是熟悉外围硬件的工作方式,以及操作系统、软件架构的设计和优化是至关重要的。

3.扩展功能,这些可能是需要的。

a) 通信协议。
对于非应用层的通信协议,我真的不知道是否应该归入操作系统的范畴,因为很多操作系统并没有网络部分,但很多方面都是操作系统提供的。
当然这些底层的通信协议好像不太受关注,因为开源的协议栈太多了。
应用层的网络协议可能会受关注,比如http、ftp、rtsp、rtmp、mms等。

b) 音视频处理,如文件封装,音视频编解码,各种音视频标准,流媒体等。
ffmpeg是个很好的东西,建议大家学一下。

c) 信息安全。
这个领域现在似乎越来越受到关注。

d) 数据库。
唉,嵌入式设备越来越强大了!
我认为交叉编译不再是必要的。

有时候和同事讨论现在的行业需求,就会说公司总是招不到人,程序员总是说找不到工作。
我对此有很多思考:是公司的要求高,还是程序员的要求高?有时候看到一些招聘岗位的要求,我的信心总会受到打击,一一数来,好像真的没什么可以做的,只能逼着自己越来越努力。
当然,有时候我也觉得有些招聘不靠谱。
看那些要求,我个人觉得普通人如果想全部满足,至少也要努力十年八年吧,我猜这些大佬们开出的工资不会感兴趣。

对于程序员来说,做技术人真的是一件非常累很辛苦的事情,如果你上网搜索,会发现很多抱怨和感慨的帖子,充分体现了这个职业对身体和情感的考验。
如果你不怕困难,想继续做技术人,那就努力吧。
也许有一天你会拿起一份招聘启事,用鄙夷的眼光​​看着它:“妈的!
这样的要求,我去了就没面子了!
”那你就是真正的专家了!

内容整理自互联网

卧龙汇IT技术圈,卧虎藏龙,IT高手齐聚一堂!
欢迎加入我们的头条圈,每月邀请资深大咖现场为您分享知识讲座!

7月21日晚8点,我们的仿真讲座继续进行,使用HFSS软件讲解“传输线理论在高速PCB设计中的应用”。
进入下面的圆圈查看精彩内容

相关文章

嵌入式开发 技能(嵌入式开发硬件操作系统都是)

首先IT是一个需要不断学习的行业,没有哪个行业像我们一样需要不断接触新事物、学习新知识。就像《学不起电脑》里的吼叫,搞上层开发,各...

软件优化 2024-07-24 阅读 评论0