从零搭建NuttX开发环境实战
📚 30章完整目录
v1.0
01
NuttX是什么?
嵌入式实时操作系统简介 · 起源与特点 · 对比FreeRTOS/Zephyr · 应用领域
RTOS
对比
起源
02
开发环境概览
工具链概览 · 主机系统要求(Linux/Windows/WSL) · 整体搭建流程
工具链
系统要求
流程
03
安装Linux虚拟机或WSL
为什么推荐Linux · VirtualBox/VMware · Ubuntu 22.04 · WSL2配置
虚拟机
WSL2
Ubuntu
04
基础工具安装
更新包管理器 · Git · vim/nano · curl/wget
Git
编辑器
网络工具
05
安装必要的编译工具链
GCC/G++/make/cmake · bison/flex · libncurses-dev
GCC
cmake
依赖库
06
安装Kconfig-frontends
Kconfig概念 · 为何需要 · 源码编译安装 · 验证
Kconfig
menuconfig
编译
07
获取NuttX源码
GitHub克隆主仓库 · Apps仓库 · 目录结构(arch/boards/drivers)
源码
Git
目录结构
08
配置工具链(ARM)
下载gcc-arm-none-eabi · 解压环境变量 · 验证版本
ARM
GCC
环境变量
09
配置工具链(RISC-V)
下载RISC-V GCC · 解压安装 · 环境变量 · 验证
RISC-V
工具链
配置
10
配置工具链(Xtensa)
ESP32系列Xtensa · 下载安装 · 环境变量
Xtensa
ESP32
工具链
11
第一个目标板配置
选择目标板(STM32F4Discovery) · menuconfig初始配置 · 保存
STM32
menuconfig
目标板
12
menuconfig深度解析
菜单导航 · 搜索功能 · 常用配置项(内存/调度/驱动)
menuconfig
配置
技巧
13
编译NuttX内核
执行make · 理解编译输出 · 解决常见错误(头文件缺失)
编译
make
排错
14
编译NuttX Apps
Apps目录结构 · 配置组件 · 编译用户态应用程序
Apps
用户态
编译
15
生成与烧录固件
.bin/.hex文件 · OpenOCD烧录 · ST-Link烧录
固件
OpenOCD
ST-Link
16
串口终端配置
安装minicom/picocom · 配置波特率数据位 · 连接目标板
串口
minicom
终端
17
NuttShell(NSH)入门
启动NSH · 常用命令(ls/cd/cat/echo) · 编写运行C程序
NSH
命令
C编程
18
调试环境搭建
安装GDB · OpenOCD+GDB连接 · 断点调试
GDB
OpenOCD
调试
19
使用VSCode进行开发
安装VSCode · Remote-SSH · C/C++插件 · 集成编译调试
VSCode
Remote
插件
20
使用QEMU模拟运行
安装QEMU · 配置NuttX for QEMU(qemu-armv7a) · 运行
QEMU
模拟
armv7a
21
添加自定义BSP
复制现有BSP · 修改Kconfig/Make.defs · 配置引脚复用
BSP
Kconfig
引脚
22
编写第一个设备驱动
驱动框架 · 简单GPIO驱动 · 注册驱动到系统
驱动
GPIO
注册
23
文件系统配置
配置ROMFS · PROCFS · 挂载与测试文件系统
ROMFS
PROCFS
挂载
24
网络协议栈配置
配置TCP/IP栈 · 网络设备驱动 · ping测试
TCP/IP
网络
ping
25
USB协议栈配置
USB设备驱动 · USB主机驱动 · 测试键盘/鼠标
USB
主机
设备
26
图形与显示配置
LVGL图形库 · LCD驱动 · 运行图形示例
LVGL
LCD
图形
27
音频框架配置
音频驱动 · 音频编解码器 · 播放音频文件
音频
编解码
播放
28
多任务与同步机制
创建任务 · 信号量 · 消息队列 · 互斥锁
多任务
信号量
互斥
29
性能优化与内存分析
分析RAM/ROM · 优化任务栈 · 性能分析工具
性能
内存
优化
30
综合实战:智能传感器节点
需求分析 · 硬件选型 · 系统配置 · 驱动开发 · 应用编写 · 调试验证
实战
传感器
综合