一类简单的,没有操作系统支持的;
(相关资料图)
一类复杂的,有操作系统的。
开发平台的熟悉,目前的嵌入式开发大多数是在linux或者类linux下的环境下进行的,那么linux的使用应该熟悉吧,shell脚本得会写吧,配置文件得会改吧,GCC GDB 得会用吧,Make工具得会吧?
比如项目管理工具的使用,都什么年代了,不会用CVS,也不会用SVN?请问,你还活在软件时代的原始社会么?
数据结构和算法,搞软件开发,不懂数据结构,不会算法优化,不会衡量复杂度,太不靠谱了吧?当然,这个不是要求啥算法都会,啥数据结构都记得住,最起码得知道有那么种东西,有什么作用,这样用到的时候好歹也能查啊
编程语言,关于JAVA,我知道现在JAVA的异军突起,很是震动了编程语言界,但是在嵌入式开发下,不会C或者C++语言,实在说不过去。
当然现在很多手机应用完全用java写的,如果你只想搞嵌入式的上层软件开发又不想深入下去,只用JAVA也未尝不可。
关于汇编,嗯,这个可能挺难,毕竟跟具体的硬件架构(主要是CPU)有关,但是真的很有意思,而且在某些时候,它是不可替代的。
数字电路,主要是了解一些基本的电路知识,如门电路、逻辑电路、存储器、寄存器,为了更好的理解嵌入式芯片,存储器,外围设备等硬件的设计,但往往在软件开发中未必能用的到,因为大部分硬件都提供了很完整的软件接口。
操作系统,这个说的是平台上选用的操作系统,嵌入式产品操作系统是在太多了,但操作系统的内部设计原理都是殊途同归。
首先要去学习的是操作系统原理,去了解进程通信、内存管理、文件系统等几个重要的部分,因为这些在软件开发尤其是内核驱动开发时会用到。
接下来可以去熟悉至少一种主流的操作系统,Linux是一个很好的选择,去了解它的内核架构,设备驱动架构,如何去编译,裁剪,编写应用程序,以及如何使用在具体的嵌入式产品上
计算机的组成/微机原理,主要是为了了解微型计算机的硬件工作原理,明白CPU、总线、I/O、存储器等一些关键结构是怎么工作的,虽然是很枯燥的知识,但是对熟悉外围设备硬件工作方式,及操作系统,软件架构的设计及优化相当关键。
通信协议,对于非应用层的通信协议,我实在不知道是不是该把它放入操作系统的范畴,因为很多操作系统是没有网络部分的,但是在很多方面它又是由操作系统提供。
当然这些下层通信协议,貌似不太用关心,因为太多的开源协议栈了,应用层的网络协议可能就要关心了,比如http,ftp,rtsp,rtmp,mms等等。
音视频处理,比如文件封装啊,音视频的编解码啊,各种音视频的标准啊,还有流媒体什么的。Ffmpeg是一个很好的东西,建议学习一下。
信息安全,恩,这一块貌似现在越来越受到重视了。
数据库,唉,嵌入式设备能力越来越强啊!再搞搞我看也不用交叉编译了。
勤奋,为了解决一个技术问题经常会主动留下来加班;
钻研,为了解决一个技术问题会主动学习各方面的资料,勤做实验,用事实去验证;
和领导和同事及时主动沟通,集思广益,争取各方面的资源,充分利用已有的经验,避免走弯路,加快研发进程;
有强烈的事业心和牺牲精神,不达目标绝不停息。
工作没有目标,精力分散,很多的时间花在网络上,偷偷的看视频;
工作推卸责任,把工作没有进展的原因推卸到工作难度太大,或者资源不够,而自己却又不主动的去争取资源;
工作时用到的知识永远是你现有知识的综合,不注重基础知识的学习,又不去勤奋实践,很多的时间花在网络上,视频上,能力怎么可能突飞猛进呢?
和同事和领导的沟通不主动,甚至避让,怕领导检查工作;
更关注生活而不是工作;
比较在意自己的付出。
标签:
Copyright © 2015-2023 今日兽药网版权所有 备案号:沪ICP备2023005074号-40 联系邮箱:5 85 59 73 @qq.com