想走 Linux 方向,到底要不要先学 STM32 和 FreeRTOS?

经常有学弟学妹私信问我这个问题,今天就趁着摸鱼时间简单聊聊我的看法,希望能帮到一些还在纠结路线的兄弟。先说结论:看你具体想走哪个方向,不是一刀切的答案。

先搞清楚这俩到底是啥

在回答之前,先把概念捋一下,不然很多人其实是糊里糊涂在问。

Linux 本质上是一个操作系统内核,配合各种其他软件才能组成一个完整的操作系统,它是个软件

STM32 是 ST 公司基于 ARM Cortex-M 系列内核做的 SoC 芯片(大部分是简单的 M3/M4/M7),它是个硬件

说白了一个是软件一个是硬件,完全不是一个层面的东西。所以我一直挺纳闷的,"学 Linux 必须先学 STM32"这个说法到底是从哪传出来的……

那到底有没有关系?

有,但仅限于嵌入式 Linux 方向(包括 Linux 驱动开发)。

得先明白一点:Linux 从业方向真的非常非常多,随便列一下就有:

  • 嵌入式 Linux
  • Linux 内核开发
  • 驱动开发
  • 网络开发
  • 应用开发
  • 音视频开发
  • 系统开发
  • 运维

不同方向对底层硬件的依赖程度差太多了,不能一概而论。

想走嵌入式 Linux,建议先学 STM32 + FreeRTOS

如果你的目标很明确就是嵌入式 Linux 开发,我个人建议从 STM32 + FreeRTOS 入门。原因也很简单:

1. 学习曲线更平滑

Linux 本身是个非常复杂的软件系统,跑 Linux 的芯片(比如 A 系列)也比 STM32 复杂得多。直接上来啃 Linux,很容易被各种概念劝退。从简单的东西入门再过渡到复杂的,这个学习路径会舒服很多。

2. 硬件知识是互通的

从 STM32 上你能搞明白一个芯片大概由哪些东西组成——时钟、总线、GPIO、中断、DMA、外设控制器……这些知识在 A 系列芯片上几乎都是通用的,有些东西甚至完全一样。底层硬件这块吃透了,后面看 Linux 驱动就不至于一脸懵。

3. FreeRTOS 是 Linux 的"简化版预习"

FreeRTOS 是一个很轻量的 RTOS,任务调度、信号量、互斥锁、消息队列这些核心概念都有,但实现要简单得多。先把这些概念在 FreeRTOS 里搞明白,再去看 Linux 内核里那一套,理解起来会快很多。

但其他方向就真不一定了

最典型的就是 Linux 网络开发

很多 STM32 芯片压根就没网卡这个外设,你学 STM32 对学 Linux 网络协议栈基本没什么帮助。这种情况下硬要先学 STM32,纯属浪费时间,不如直接上手 Linux 系统编程、socket 编程、协议栈那一套。

同理,如果你走的是应用开发、运维、音视频这些方向,STM32 的硬件知识用处也不大,按需学就行。

写在最后

总结一下我的看法:

  • 嵌入式 Linux / 驱动方向 → 建议先 STM32 + FreeRTOS 打底,再上 Linux
  • 网络 / 应用 / 运维 / 音视频方向 → 直接学 Linux 就行,STM32 不是必需的
  • 完全不知道自己要走哪个方向 → 那就先 STM32 + FreeRTOS,反正硬件基础学了不亏,后面拐弯也来得及

之前参考的一个指南比较好 有需要的同学可以看看

嵌入式软件工程师面试完全指南

把整个秋招攒下来的面经全整理在这里了,目前32篇 / 12w+字,持续更新中。

内容覆盖:C语言陷阱 / 计网高频 / 操作系统 / RTOS / Linux驱动 / 通信协议 / 硬件基础——基本你面试会被问到的,这里都有。

已经有 4.7w+ 同学在看,3300+ 订阅,数据放这,口碑自己说话。

适合面经基础薄弱、想系统梳理一遍的同学,后面只会越来越全。

https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务