news 2026/4/24 12:20:16

Linux 嵌入式开发完整入门:工具、配置和学习路线

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux 嵌入式开发完整入门:工具、配置和学习路线

Linux 嵌入式开发完整入门:工具、配置和学习路线

适合对象:想在 Linux 上从零开始搭建嵌入式开发环境的新手。你可能正在学习 STM32、ESP32、RISC-V、Linux 驱动、RTOS 或单片机裸机开发。

本教程不绑定某一个 IDE,而是讲清楚 Linux 嵌入式开发到底需要哪些工具、每个工具做什么、怎么配置。

1. Linux 嵌入式开发分几类

新手先分清自己属于哪一类。

类型例子主要工具
单片机裸机STM32、GD32、NXP、RISC-V MCUarm-none-eabi-gcc、OpenOCD、GDB、CMake
RTOSFreeRTOS、RT-Thread、ZephyrCMake/West/SCons、GDB、串口工具
嵌入式 Linux 应用树莓派、ARM Linux 板gcc/g++、交叉编译器、SSH、gdbserver
Linux 驱动字符设备、I2C、SPI、内核模块kernel headers、make、dtc、交叉编译
ESP32ESP-IDFidf.py、CMake、Ninja

如果你是 STM32 新手,看“单片机裸机”路线。

2. 推荐 Linux 发行版

新手推荐:

  • Ubuntu 24.04 LTS。
  • Ubuntu 22.04 LTS。
  • Debian 12。

不建议一开始使用:

  • Arch,滚动更新对新手不友好。
  • Kali,它不是开发系统。
  • 过老 Ubuntu,依赖版本容易不匹配。

3. 建议目录规划

~/embedded/ tools/ # 手动下载的工具链 projects/ # 自己的工程 sdk/ # ESP-IDF、Zephyr、厂商 SDK docs/ # 数据手册、参考手册 scripts/ # 常用脚本

创建:

mkdir-p~/embedded/{tools,projects,sdk,docs,scripts}

4. 安装基础开发工具

Ubuntu / Debian:

sudoaptupdatesudoaptinstall-y\gitcurlwgetunzipxz-utils\build-essential cmake ninja-buildmakepkg-config\gdb gdb-multiarch\python3 python3-pip python3-venv\minicomscreenpicocom\openocd\udev

验证:

git--versiongcc--versioncmake--versionninja--versionpython3--versionopenocd--version

5. 安装 ARM 裸机工具链

5.1 直接用 apt

sudoaptinstall-ygcc-arm-none-eabi binutils-arm-none-eabi

验证:

arm-none-eabi-gcc--versionarm-none-eabi-size--versionarm-none-eabi-objcopy--version

5.2 手动安装官方工具链

如果 apt 版本太旧:

  1. 去 Arm GNU Toolchain 官网下载 Linux x86_64 包。
  2. 解压到:
~/embedded/tools/
  1. 加入 PATH:
nano~/.bashrc

加入:

exportPATH="$HOME/embedded/tools/arm-gnu-toolchain/bin:$PATH"

刷新:

source~/.bashrc

6. 安装 OpenOCD

OpenOCD 用来连接调试器和芯片。

sudoaptinstall-yopenocd

测试 ST-LINK + STM32F1:

openocd-finterface/stlink.cfg-ftarget/stm32f1x.cfg

成功标志:

Info : STLINK V2J... Info : target halted Info : Listening on port 3333 for gdb connections

常见 target:

STM32F1: target/stm32f1x.cfg STM32F4: target/stm32f4x.cfg STM32H7: target/stm32h7x.cfg GD32: 有些可兼容 stm32 配置,有些需要单独配置

7. 配置 USB 权限

没有权限时会出现:

LIBUSB_ERROR_ACCESS unable to open probe

解决:

sudousermod-aGplugdev$USERsudoudevadm control --reload-rulessudoudevadm trigger

有些工具链会提供 udev 文件,例如:

stlink.rules openocd.rules jlink.rules

复制到:

/etc/udev/rules.d/

然后重新插拔调试器,并重新登录。

8. 串口工具

嵌入式开发经常要看串口日志。

安装:

sudoaptinstall-yminicom picocomscreen

查看串口设备:

ls/dev/ttyUSB*ls/dev/ttyACM*

加入串口权限组:

sudousermod-aGdialout$USER

重新登录后使用:

picocom-b115200/dev/ttyUSB0

退出 picocom:

Ctrl+A,然后 Ctrl+X

9. CMake 裸机工程基本结构

推荐结构:

blink/ CMakeLists.txt cmake/ arm-none-eabi.cmake src/ main.c inc/ main.h startup/ startup_stm32f103xb.s linker/ STM32F103C8Tx_FLASH.ld

构建:

cmake-S.-Bbuild-GNinja-DCMAKE_BUILD_TYPE=Debug cmake--buildbuild

查看大小:

arm-none-eabi-size build/firmware.elf

生成 bin:

arm-none-eabi-objcopy-Obinary build/firmware.elf build/firmware.bin

10. Makefile 裸机工程基本命令

有些老工程使用 Makefile:

makemakecleanmakeflash

常见变量:

CC=arm-none-eabi-gcc OBJCOPY=arm-none-eabi-objcopy SIZE=arm-none-eabi-size CFLAGS=-mcpu=cortex-m3 -mthumb -O0 -g LDFLAGS=-T linker.ld -Wl,--gc-sections

新手如果看不懂 Makefile,可以让 AI 解释:

请用中文解释这个 Makefile。 重点解释 CC、CFLAGS、LDFLAGS、SRCS、OBJS、flash 目标分别做什么。

11. GDB 基本调试流程

终端 1 启动 OpenOCD:

openocd-finterface/stlink.cfg-ftarget/stm32f1x.cfg

终端 2 启动 GDB:

arm-none-eabi-gdb build/firmware.elf

GDB 内输入:

target remote localhost:3333 monitor reset halt load break main continue

常用命令:

next step continue print variable_name info registers monitor reset halt

12. VS Code 可选配置

如果用 VS Code:

推荐扩展:

  • C/C++。
  • CMake Tools。
  • Cortex-Debug。

构建任务:

{"version":"2.0.0","tasks":[{"label":"build","type":"shell","command":"cmake --build build","group":"build","problemMatcher":"$gcc"}]}

调试配置参考:

{"name":"OpenOCD Debug","type":"cortex-debug","request":"launch","servertype":"openocd","executable":"${workspaceFolder}/build/firmware.elf","configFiles":["interface/stlink.cfg","target/stm32f1x.cfg"],"runToEntryPoint":"main"}

13. CLion 可选配置

如果用 CLion:

  1. 配 Toolchain。
  2. 配 CMake Profile。
  3. 配 Embedded Development。
  4. 使用 OpenOCD Download & Run。

CLion 对 CMake 工程体验很好,适合:

  • 想要强代码跳转。
  • 想要图形化调试。
  • 想看寄存器/外设视图。
  • 不想手写太多 VS Code json。

14. STM32CubeMX 在 Linux 上怎么用

步骤:

  1. 安装 STM32CubeMX。
  2. 创建项目。
  3. 选择芯片。
  4. 配置SYS -> Debug -> Serial Wire
  5. 配置 GPIO/UART/SPI/I2C。
  6. Project Manager -> Toolchain / IDE选择CMake
  7. 生成代码。
  8. 用 CLion 或 VS Code 打开。

新手一定要记住:

自己写的代码放在 USER CODE BEGIN/END 中。

15. ESP32 Linux 开发工具

ESP32 推荐官方 ESP-IDF。

大致流程:

mkdir-p~/embedded/sdkcd~/embedded/sdkgitclone--recursivehttps://github.com/espressif/esp-idf.gitcdesp-idf ./install.sh../export.sh

创建工程:

idf.py create-project hello_worldcdhello_world idf.py set-target esp32 idf.py build idf.py flash monitor

串口权限同样需要dialout组。

16. Zephyr Linux 开发工具

Zephyr 使用west

基本流程:

python3-mvenv ~/embedded/venv-zephyrsource~/embedded/venv-zephyr/bin/activate pipinstallwest west init ~/embedded/sdk/zephyrprojectcd~/embedded/sdk/zephyrproject west update west zephyr-export pipinstall-rzephyr/scripts/requirements.txt

构建示例:

west build-bnucleo_f103rb samples/basic/blinky west flash

17. 嵌入式 Linux 应用开发

如果目标板跑 Linux,例如树莓派、全志、瑞芯微、NXP i.MX:

常见方式:

PC Linux 写代码 | 交叉编译 | scp 复制到开发板 | ssh 登录运行

常用工具:

sudoaptinstall-ysshsshpassrsync

复制:

scpapp root@192.168.1.100:/root/

登录:

sshroot@192.168.1.100

18. Linux 驱动开发基础工具

安装:

sudoaptinstall-ylinux-headers-$(uname-r)device-tree-compiler

内核模块常用命令:

makesudoinsmod hello.ko lsmoddmesg-wsudormmod hello

注意:驱动开发比单片机裸机更复杂,新手建议先学 C、Makefile、Linux 命令、指针、结构体。

19. 必备 Linux 命令

文件:

lscdpwdcpmvrmmkdirtree

搜索:

grep-R"HAL_GPIO".find.-name"*.c"rg"HAL_GPIO"

进程:

psauxkilltophtop

权限:

chmod+x script.shsudousermod-aGdialout$USER

Git:

gitstatusgitdiffgitadd.gitcommit-m"message"

20. 新手常见错误

错误原因解决
command not found没安装或 PATH 不对安装工具,检查 PATH
Permission denied没执行权限或 USB 权限chmod 或 udev/group
cannot open /dev/ttyUSB0串口权限不够加入 dialout
OpenOCD 连接失败cfg 错、接线错、权限错分别排查
undefined reference源文件没参与链接检查 CMake/Makefile
multiple definition重复定义全局变量头文件只声明 extern
hardfault指针、栈、时钟、中断问题用 GDB 查 fault 寄存器

21. 推荐学习路线

第 1 阶段:Linux 基础。

  • 会使用终端。
  • 会安装软件。
  • 会编辑文件。
  • 会用 Git。

第 2 阶段:C 语言基础。

  • 指针。
  • 结构体。
  • 位运算。
  • volatile。
  • static。
  • 链接和作用域。

第 3 阶段:裸机开发。

  • GPIO。
  • UART。
  • Timer。
  • PWM。
  • EXTI。
  • ADC。

第 4 阶段:工程化。

  • CMake。
  • 模块拆分。
  • 日志。
  • 单元测试。
  • Git 分支。

第 5 阶段:高级主题。

  • FreeRTOS。
  • DMA。
  • 低功耗。
  • Bootloader。
  • OTA。
  • 嵌入式 Linux。

22. 给 AI 的 Linux 嵌入式提示词

解释环境:

我是嵌入式新手,系统是 Ubuntu 24.04。 请检查这个工程需要哪些工具链。 请告诉我如何从零安装依赖、构建、烧录和打开串口。 回答要一步一步来,不要跳步。

查编译错误:

这是我的 Linux 嵌入式工程构建错误: 粘贴完整输出。 请先找第一条真正错误。 请区分是 C 语法错误、链接错误、工具链错误、权限错误还是路径错误。

学习代码:

请用小白能听懂的语言解释这个 STM32 main.c。 重点解释初始化顺序、while(1)、中断回调、USER CODE 区域。

23. 最后建议

Linux 嵌入式开发不要一开始追求“大而全”。最稳的顺序是:

LED 跑通 | 串口能打印 | 按键能输入 | 定时器能中断 | 工程能用 Git 保存 | 再上 RTOS / DMA / Bootloader

每一步都能编译、能下载、能看到现象,比复制一个复杂工程更重要。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/24 12:17:25

中国人工智能系列白皮书—具身智能(2026版)

具身智能作为人工智能领域的一个重要研究方向,专注于智能体通过物理本体与外界环境的互动来实现智能的理论与技术研究,涵盖环境感知、记忆推理、对话交互、自主学习、决策规划、动作执行等综合性技术,从而在真实物理世界中展示出类人的智能行…

作者头像 李华
网站建设 2026/4/24 12:16:30

Pixel Aurora Engine一文详解:开源AI绘图工具的像素化技术实现路径

Pixel Aurora Engine一文详解:开源AI绘图工具的像素化技术实现路径 1. 像素艺术与AI的完美结合 Pixel Aurora Engine(像素极光引擎)是一款将现代AI技术与复古像素艺术完美融合的开源绘图工具。它基于先进的扩散模型(Diffusion M…

作者头像 李华
网站建设 2026/4/24 12:14:19

从零到一:用Python与Qt Designer构建企业级桌面应用

1. 为什么选择PythonQt Designer开发企业级应用 第一次接手企业级桌面应用开发任务时,我盯着需求文档发呆了半小时。表单验证、多窗口跳转、数据可视化、报表导出...这些功能如果用纯代码实现,光是界面布局就要写上千行。直到同事推荐了Qt Designer这个可…

作者头像 李华
网站建设 2026/4/24 12:09:43

用Obsidian拆解管理信息系统:黄梯云第七版前五章知识图谱构建实战

用Obsidian拆解管理信息系统:黄梯云第七版前五章知识图谱构建实战 翻开《管理信息系统》教材时,你是否也曾在密密麻麻的文字中迷失重点?作为信息管理与信息系统专业的核心课程,黄梯云教授的这本经典教材体系庞大、概念交织&#x…

作者头像 李华