单片机技术网|技术阅读
登录|注册

您现在的位置是:单片机技术网 > 技术阅读 > 嵌入式系统开发者需要掌握什么技术?

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

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


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




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


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


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


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

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

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

  • 嵌入式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-


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