学习Linux需要掌握什么技术,需要先学习strm32吗

作为一枚嵌入式软件开发的老程序员,答主也是经历过STM32开发向Soc+Linux开发的技术栈转变过程。总的来说,具备stm32嵌入式开发技能对于掌握Soc+Linux的嵌入式开发有一定的促进作用,但是如果题主志在走向Linux应用开发道路,那么stm32的开发技能并不一定非要全部掌握

根据答主个人的技能栈转变的经历,以下技能通常是stm32和Linux嵌入式应用开发所共有的,换句话说是可以复用的技能

1、C编码能力

做嵌入式开发,目前主流的编码语言依然是C语言。stm32如此,Linux也是一样。唯一不同的是,Linux的嵌入式开发中,会经常涉及到一些Linux库函数API,比如socket,比如锁等。这些等到用到的时候拿来用就可以。所以,如果stm32开发项目足够多,一般来说C的编程技能是可以直接继承的。

2、功能模块和算法设计能力

做应用开发,关键在于理解需求,并根据需求设计合适的功能单元(为其他模块提供API接口)或者设计合适的控制逻辑算法。而这种领悟需求,设计模块和算法的能力也是可以通过在stm32项目中得到历练,并且可以为Linux应用开发提供基础的。

3、多线程和互斥保护思维

如果说Linux应用开发与stm32最大的区别在哪里?那么多线程和互斥保护的思维会是首选。在Linux的开发世界里,离不开线程和进程,离不开对共享资源的互斥保护。但是stm32的开发中,如果没有涉及到RTOS的话,是需要学习一下RTOS的多任务思维的。多任务与多线程有着很相似的逻辑,所以有了RTOS多任务思维的话,对于学习掌握Linux多线程多进程和互斥保护,可以起到极大的促进作用。

4、部分常用协议栈的基础能力

stm32这款mcu可以说外设及内部库支持力度已经非常强大,对于学习部分通信协议栈来说是非常有帮助的。可能有的朋友说,我不做Linux驱动,没有必要学习什么UART,IIC,SPI,DMA,TCP/IP,RapidIO等硬件通信协议。这种想法是不对的。有此类的协议栈基础,总会在未来应用开发上用得上。

答主在Linux的很多应用开发中,曾经涉及到与其他嵌入式系统通信的功能单元开发和自有通信协议的设计,举个例子,如果不理解UART协议,你也没有办法去设计你的协议文本。如果不理解RapidIO协议,你怎么和其他单板的CPU通信,虽然驱动的同事会帮你做好驱动,但是上层的逻辑或者出现问题定位,懂些协议栈总会能帮到你。

所以,总结来说,不一定非要把stm32弄得精通再去学习嵌入式Linux开发。如果有了上述四点的stm32积累,就可以考虑向嵌入式Linux应用开发进行尝试。这里,答主曾经总结过mcu和soc技术栈的基础知识点,感兴趣的朋友可以到回答中自行查看

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

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值