马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
如何才能从事嵌入式软件开发岗位,怎样才能符合企业需求,对于过完年想要找工作的朋友们来说,是几个比较关心的问题,那么创客学院的老师就跟大家简单介绍一下企业中必备知识点。 1、数字电路:学习这方面的知识主要是了解一些基本的电路知识,如门电路、逻辑电路、存储器、寄存器,为了更好的理解嵌入式芯片,存储器,外围设备的工作原理。 2. 编程语言:C/C++语言和汇编C语言的语言特性相对简单,主要的知识点在于结构化,函数,数组,指针。但是嵌入式开发对C语言应用的要求会更高。要对内存分配,文件访问,寄存器访问,预处理指令,中断处理程序等要相当熟悉,这些都是在使用中要注意的细节问题。C语言对程序的优化也很重要,而这些往往是需要从全局去考虑。汇编一般是和处理器的指令集相关的,可以更好的去理解处理器的工作原理,往往是用在一些需要效率的地方,如系统的初始化。汇编或许已经不是主流的工程编程语言,但是嵌入式软件工程师一定会在相关场合用到它。汇编作为符号语言,要记忆相对大量的符号命令,编程的时候也会感觉缺少结构性的美,会比较枯燥。对于学习C++,嵌入式软件工程师不可避免得会接触到网络编程,加之C++语言支持面向对象编程,学习它也是为了学习一种编程艺术,所以很有必要。 3. 数据结构和算法数据结构在嵌入式开发中也很重要,我曾错误得认为做嵌入式不需要太过重视数据结构知识。然而操作系统里的很多实现都大量运用了具体的数据结构和算法。基本的数据结构需要掌握,如各种链表,树,图等等;而算法的学习需要数学知识作为铺垫,用计算机语言去实现。对于软件从业人员来说,算法终究是一个工具,在实际应用时再深入挖掘也可。学习数据结构知识的时候,最好运用C语言来实现,同时思考它对应的内存模型。(大一的时候我的数据结构停留在伪代码学习阶段,从来没有去实现过,可见后来要补起来多么痛苦)。 4. 操作系统嵌入式产品应用比较广泛的是Linux和WinCE。但操作系统的内部设计原理都是殊途同归。首先要去学习的是操作系统原理,去了解进程通信、内存管理、文件系统等几个重要的部分,因为这些在软件开发尤其是内核驱动开发时会用到。接下来可以去熟悉至少一种主流的操作系统,Linux是一个很好的选择,去了解它的内核架构,设备驱动架构,如何去编译,裁剪,编写应用程序,以及如何使用在具体的嵌入式设计上。(一开始就上手Linux估计比较费劲,可以先结合stm32学会运用uC/OS,对操作系统有个宏观了解。) 5.计算机网络网络知识几乎是所有软件开发岗的基本知识,编写一些需要联网的嵌入式设备应用时,你会不可避免的要用到TCP/IP协议簇。在学习这些的时候,你会发现协议规范都只是一种对数据的封装约定,作为嵌入式工程师,你需要同时加深其他协议,例如IIC、SPI、UART、CAN等等协议的思考。 6. 软件工程基础这些是软件开发人员的必备知识,面试的时候会经常问你,你的项目相对庞大,你是怎么设计、管理和测试你的项目的。 7. 开发平台嵌入式的开发平台不局限于一种操作系统,因此要熟悉Linux和Windows操作系统下的命令、编辑器及开发工具,这一点往往被很多人忽视。举个例子,Linux下的程序员开发环境往往是按自己的习惯搭建,熟练掌握一种编辑器如Vim/Emacs可以大幅度提高工作效率。磨刀不误砍柴工。 除了掌握嵌入式开发必备的知识,必备的实践是必不可少的,我建议的是,早起步,多比赛,多实践,精通51单片机C语言编程,同时熟悉stm32、ARM9等ARM内核的平台的相应开发。对于起步晚的同学,也不要怕,没有什么不可能。 |