新闻  |   论坛  |   博客  |   在线研讨会
嵌入式系统开发者需要掌握什么技术?
电子禅石 | 2023-02-14 17:53:11    阅读:7904   发布文章

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


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

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

  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
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
属于自己的技术积累分享,成为嵌入式系统研发高手。
推荐文章
最近访客