NuttX 系统化入门宝典
30 章 · 从零到实战
⚡ 嵌入式工程师必修
01
NuttX概述与生态
NuttX是什么?历史、设计哲学、与FreeRTOS/Linux对比,物联网与嵌入式应用场景。
02
开发环境搭建(上)
Ubuntu搭建NuttX编译环境:工具链安装、源码下载、kconfig-frontends安装。
03
开发环境搭建(下)
Windows WSL2搭建环境,串口驱动、烧录工具(OpenOCD),验证Hello World。
04
NuttX源码结构解析
深度剖析顶层目录(arch、boards、drivers、fs、sched等),理解各目录作用。
05
Kconfig与构建系统
掌握配置系统,使用menuconfig进行内核裁剪、驱动选择与功能配置。
06
NuttX启动流程分析
从CPU复位到main函数:汇编启动、板级初始化、OS初始化详细分析。
07
任务管理基础
任务(Task)、线程(pthread)、工作队列(Work Queue)的概念、创建与销毁。
08
任务调度与优先级
深入调度器:优先级调度、轮转调度、设置任务优先级和调度策略。
09
同步与互斥(上)
信号量深度解析:计数信号量、二值信号量,中断/任务间使用。
10
同步与互斥(下)
互斥锁(Mutex)、条件变量、自旋锁(Spinlock)原理与实战。
11
消息队列与邮箱
消息队列(MQ)和邮箱(Mailbox)机制,实现任务间高效数据传递。
12
中断管理
中断子系统:中断注册、处理流程、中断下半部(Bottom Half)实现。
13
时钟与定时器
系统滴答、硬件定时器、POSIX定时器(timer_create)、看门狗使用。
14
内存管理(上)
内存布局、mm_heap、kmalloc、kmm_zalloc接口及内存碎片问题。
15
内存管理(下)
用户/内核空间隔离,MPU/MMU配置,共享内存(Shm)实现机制。
16
文件系统(上)
虚拟文件系统(VFS)架构,挂载ROMFS、TMPFS、FATFS等。
17
文件系统(下)
设备文件(/dev)、伪文件系统(ProcFS)、编写简单文件系统驱动。
18
设备驱动模型
驱动框架:字符设备、块设备、网络设备注册与操作接口。
19
GPIO与LED驱动实战
从零编写GPIO驱动,控制LED闪烁,注册到NuttX设备树。
20
UART串口驱动
深入串口驱动架构:中断驱动、DMA模式,实现自定义串口驱动。
21
SPI与I2C总线驱动
掌握SPI/I2C子系统,编写外设驱动(传感器、显示屏)。
22
网络协议栈(上)
网络架构、lwIP集成、Socket API、TCP/UDP通信示例。
23
网络协议栈(下)
6LoWPAN、BLE(HCI)、以太网驱动配置与调试。
24
USB设备与主机栈
USB设备栈(CDC ACM、MSC)和主机栈(HID、Mass Storage)配置使用。
25
电源管理
电源管理框架(PM):空闲模式、睡眠模式、低功耗策略实现。
26
C++与NuttX
在NuttX中使用C++:new/delete、STL支持、C++异常处理注意事项。
27
NuttX Shell与调试
NuttShell(nsh)配置扩展,系统调试命令(ps,free,top)及GDB调试。
28
性能优化与Profiling
分析CPU占用、内存使用、中断延迟,进行针对性优化。
29
安全与固件更新
安全启动、TLS/SSL集成(mbedTLS)、OTA固件升级方案。
30
综合实战项目
基于STM32/ESP32:传感器采集、网络通信、本地存储、远程控制物联网节点。