嵌入式工程师有前途吗 嵌入式开发的职业发展方向是什么

简介: 嵌入式早在70年代出现到现在,有将近30年的发展历史,能够长久存在并且可持续发展。从工程师起步, 一般有几个发展方向,一个是成为技术方面的核心,领域内的专家;另一个是从项目中锻炼起来,成为项目主管或是管理型人才;再有就是利用自己的技术及行业经验去创业。

       嵌入式早在70年代出现到现在,有将近30年的发展历史,能够长久存在并且可持续发展。从工程师起步, 一般有几个发展方向,一个是成为技术方面的核心,领域内的专家;另一个是从项目中锻炼起来,成为项目主管或是管理型人才;再有就是利用自己的技术及行业经验去创业。

 

 

 嵌入式工程师有前途吗 嵌入式开发的职业发展方向是什么

硬件和软件的发展方向是不同的。说说软件需要学习的知识。虽然说搞嵌入式软件更多时候是在实际的工作中学习的,但一些重要的基础知识不可或缺。

 

 1. 计算机组成/微机原理  



主要是为了了解微型计算机的硬件工作原理,明白CPU、总线、I/O、存储器等一些关键结构是怎么工作的,虽然是很枯燥的知识,但是对熟悉外围设备硬件工作方式,及操作系统,软件架构的设计及优化相当关键。

 

2. 操作系统



嵌入式产品应用比较广泛的是Linux和WinCE。但操作系统的内部设计原理都是殊途同归。首先要去学习的是操作系统原理,去了解进程通信、内存管 理、文件系统等几个重要的部分,因为这些在软件开发尤其是内核驱动开发时会用到。接下来可以去熟悉至少一种主流的操作系统,Linux是一个很好的选择, 去了解它的内核架构,设备驱动架构,如何去编译,裁剪,编写应用程序,以及如何使用在具体的嵌入式产品上。

 

3. 数字电路



学习这方面的知识主要是了解一些基本的电路知识,如门电路、逻辑电路、存储器、寄存器,为了更好的理解嵌入式芯片,存储器,外围设备等硬件的设计,但往往在软件开发中未必能用的到。因为大部分硬件都提供了很完整的软件接口。

 

4. 编程语言:C语言和汇编



对于C语言本身的基础来说,无非是把结构化,函数,数组,指针弄熟,但是嵌入式开发对C语言应用的要求会更高。要对内存分配,文件访问,寄存器访问, 预处理指令,中断处理程序等等相当熟悉,这些都是在使用中要注意的细节问题。C语言对程序的优化也很重要,而这些往往是需要从全局去考虑。汇编一般是和处 理器的指令集相关的,可以更好的去理解处理器的工作原理,往往是用在一些需要效率的地方,如系统的初始化。

 

5. 数据结构和算法



数据结构在嵌入式开发中也很重要,比如说操作系统里的很多实现都用到了具体的算法。基本的数据结构需要掌握,如各种链表,树,图等等;而算法的学习需要数学知识作为铺垫,用计算机语言去实现。对于软件从业人员来说,算法终究是一个工具,在实际应用时再深入挖掘也可。

 

6. 软件工程/软件测试/项目管理基础



这些是软件开发人员的必备知识。

 

7. 开发平台



嵌入式的开发平台不局限于一种操作系统,因此要熟悉各种操作系统下的命令、编辑器及开发工具,这一点往往被很多人忽视。举个例子,Linux下的程序员开发环境往往是按自己的习惯搭建,熟练掌握一种编辑器如Vim/Emacs可以大幅度提高工作效率。磨刀不误砍柴工。

  

嵌入式领域的方向是很多的,它所应用到的行业范围也很广。因此除了这些基础的知识以外,在具体的应用中可能还需要一些其它的知识,这些知识的每一种都可以研究的很深,举几个例子。

 

1. 内核,驱动及中间件



内核开发和驱动本身就是一个方向,驱动和硬件接口相关,而内核的修改和移植更是需要对OS有很深的理解。至于中间件,一般是基于OS或存在于OS和应用程序之间的库,最典型的就是基于Linux的Android。

 

2. 通信协议



通信协议有很多种,经常用到的有网络通信协议,无线通信协议,串口/USB通信协议等等。

 

3. 音视频技术



牵涉到音频视频处理,压缩,编解码等等。

 

4. 信息安全

如加密技术,身份认证,数字证书等等。

 

5. 行业知识

和具体行业或领域相关的知识,如通讯、工控、电子等等。

  

这里有一个不错的学习步骤:

  1. 基础知识中,计算机组成、操作系统、编程语言和数据结构是必需的。

  2. 找一种CPU体系,了解其核心架构,学习指令集,比如说ARM。

  3. 找一种OS,如Linux,或是传统RTOS,如Nucleus、eCos,读源码和文档,理解OS内部实现,包括进程,任务,消息机制,内存管理,设备驱动,中断等核心内容。

  4. 找一块成熟的开发板,板级资料要齐全,熟悉嵌入式软件开发流程。

  5. 在项目过程中深入学习其它的技术。

  

总之,这些知识的学习不是一蹴而就的,嵌入式职业发展过程会很漫长,也没有什么特别的技巧。可以多关注下创客学院,有什么不懂的问题可以随时咨询。需要去看大量的技术文档和源码,而这些文档大部分又都是英文的。在工作和做具体项目的过程中会学习的比较快,理论结合实践才是王道。

 

相关文章
|
存储 人工智能 算法
五子棋简易AI算法1
基本思想 设置不同连接方式的权值并进行存储
682 1
|
数据库 OceanBase 索引
OceanBase迁移服务(OMS)支持不同大小和复杂度的表的迁移
【2月更文挑战第25天】OceanBase迁移服务(OMS)支持不同大小和复杂度的表的迁移
404 3
|
Java Maven Android开发
【Azure Developer】VS Code打包Java maven Project 遇见 BUILD FAILURE
Unknown lifecycle phase "lean". You must specify a valid lifecycle phase or a goal in the format <plugin-prefix>:<goal> or <plugin-group-id>:<plugin-artifact-id>[:<plugin-version>]:<goal>
260 5
|
Kubernetes Cloud Native 微服务
微服务实践之使用 kube-vip 搭建高可用 Kubernetes 集群
微服务实践之使用 kube-vip 搭建高可用 Kubernetes 集群
481 1
|
存储 Web App开发 JavaScript
深入浅出Node.js后端开发
【8月更文挑战第29天】本文将带你领略Node.js的魅力,从基础概念到实际应用,一步步构建你的第一个后端项目。我们将深入探讨Node.js的核心特性、事件驱动和非阻塞I/O模型,并通过实际代码示例,展示如何利用Node.js进行高效的后端开发。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供宝贵的知识和技能,让你在后端开发的旅途中更加游刃有余。
|
Web App开发 编解码 前端开发
electron+vue网页直接播放RTSP视频流?
目前大部分摄像头都支持RTSP协议,但是在浏览器限制,最新版的浏览器都不能直接播放RTSP协议,Electron 桌面应用是基于 Chromium 内核的,所以也不能直接播放RTSP,但是我们又有这个需求怎么办呢?
555 100
|
Linux 编译器 Shell
eBPF动手实践系列三:基于原生libbpf库的eBPF编程改进方案
为了简化 eBPF程序的开发流程,降低开发者在使用 libbpf 库时的入门难度,libbpf-bootstrap 框架应运而生。本文详细介绍基于原生libbpf库的eBPF编程改进方案。
|
Web App开发
web接入海康相机视屏流 注意事项 - 编码H264
web接入海康相机视屏流 注意事项 - 编码H264
455 1
|
安全 Java Spring
如何在调试开发阶段,在已经配置了springsecurity的情况下还能使用swagger或者knife4j
如何在调试开发阶段,在已经配置了springsecurity的情况下还能使用swagger或者knife4j
344 0
|
负载均衡 网络协议 应用服务中间件
C++文件服务器项目—Nginx—3(三)
C++文件服务器项目—Nginx—3(三)
284 0