BetaFlight统一硬件资源简单配置修改

2023-05-16

BetaFlight统一硬件资源简单配置修改

  • 1. 源由
  • 2. 资源配置注意事项
  • 3. 资源配置文件修改验证步骤
    • Step 1:确认硬件修改内容
    • Step 2:资源配置文件修改
    • Step 3:验证配置文件
    • Step 4:提交资源配置文件PR
  • 4. 参考资料

就笔者接触嵌入式设计以来,简单的来说可以分为几个阶段:

  1. MCS51汇编语言应用编程
  2. 单片机C语言应用编程
  3. 基于微系统C语言应用编程
  4. 基于(微、宏、混合)内核C语言驱动和应用编程
  5. 基于Unix like(Linux)应用系统的Python/Scripts/OpenCV/QT/C/C++/Java等等应用、算法编程
    1. 2)通常是面向过程的开发,更多专注于业务的过程化设计;
    1. 4)系统架构设计上已经面向对象,OS设计层面已经面向对象(驱动),模块化(内存管理,任务管理等)设计;
    1. 已经非常上层的应用编程,注重业务,算法,逻辑;计算机科学学科在这方面有大量内容,百花齐放百家争鸣;

这里说了这么多阶段性的东西,整体上还是想简单捋一下,从嵌入式的角度,如何将业务层层设计,并最终一步一步的落实到物理世界的。

很多问题的分析不仅仅要从局部入手,更要从全局,甚至要有长期布局的思路。

这里就不展开,否则话太多,离题了。通常来说,从设计角度看:

  1. 紧耦合:高复杂度;强依赖性;全局性资源;占用资源最少;
  2. 松耦合:模块化接口;弱依赖性;资源独立;占用资源一般;
  3. 不耦合:高度抽象模块;设计独立;接口标准;占用资源一般;

1. 源由

BetaFlight的代码最初clone过来时,也是继承了嵌入式代码一贯的target目标板设计思路;也就是说,针对每个板子有一份对应的目录,有对应的target代码,比如:芯片、板子初始化等代码。

但是从实践的角度看,会存在以下一些问题:

  1. 硬件目标板需要通过代码适配;
  2. 硬件制造厂家不一定具备软件开发人员(业务上决定);
  3. 硬件设计人员不接触或者非常少接触代码,不具备或者不习惯软件开发环境和技能;
  4. 硬件制造厂家很多,而软件代码开发维护人员数量有限;
  5. 为保证开发团队对代码设计全局把控和掌控能力;并要求设计简洁且易于维护,需要减少由于操作异常而投入的额外维护工作量;
  6. 事实上硬件厂家也已经加入到开源社区(虽然他们的硬件设计资料并不一定开源,但是需要从某种角度与开源软件一起携手并进);

鉴于上面诸多因素(有些可能我也没有概括全,也许说的也不够到位),BetaFlight开发团队与2019年开始引入硬件资源描述配置文件与软件代码进行抽象和解耦,详见4.0.0发布信息。

在这里插入图片描述
注:鉴于目前BetaFlight的设计都是基于STM32系列的MCU,所以从工程框架的角度来看,并没有支持其他MCU的工程结构目录,比如:AT32(雅特力芯片)。鉴于国际市场芯片短缺问题,开发团队确实已经开始类似准备工作。
【1】 Source file re-arrangement for better separation of MCU types #12268
【2】AT32 development, introduction of AT32F435 target #12247
【3】AT32F435/7 Libraries (#12158) #12263

鉴于软件代码成熟度的提高,其应用范围日益扩大,当前SITL/STM32可能并不能完全满足要求,后续对硬件仿真HITL(Hardware in The Loop) simulation #12212的支持也需要纳入考虑,以便更广泛的应用。

通常情况下,板子之间的差异性不是太大,可以通过现有板子配置文件进行修改。这里就经常使用到的统一硬件资源文件修改步骤做下整理和归纳,以便更好,更快的根据这个checklist进行工作。

2. 资源配置注意事项

  1. 飞行控制器制造商设计指南
  2. 新增或更新硬件资源配置文件方法

注1:截止目前BF 4.4版本,所有BetaFlight现有STM32板子已经全部支持统一硬件资源抽象(如下图所示,BetaFlight飞控代码仅与MCU型号挂钩,而硬件设计被解耦到unified-targets硬件资源配置文件中。

注2:具体内容大家就看链接,不做翻译了。

3. 资源配置文件修改验证步骤

目前,BetaFlight上有大量的硬件设计厂家,以及各种STM32的飞控板子,因此通常来说新设计的硬件也是在原有基础上进行修改。

这里基于这种思路我们整理下资源配置文件修改的步骤,关于PR合入请详细阅读新增或更新硬件资源配置文件方法里面关于“如何与开源BF开发人员合作事宜”。

Step 1:确认硬件修改内容

与硬件设计人员确认硬件上修改的内容,获取相应格式文档交付件。

  1. PDF原理图
  2. 硬件改动说明(芯片改动,pin脚改动,IMU方向等)
  3. 参考飞控型号、规格书

Step 2:资源配置文件修改

根据Step 1的交付件和 新增或更新硬件资源配置文件方法修改资源配置文件

  1. 确认当前产品型号、规格
  2. 确认当前产品型号需要兼容的规格(比如:后续硬件可能的改动)
  3. 找到参考飞控资源配置文件,针对改动修改配置文件

Step 3:验证配置文件

根据Step 2的交付件和测试样机进行功能验证

  1. 当前产品飞控内部芯片功能验证
  2. 当前产品飞控引出pin脚功能验证
  3. 当前产品飞控飞行性能测试验证
    提供最终测试结果:若测试不合格返回Step 1 or Step 2;

Step 4:提交资源配置文件PR

根据 新增或更新硬件资源配置文件方法提交PR

4. 参考资料

【1】BetaFlight开源代码框架简介
【2】Betaflight硬件产商指南
【3】Betaflight 4.0.0 Release Note

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

BetaFlight统一硬件资源简单配置修改 的相关文章

随机推荐

  • iNavFlight之MSP DJI协议天空端请求报文

    iNavFlight之MSP DJI协议天空端请求报文 1 报文格式 请求 2 报文标志 flag 3 报文命令 cmd 4 参考资料 MSP DJI协议是用于DJI天空端与飞控端之间的通信协议 xff0c 其工作模式符合C S经典设计 这
  • iNavFlight之MSP DJI协议飞控端请求应答

    iNavFlight之MSP DJI协议飞控端请求应答 1 报文格式2 报文标志 flag 3 报文命令 cmd 4 请求应答 amp 反馈报文4 1 DJI MSP API VERSION4 2 DJI MSP FC VARIANT4 3
  • 大疆Tello UDP控制协议接口

    大疆Tello UDP控制协议接口 1 设计架构2 UDP报文格式2 1 控制报文2 2 查询报文2 3 状态报文 3 命令集3 1 控制报文 控制命令3 2 控制报文 设置命令3 3 查询报文 读取命令 4 状态报文 这里介绍了大疆Tel
  • 蓝牙无线自制串口模块连接穿越机配置工具

    蓝牙无线自制串口模块连接穿越机配置工具 1 目的2 验证环境3 BLE SPP验证4 BT SPP验证5 参考资料6 补充资料 windows10配置全过程截图6 1 添加设备 搜索蓝牙串口设备6 2 连接 选中SnapAirUnit设备6
  • 传感模块:MATEKSYS Optical Flow & LIDAR 3901-L0X

    传感模块 xff1a MATEKSYS Optical Flow amp LIDAR 3901 L0X 1 模块介绍2 规格参数3 使用方法Step1 接线方式Step2 安装方式Step3 使用范围 4 存在问题 思考 4 1 MATEK
  • iNavFlight之MSP v2 Sensor报文格式

    iNavFlight之MSP v2 Sensor报文格式 1 MSP v2传感报文介绍2 MSP v2协议格式3 MSP v2传感代码流程4 MSP v2 传感器4 1 光流传感报文 MSP2 SENSOR RANGEFINDER4 2 测
  • 自制肥鲨HDO2电源降压延长线,支持3S~6S动力电池

    自制肥鲨HDO2电源降压延长线 xff0c 支持3S 6S动力电池 1 问题源由2 破题思路2 1 10元大钞搞定2 2 两个毛爷爷搞定 3 解决方案4 最终延长线产出4 1 裸照4 2 成品 5 花絮6 参考资料 1 问题源由 源由 xf
  • java中for、foreach、stream性能比较

    在开发中循环遍历一个数组经常会用到 xff0c jdk8推出了一些新特性 xff0c 对循环做了比较 xff0c 通过代码亲测 xff0c 记录一下 xff01 1 for循环 public static void main String
  • 自制肥鲨HDO2电源升压延长线

    自制肥鲨HDO2电源升压延长线 1 问题源由2 解决方案3 材料准备4 最终延长线产出4 1 裸照4 2 成品 5 参考资料 1 问题源由 之前我们介绍了 自制肥鲨HDO2电源降压延长线 xff0c 支持3S 6S动力电池 xff0c 主要
  • iNavFlight之RC遥控MSP协议

    iNavFlight之RC遥控MSP协议 1 RC摇杆MSP协议2 地面站配置 amp MSP遥控器2 1 iNav地面站 配置2 2 iNav地面站 MSP遥控器 3 RC摇杆总体逻辑框架3 1 摇杆信息获取3 2 摇杆信息处理3 3 摇
  • iNavFlight之RC遥控CRSF协议

    iNavFlight之RC遥控CRSF协议 1 遥控器电传框架设计1 1 场景分析1 2 逻辑框架1 2 1 电传信息获取1 2 2 电传信息处理1 2 3 电传初始化 1 3 模块化设计 2 CRSF电传报文2 1 CRSF电传报文格式2
  • iNavFlight之电传MAVLink协议

    iNavFlight之电传MAVLink协议 1 业务逻辑框架2 MAVLink电传报文2 1 MAVLink电传报文格式2 2 iNav支持地面站报文 接收 2 3 iNav支持飞控报文 发送 3 MAVLink报文处理4 参考资料 本章
  • PX4模块设计之四十七:mavlink模块

    PX4模块设计之四十七 xff1a mavlink模块 1 mavlink模块简介2 模块入口函数mavlink main3 mavlink模块重要函数3 1 Mavlink start3 2 Mavlink task main3 3 Ma
  • SVN工程转Git工程&Github托管

    SVN工程转Git工程 amp Github托管 1 介绍2 autoAudioTest之SVN转Github步骤Step 1 工作环境 ubuntu Step 2 安装升级必要软件Step 3 转换脚本Step 4 检查软件运行环境Ste
  • iNav飞控AOCODARC-F7MINI固件编译

    iNav飞控AOCODARC F7MINI固件编译 1 编译目标 xff08 AOCODARC F7MINI xff09 2 编译步骤Step 1 软件配置环境准备Step 2 获取开源代码Step 3 构建命令介绍Step 4 厂家目标板
  • BetaFlight飞控AOCODARC-F7MINI固件编译

    BetaFlight飞控AOCODARC F7MINI固件编译 1 编译目标 xff08 AOCODARC F7MINI xff09 2 编译步骤Step 1 软件配置环境准备Step 2 获取开源代码Step 3 构建命令介绍Step 4
  • Google AIY Vision Kit安装及国内配置

    Google AIY Vision Kit安装及国内配置 1 AIY Vision Kit组装环节Step 1 xff1a 收集其他附件选择1 xff1a 使用AIY项目应用程序选择2 xff1a 使用显示器 鼠标和键盘 Step 2 xf
  • WiFi monitor模式的配置和运行检查(Ubuntu系统)

    WiFi monitor模式的配置和运行检查 1 WiFi monitor模式介绍2 WiFi monitor模式查看Step1 xff1a 确保计算机上有安装硬件WiFi无线网卡Step2 xff1a 安装必要的工具Step 3 xff1
  • github上的源码编译成.hpi插件

    目录 1 xff0c vim安装 安装 Maven 编译源码生成 hpi 2 xff0c windos 安装idea 安装maven idea设置maven 将github上的源码拉进并编译 成功 近期做jenkins监控github xf
  • BetaFlight统一硬件资源简单配置修改

    BetaFlight统一硬件资源简单配置修改 1 源由2 资源配置注意事项3 资源配置文件修改验证步骤Step 1 xff1a 确认硬件修改内容Step 2 xff1a 资源配置文件修改Step 3 xff1a 验证配置文件Step 4 x