本文档涵盖了 Betaflight 的核心系统设计,包括主要入口点、初始化流程以及协调飞行控制系统的关键架构组件。
目的和范围
Betaflight系统架构的核心是一个实时飞行控制回路,该回路处理传感器输入、应用控制算法并生成电机输出。该系统基于一个协作式任务调度器构建,该调度器协调包括配置管理、传感器处理、通信协议和用户反馈机制在内的各种子系统。
主入口点和系统初始化
Betaflight固件遵循标准的嵌入式系统模式,先进行初始化,然后进入无限循环的主程序。
系统入口点main()执行目标特定的参数解析,调用init()系统初始化,然后进入run()包含主调度器循环的函数。
核心系统架构
Betaflight 架构由多个相互连接的子系统组成,这些子系统协同工作以提供飞行控制功能。
调度器协调时间关键型任务的执行,而配置系统为所有子系统提供持久存储和运行时参数管理。
配置管理架构
配置系统采用参数组 (PG) 框架来管理所有子系统的设置。这提供了类型安全的配置,并具有自动验证和 EEPROM 持久化功能。
该systemConfig_t结构包含核心系统参数,包括活动配置文件索引、调试模式和板卡标识。配置文件切换允许在运行时更改配置,而无需完全重新初始化系统。
电机混控器架构
电机混控器是关键部件,它将飞行控制指令转换为各个电机的输出信号。它支持多种混控器类型和飞机配置。

mixerMode_e该混音器通过枚举和不同的混音算法支持各种飞机类型mixerType_e。该mixTable()函数由调度器调用,并协调整个混音过程。
子系统通信与协调
Betaflight 采用协作调度模型,其中子系统通过共享全局状态和函数调用进行通信,而不是通过消息传递。

蜂鸣器系统体现了跨子系统通信,其中飞行控制事件通过beeper()特定函数触发音频反馈beeperMode_e。调度器负责时间协调和任务执行控制。
系统状态管理
该系统维护各种状态标志和模式,以协调各个子系统的行为。关键状态管理包括启动状态、飞行模式和错误状态。
配置状态跟踪系统是否已正确配置,以及设置更改是否需要持久化或重启系统。蜂鸣器系统维护着自己的音频序列播放状态机。
1056

被折叠的 条评论
为什么被折叠?



