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

BetaFlight统一硬件资源简单配置修改相关推荐

  1. android的一些简单配置修改(2)

    一.连接wifi提示网络受限,但是可以上网 连接后的log: D NetworkMonitor/100: PROBE_DNS www.google.com 107ms OK 104.244.46.85 ...

  2. BetaFlight统一硬件配置文件研读之set命令

    BetaFlight统一硬件配置文件研读之set命令 1. 源由 2. 代码分析 3. 实例分析 4. 配置情况 4.1 set 4.2 set parameter_name 4.3 set para ...

  3. BetaFlight统一硬件配置文件研读之resource命令

    BetaFlight统一硬件配置文件研读之resource命令 1. 源由 2. 代码分析 3. 实例分析 4. 配置情况 4.1 resource 4.2 resource show 5. 参考资料 ...

  4. BetaFlight统一硬件配置文件研读之feature命令

    BetaFlight统一硬件配置文件研读之feature命令 1. 源由 2. 代码分析 3. 实例分析 4. 配置情况 4.1 feature 4.2 feature list 4.3 featur ...

  5. putty窗口标题修改、字体颜色修改等简单配置以及putty多开工具mtputty的使用

    putty窗口标题修改 设置Window->Behaviour->Window title: 在Terminal->Features中一定要勾选Disable remote-cont ...

  6. ftp修改服务器配置,ftp服务器的简单配置

    ftp的简单配置 所需环境:redhat enterprise 5.4 1.把防火墙和selinux关了,以免影响后面的试验. #iptables -F #setenforce 0 2.安装vsftp ...

  7. oracle修改filesystem,Oracledatabasefilesystem(DBFS)简单配置文档

    Oracle database filesystem (DBFS) 简单配置文档 本机环境:11.2.0.1 1. download fuse package on website download ...

  8. 两计算机配置ip地址,简单配置ip地址

    原标题:简单配置ip地址 IP地址的重要性在前面章节中已经讲解了,那么现在这种简单局域网是否也需要IP地址才能实现相互访问尼?当然需要,除此以外,还应注意对计算机名的配置,而且要养成这样的配置习惯,因 ...

  9. python环境的搭建以及pycharm的安装和简单配置

    python环境的搭建以及pycharm的安装和简单配置 Python的环境搭建 PIP工具的使用 pip介绍 pip的使用 查看pip版本 普通安装 pip升级 指定版本安装 卸载已安装的库 列出已 ...

最新文章

  1. linux6/7 下载、安装、配置JDK
  2. [CareerCup] 4.4 Create List at Each Depth of Binary Tree 二叉树的各层创建链表
  3. Intel Sandy Bridge/Ivy Bridge架构/微架构/流水线 (3) - 流水线概述
  4. 动态链接库的隐式动态链接和显示动态链接
  5. jquery对标签属性操作
  6. P3309 [SDOI2014]向量集
  7. Chipmunk2D中文手册
  8. 100个python算法超详细讲解:要发就发
  9. 【机器学习】逻辑回归(LogisticRegression)分类鸢尾花
  10. 从容器中获取宿主机IP地址
  11. 《Python编程从入门到实践 第二版》第八章练习
  12. app界面设计规范及缺陷
  13. 协会分享 | 如何推动EOS区块链技术在高校的落地
  14. 路由巧设置 局域网轻松限制BT下载
  15. 浅尝Pytorch自动混合精度AMP
  16. MATLAB 线性规划
  17. C# DataGridView控件选中行获取其值
  18. vs2008编译QT开源项目--太阳神三国杀源码分析(五) 分牌及出牌
  19. 教育最大的失败,是普通家庭富养孩子
  20. Python学习记录 面向对象

热门文章

  1. juce Justification 分析
  2. 小学信息说课稿范文认识计算机,小学信息技术说课稿《认识计算机》-20210410201013.docx-原创力文档...
  3. SpringBoot 动态配置邮箱发件人
  4. c语言怎么计算bmp图像大小,C语言如何取出一张256色位的bmp图像的某个像素的颜色...
  5. 字节跳动面试题(编程题)—平衡二叉树(思路+代码)—力扣110
  6. get请求报错400状态码
  7. 无法发帖或者回复? 点这里参看如何发帖和回帖
  8. 腾讯云CDN的应用场景和使用步骤
  9. Lattice CrossLink NX系列FPGA使用分享
  10. Maya 2013 语言切换