经过接近5个月的努力,已经将开源飞控 betaflight 4.3.0 -rc2 从stm32 移植到 雅特力at32F435/7,用开发板对目标功能验证通过, 协同另外一个朋友(N.T.Jia) 正在制作原型飞控板进行试飞验证。趁这段时间开一个坑,总结一下怎么把bf 移植到非STM32 系列的MCU上,以及遇到了哪些坑、怎么进行优化,以及后继如何对bf 固件进行定制等话题。
笔记大纲:
第一章: 移植的准备工作
MCU 的选型与IO 性能评估
bf 的Makefile 体系与移植
编译环境的搭建
第二章:bf 代码基础移植工作
时钟树:MCU 的总动脉
RCC : RCC 与CRM 总闸开关
GPIO :一切的基础
Step1 验证:点亮一盏灯
DMA : 内存搬运工
TIMER : 计时器基础的PWM输出
EEPROM :Flash 模拟EEprom 以及配置信息存储
第二次验证: 点亮RGB LED
3.第三章: bf 数据总线、通讯部分移植
bus 、SPI、I2C
Serial、USART、4Way Esc
Serial USB VCP
综合验证:地面站通信、点亮陀螺仪、气压计、磁力计、接收机、GPS
4. 第四章 BF 与ESC 通信部分移植
电调常见通信方式: PWM、Dshot、双向Dshot、Proshot
PWM 移植与验证(oneshot 、Multishot)
硬件定时器实现Dshot (ProShot) 原理、移植、与验证
Dshot-bitBang 原理、移植、与验证
ESC Bhelis-32 验证
5. 第五章 : 系统启动优化与性能优化
重新回到启动文件
内存大小与ZW区调整
内存RAM 分区调整
6. 第六章:雅特力的硬件局限性
TIMER 与DMA 中断问题与解决思路
DMA 性能瓶颈问题与解决思路
7. 第七章: 原型飞控板的设计与制作
8. 第八章: 测试、试飞 与调整优化。
9. 第九章 : 后记