想入行嵌入式开发并不难? 嵌入式软件开发( 二 )


4嵌入式软件开发:嗯,没有操作系统,程序一般不会特别复杂 。在操作系统的支持下,非常接近于一般的软件开发,可以算是桌面开发 。这个要求是熟悉系统的API,掌握C语言的高级编程知识,包括函数和程序结构、指针、数组、常用算法、库函数的使用以及数据结构的基本内容等知识 。掌握面向对象编程的基本思想和C++语言的基本内容;精通嵌入式Linux下的编程,精通嵌入式Linux开发环境,包括系统编程、文件I/O、多进程多线程、网络编程、GUI图形界面编程和数据库;熟悉常用图形库的编程,如QT、GTK、miniGUI、fltk、nano-x等 。,并掌握各种应用层网络协议的使用,以及各种音视频技术等 。
另外还有些以上四类都用得着的技能:基本功:从事嵌入式开发,有一些必备的基本功 。
a)熟悉开发平台,目前的嵌入式开发大部分是在linux或者类似linux的环境下进行的,所以你要熟悉linux的使用,你要知道如何编写shell脚本,你要知道如何更改配置文件,你要知道如何使用GCC GDB,你要知道如何使用Make工具 。
b)例如,什么时候使用项目管理工具?你不能用CVS或者SVN?请问你还生活在软件时代的原始社会吗?
c)数据结构和算法,搞软件开发,不懂数据结构,不优化算法,不衡量复杂度,太不靠谱?当然,这并不需要你记住所有的算法和数据结构 。最起码你要知道有这么一个东西,它是什么,这样你用的时候就能查出来 。

d)编程语言,关于JAVA,我知道JAVA的突然出现极大的动摇了编程语言领域,但是在嵌入式开发下,我们不会C或者C++语言真的很不合理 。当然,现在很多手机应用完全是用java编写的 。如果你只想开发嵌入式上层软件,不想走得更远,只使用JAVA也可以 。关于组装,嗯,可能比较难,毕竟和具体的硬件架构(主要是CPU)有关,但是确实很有意思,而且在某些情况下,是不可替代的 。
特殊技能:对于嵌入式开发的某些部分是必要的,但对于某些部分(如应用程序开发)不是很有用 。
a)数字电路,这个...主要是了解一些基本的电路知识,比如门电路、逻辑电路、存储器和寄存器 。为了更好地理解嵌入式芯片、内存、外围设备等硬件的设计,在软件开发中往往无法使用 。因为大部分硬件都提供了完整的软件接口 。
b)操作系统,指在平台上选择的操作系统 。嵌入式产品操作系统太多 。然而,操作系统的内部设计原则都指向同一个目标 。首先要学习的是操作系统原理,要了解进程通信、内存管理和文件系统等几个重要部分,因为这些都会用到软件开发,尤其是内核驱动开发 。接下来,你至少可以熟悉一个主流操作系统 。了解Linux的内核架构、设备驱动架构、如何编译、剪切和编写应用程序,以及如何在特定的嵌入式产品中使用,Linux是一个不错的选择 。
c)计算机/微机原理的组成主要是了解微机的硬件工作原理以及CPU、总线、I/O、内存等一些关键结构是如何工作的 。虽然是很枯燥的知识,但是熟悉外围设备的硬件工作模式、操作系统和软件架构的设计和优化是非常重要的 。
3可能需要的扩展功能 。
a)通信协议,真不知道要不要把非应用层的通信协议归入操作系统的范畴,因为很多操作系统没有网络部分,但是很多方面都是由操作系统提供的 。当然,这些较低的通信协议似乎并不太受关注,因为开源协议栈太多了 。应用层的网络协议可能需要关注,如http、ftp、rtsp、rtmp、mms等 。
b)音视频处理,如文件封装、音视频编解码、各种音视频标准、流媒体 。Ffmpeg是一个非常好的东西 。我建议你研究一下 。
c)信息安全,嗯,现在好像越来越重视了 。
d)数据库,唉,嵌入式设备的能力越来越强了!如果你再做一次,我认为你不需要交叉编译 。。
有时候,我会和同事讨论当前的行业需求 。说到招不到人的公司,程序员总说找不到工作,很有感触 。是公司要求高,还是程序员要求高?有时候看到招聘的一些岗位要求,总是打击自己的信心,一个个数,好像真的做不了多少,只好让自己越来越努力 。当然有时候觉得有些招聘不靠谱 。看要求 。个人认为,如果所有要求都满足了,普通人就要努力十年八年 。这么大的牛可能不喜欢给的工资 。
对于程序员来说,做技术真的很累很难 。网上搜索,投诉贴无处不在,情绪贴,都充分体现了身体和情绪对这个职业的考验 。如果你不怕困难,想做好,那就努力吧 。也许有一天你会只是拿起一个招聘启事,然后鄙视它:“妈的!为了这个要求,我就去掉价!”,那你就是真正的大牛了!

推荐阅读