大家好,我是小嵌,在知乎上看到这个问题,其中有一个答主的答案很经典,特此分享给大家。

说实话,问题中嵌入式开发这个话题有点庞大,毕竟它涵盖的领域和范围很宽泛。作为一个在嵌入式软件开发方面工作了十多年的老程序猿,这么多年过来也在通过不停的自学和各类项目的历练中,不断积累自己的嵌入式软件开发的技能栈。

这里也借题主的问题宝地,梳理一下嵌入式软件开发方向的技能栈,以期对题主和广大嵌入式软件爱好者有所帮助。毕竟是站在个人的经历角度分享,如有缺失敬请谅解。

作为嵌入式软件开发,其实可以细分为:

  1. 嵌入式MCU软件开发工程师;

  2. 嵌入式Linux底层(BSP)软件开发工程师;

  3. 嵌入式Linux应用开发工程师;

  4. 嵌入式FPGA算法开发工程师

我这么多年,从MCU开发及Linux应用开发起步,在合伙创业过程中自学并通过项目实践构建了Linux底层驱动技能栈,FPGA算法工程师仅仅因为与公司的相应同事有过交际集,这里就不过多阐述FPGA算法工程师的技能栈,防止给大家带跑偏了。

1. 嵌入式MCU软件开发工程师

【基本武器】

  • C语言编码能力(数据结构,常用算法,指针和数组,结构体和位域等)

  • MCU的理论知识(时钟树,内存,中断,GPIO,功能外设(uart,iic,dma等)等)

  • MCU的编码方式(寄存器/库函数),编译下载过程(根据题主选择的MCU来学习)

  • 基本的电路连线图能看懂(MCU的管脚如何连接到外界器件等)

  • 实时操作系统编码能力(ucos,freertos,liteos等等)

  • 业务场景知识(根据题主嵌入式产品场景而定)

【升级武器】

  • 软件架构设计能力

  • 示波器,逻辑分析仪使用(调试通信器件使用)

  • 读取反汇编能力(定位Bug时候可能用到)

  • 掌握通信协议(串口232通信,485通信,iic协议,spi协议,tcp/ip,can协议等等)

2. 嵌入式Linux应用开发工程师

【基本武器】

  • Linux C语言编码能力(数据结构,常用算法,指针和数组,结构体和位域等)

  • Linux常用功能API(多线程,多进程,锁类,进程/线程通信机制相关等)

  • Linux Shell使用(基本的Linux操作能力)

  • Makefile/GDB调试

  • 掌握通信协议(串口232通信,485通信,iic协议,spi协议,tcp/ip,can协议等等)

  • 业务场景知识(根据题主嵌入式产品场景而定)(比如视频,那么rtsp,h264编码,视频基础)

【升级武器】

  • 软件架构设计能力

  • 读取反汇编能力(定位Bug时候可能用到)

  • Linxu操作系统理解(用户态,内核态,中断机制,内存机制等)

3. 嵌入式Linux底层(BSP)开发工程师

【基本武器】

  • Linux C语言编码能力(数据结构,常用算法,指针和数组,结构体和位域等)

  • Linux裁剪,移植,编译

  • Linxu操作系统理解(用户态,内核态,中断机制,内存机制等)

  • Linux Shell使用(Linux操作能力)

  • bootloader(uboot等)修改

  • 基本调试用通信方法(uart,tcp/ip)

【升级武器】

  • Linux驱动开发能力

  • Linux内核机制

  • 等等

以上根据个人的工作经历中使用的技能栈总结,难免存在遗漏。毕竟每个嵌入式工程师从事的行业不同,技能栈也会有所不同。

以上建议,也仅供题主和广大嵌入式软件爱好者参考。

作者:snowdream
链接:https://www.zhihu.com/question/449050796/answer/1782550929
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

-END-

点击下方卡片关注,一起学嵌入式。

嵌入式系统开发者需要掌握什么技术?相关推荐

  1. 嵌入式系统降低功耗的设计技术

    电源通常被认为是整个嵌入式系统的"心脏",绝大多数电子设备50%~80%的节能潜力在于电源系统.研制开发新型开关电源是节能的主要举措之一. 近年来许多公司相继推出一系列功能齐全.种 ...

  2. 鸿蒙系统内存管理,嵌入式系统内存管理-鸿蒙HarmonyOS技术社区-鸿蒙官方战略合作伙伴-51CTO.COM...

    1.概述 操作系统的内存管理功能用于向操作系统提供一致的地址映射功能和内存页面的申请.释放操作.在嵌入式实时系统中,内存管理根据不同的系统,有不同的策略,对于有些系统支持的虚拟内存管理机制,对于另外一 ...

  3. 微型计算机工业控制技术,基于ARM的微机原理与接口技术(STM32嵌入式系统架构编程与应用嵌入式与工业控制技术高等学校电子信息类专业系列教材)...

    导语 内容提要 本书首先介绍微型计算机的相关概念及嵌入式系统的应用,接着介绍Cortex M3微处理器架构及开发方法,介绍汇编语言及其程序设计.在开发应用方面,以STM32F103VET6为背景,介绍 ...

  4. 嵌入式系统开发技术(00)

    嵌入式系统开发技术(00) 目标 嵌入式系统基础 嵌入式处理器 嵌入式系统硬件组成 嵌入式系统软件 嵌入式系统的开发 目标 嵌入式系统基础 嵌入式系统的特点.分类.发展和应用 嵌入式系统的组成和微电子 ...

  5. 中兴新支点嵌入式系统技术成物联网发展的驱动力

    物联网技术并不是一个单独的技术,而是多种已有技术的融合:如处理器技术.互联网技术.嵌入式系统技术.传感器网络技术.通信技术.RFID技术等.而且,物联网是新一代信息技术的重要组成部分,是互联网与嵌入式 ...

  6. 嵌入式系统理解及相关知识100问

    开发板(demoboard)是用来进行嵌入式系统开发的电路板,包括中央处理器.存储器.输入设备.输出设备.数据通路/总线和外部资源接口等一系列硬件组件.开发板一般由嵌入式系统开发者根据开发需求自己订制 ...

  7. 嵌入式系统与硬件安全知识小记

    目录 嵌入式系统概述 第一节 嵌入式系统概念 第二节 嵌入式系统与台式计算机 第三节 嵌入式系统与单片机 嵌入式处理器 第一节 从传统处理器到片上系统 第二节 嵌入式处理器之ARM 第三节 嵌入式处理 ...

  8. 基本概念学习(1003)---嵌入式系统

    嵌入式系统(Embedded system),是一种"完全嵌入受控器件内部,为特定应用而设计的专用计算机系统",根据英国电气工程师协会( U.K. Institution of E ...

  9. 嵌入式计算机的发展阶段,嵌入式系统的定义与发展历史

    嵌入式系统的定义与发展历史 嵌入式系统诞生于微型机时代,经历了漫长的独立发展的单片机道路.下面是小编整理的关于嵌入式系统的定义与发展历史,希望大家认真分析! 目前,在嵌入式系统应用领域中,不少人对什么 ...

最新文章

  1. php如何解决中文乱码问题?
  2. linux命令:java程序后台运行
  3. mfc存储颜色到mysql_mfc存储二进制文件
  4. sql 算出下级销售总和_找出总和字符串
  5. Spring Cloud与微服务学习总结(3)——认证鉴权与API权限控制在微服务架构中的设计与实现(一)
  6. 如何模拟POST/PUT/DELETE等请求进行在线HTTP接口测试?
  7. [转载] Python: ljust()|rjust()|center()字符串对齐
  8. 基于信息熵确立权重的topsis法_基于信息熵和TOPSIS法的装备战场抢修排序决策模型...
  9. Perl语言如何学习总结
  10. 易我电脑迁移 2022
  11. Oracle Grid 下载地址
  12. 通达OA2019安装教程
  13. python 单例模式基本原则、使用场景、应用示例
  14. 数据库原理及应用-李唯唯主编-实验3-2
  15. ViTDet程序调用不了GPU全部内存,而且显示NVCC: not available
  16. 服务器i620-g15用什么型号内存,定位不同领域 曙光I620-G15服务器评测
  17. 乌班图安装nginx
  18. Photoshop 人物素描化
  19. C/C++黑魔法-枚举骇客
  20. int转long类型

热门文章

  1. poj2299 ( bit )
  2. Web安全渗透测试之信息搜集篇(上)
  3. firefox 和 ie 事件处理的细节,研究,再研究-----书写同时兼容ie和ff的事件处理代码...
  4. python面试题总结(2)--编码规范
  5. sql server 2008 r2卸载重装_免费下载:Intouch软件、Windows操作系统、SQL数据库,VB6.0、C#...
  6. JavaScript使用场景
  7. 石头剪刀布python编程_《python核心编程第二版》练习题——游戏:石头剪刀布
  8. golang switch_为什么程序员都不喜欢使用 switch ,而是大量的 if……else if ?
  9. 用Visual Studio 2019连接 WSL来编译调试C/C++项目
  10. 贪心算法设计作业调度c语言,贪心算法 - 数据结构与算法教程 - C语言网