第1章
MAVLink协议概述
MAVLink的起源、应用场景(无人机、机器人、IoT)、协议版本对比(v1.0 vs v2.0)
起源v1.0/v2.0
第2章
MAVLink协议栈架构
消息定义、序列化/反序列化、校验机制(CRC)、心跳包机制
架构CRC心跳
第3章
开发环境搭建
交叉编译工具链(ARM GCC)、CMake构建系统、串口调试工具(CuteCom、screen)
ARM GCCCMakeCuteCom
第4章
源码获取与结构分析
从GitHub获取官方C库(mavlink/c_library_v2)、目录结构解析、关键文件说明
c_library_v2目录
第5章
MAVLink消息定义语言(XML)
XML语法规则、消息ID分配、枚举类型定义、自定义消息创建
XML消息ID枚举
第6章
代码生成器(mavgen)使用
Python脚本mavgen.py、命令行参数、生成C/Python代码
mavgenPython代码生成
第7章
消息序列化与反序列化
mavlink_msg_xxx_encode/decode函数、缓冲区管理、字节序处理
encodedecode字节序
第8章
CRC校验机制
CRC_EXTRA原理、X.25 CRC算法、校验失败处理策略
CRC_EXTRAX.25
第9章
心跳包机制
HEARTBEAT消息结构、系统类型与状态定义、超时检测逻辑
HEARTBEAT超时
第10章
消息收发流程
发送队列管理、接收状态机、丢包重传策略
状态机重传
第11章
协议栈裁剪原理
消息集选择、XML文件过滤、宏定义控制(MAVLINK_USE_CONVENIENCE_FUNCTIONS)
裁剪宏定义
第12章
裁剪工具与脚本
Python裁剪脚本编写、XML解析与过滤、自动生成最小化消息集
Python脚本XML过滤
第13章
内存优化
静态内存分配 vs 动态内存分配、消息缓冲区大小计算、栈空间优化
静态/动态栈优化
第14章
性能优化
减少拷贝次数、零拷贝技术、DMA传输配合
零拷贝DMA
第15章
多线程安全
互斥锁保护、消息队列设计、中断上下文处理
互斥锁中断
第16章
移植到FreeRTOS
任务创建、消息队列API封装、定时器服务
FreeRTOS消息队列
第17章
移植到裸机系统
轮询模式、中断驱动模式、时间片管理
裸机轮询中断
第18章
串口驱动适配
Linux串口、STM32 HAL库、自定义物理层接口
LinuxSTM32HAL
第19章
UDP/TCP网络传输
MAVLink over UDP、MAVLink over TCP、多客户端支持
UDPTCP多客户端
第20章
MAVLink路由协议
消息转发、路由表维护、网关设计
路由网关
第21章
参数协议(PARAM)
参数读写、参数列表同步、参数变更通知
PARAM同步
第22章
命令协议(COMMAND)
命令确认机制、命令超时、命令队列
COMMAND超时
第23章
任务协议(MISSION)
航点上传/下载、任务进度报告、任务重试机制
MISSION航点
第24章
扩展协议(EXTENDED)
自定义消息注册、厂商ID分配、向后兼容性
自定义厂商ID
第25章
日志与调试
消息日志记录、调试消息(STATUSTEXT)、性能分析
日志STATUSTEXT
第26章
安全机制
消息认证(MAVLink 2.0签名)、加密传输、防重放攻击
签名加密防重放
第27章
测试与验证
单元测试框架(CUnit)、模拟器测试、硬件在环测试(HITL)
CUnitHITL
第28章
常见问题排查
CRC错误、消息丢失、内存泄漏、死锁分析
CRC错误内存泄漏
第29章
实战案例1:STM32F4飞控
将MAVLink移植到STM32F4飞控,实现基本通信
STM32F4飞控
第30章
实战案例2:地面站通信系统
基于MAVLink的无人机地面站通信系统设计与实现
地面站无人机