请选择 进入手机版 | 继续访问电脑版

发现者模型阵地

 找回密码
 立即注册
查看: 11191|回复: 0
收起左侧

如何自定义Betaflight软件内容并编译成烧码档

[复制链接]

18

主题

19

帖子

104

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
104
发表于 2019-3-8 17:26:18 | 显示全部楼层 |阅读模式
本文转自忠达模型公众号(ID:ESKY-DTS-GWYBetaflight瘦身大招 – 打造专属于自己个人订制的飞控固件版本[color=rgba(0, 0, 0, 0.298)]DTS GT200穿越机 [url=]忠达模型ZONDAHOBBY[/url] [color=rgba(0, 0, 0, 0.298)]2018-12-15
作为一个飞行爱好者,小编一直对飞控和固件很好奇。偶然听攻城狮提到开源官网有介绍,果然看到好东西,于是翻译过来,与众飞友分享。
温馨提醒:本文涉嫌技术讲解,略显枯燥,可先观看视频放松一下.

进入主题
控的计算能力和存储空间都是有限的。开发者需要综合考虑大部分用户的实际情况后,决定哪些功能需要启用,哪些功能可以停用。

例如,官方公开发布给用户的固件版本,一般都包含了支持很多品牌遥控器和接收机的功能。但是对于具体用户,一般会习惯使用一个品牌的遥控器和接收机。官方因为针对大多数人群,所以需要这样做。但这么多品牌的不同协议和处理机制,是需要占用内存空间的,如果屏蔽掉具体某一个人不需要的品牌协议,则省出来的空间,可以用来运行其他功能。

本文简单介绍如何订制自己专属的Betaflight版本,如何对不同功能进行启用或者停用,特别是针对老飞控(内存空间不够的情况)非常有用。

请注意并意识到,自己打造专属版本的固件,需要用到一些第三方软件,并且该操作过程客观存在一些不确定因素,可能会导致bug的产生,而这些bug在官方公开发行的版本中是不存在的。因此,你必须为自己的行为负责。

要求具备的技能:生成自己的固件版本

本文是给有一定编程背景知识和技巧,并且能够独立编译生成固件的朋友看的。关于此项要求的更多信息,请参考Betaflight开发团队的开发者说明。

如果你已经能够成功编译你自己的固件,那么你可以继续按照本文所述,进入下一部分内容的学习和操作。

固件编译完成后,编译结果会显示以下概览性信息:
'text+ data'这两项数值之和,代表编译后固件占用的Flash空间大小是多少。
'data+ bss'这两项数值之和,代表编译后固件使用了多少RAM空间(静态的内存空间)
译注:RAM芯片断电后数据会丢失,Flash芯片断电后数据不会丢失,但是RAM的读取数据速度远远快于Flash芯片。
建议将自定义版本大小控制在小于未修改版本(官方发行版)的大小。

Betaflight开发团队指定激活或不激活飞控的功能的第一个文件是target/ common_fc_pre.h
译注:在\src\main\target路径下。

根据飞控内存的大小,或者其他限制条件的要求,可以在这个文件中,对指定的功能进行启用或者停用。

我们第一个感兴趣的地方,就是该文件内容中,针对所有飞控都指定激活的功能部分。官方版本摘录举例如下:
上面这些代码,不管是什么版本的飞控,官方版都给启用了。
在打造你个人专属的版本时,可以根据自己使用的接收机制式(协议),关闭其他你不用到的协议。

接下来我们感兴趣的,是根据Flash大小(够不够64M),官方版本决定功能启用与否的部分了,例如下面:
然后如果Flash大于128M,则官方版本会启用以下功能
这个文件中(指《common_fc_pre.h》)另一个有意思,也是我们感兴趣的部分,就是依据飞控的容量,或者说主芯片的功能模块是否具备,来决定禁用或启用的功能了。例如:
如果飞控主芯片不具备FPU(浮点计算单元)功能模块(例如,F1飞控),你最多只能使用接收机的6个辅助通道。
译注:加上两个遥杆的4个通道,总共10通道。也就是说,即使遥控系统有100个通道,也只有10个通道有效。
因此,仔细阅读这个文件,你就可以知道,哪些功能对你有用,哪些没用,这样,你就可以通过启用或者停用,订制出自己专属的版本了。
注意:最好不要直接在源文件中修改。阅读源文件的作用,是让你了解并搞清楚你需要启用哪些功能,需要停用哪些功能。要改的时候,建议对整个项目重新复制一份副本,在副本中进行修改。
不同飞控版本,都有自己的功能定义文件
仔细研究Betaflight的目录结构,会发现,每个飞控都有一个专用的文件来指定该飞控启用或禁用的功能。被停用的功能,可能是因空间限制而被禁用,也可能是因为主芯片的运算能力有限或该功能存在bug而禁用。
所以,启用某项功能的话,使用者需自行承担由此导致的风险。

这个专用文件的路径是:target文件夹/[飞控名文件夹]/target.h
在编译时,编译系统是先加载target/common_fc_pre.h文件,然后再加载这个target文件夹/[飞控名文件夹]/target.h文件。因此,对此文件(《target.h》)的任何修改,都会覆盖掉默认设置。秘密就在这里,订制个人专属的版本,就是要修改这个文件。
修改的第一步,就是要在《common_fc_pre.h文件中,对准备停用的功能,利用#undef取消已经定义的宏(即取消宏定义)。
例如,对于NAZE32飞控,如果我们使用的是串行接口的接收机,比如小编现在使用的接收机是GWY家的SBUS制式接收机,同时小编的飞机上没有用到LED灯,那么我可以在《common_fc_pre.h》中,利用“#undef”对其他用不到的功能进行取消宏定义,如下操作:

#undef USE_PPM
#undef USE_PWM
#undef USE_SERIALRX_CRSF   
#undef USE_SERIALRX_IBUS
#define USE_SERIALRX_SBUS
#undef USE_SERIALRX_SPEKTRUM  
#undef USE_SERIALRX_SUMD  
#undef USE_SERIALRX_SUMH  
#undef USE_SERIALRX_XBUS  
#undef LED_STRIP
#undef TELEMETRY_FRSKY
#undef TELEMETRY_HOTT
#undef TELEMETRY_LTM
#undef TELEMETRY_SMARTPORT
#undef USE_SERVOS

这样修改后,我们通过取消部分功能,节省出了一些内存空间。节省下来的空间,就可以用来启用其他功能,例如GPS等。比如我手头的旧款飞控,主芯片只有64M内存空间,原来按照官方版本,是无法启用128M空间所拥有的功能的,但现在,节省出来的空间,让我可以通过增加宏定义#define来添加新功能。比如我把原来128M下功能的GPS,移植到64M功能下,就是在64M代码下增加行如下:

#define GPS

需要特别小心的是,有些功能是相互依存的,如果不小心,就可能弄出bug来。比如,#defineUSE_TELEMETRY_MAVLINK功能,是需要先启用TELEMETRY才能实现,是基于TELEMETRY功能基础上的功能。
以上是对一些针对所有版本飞控的通用功能进行停用,只需修改common_fc_pre.h头文件。
修改的第二步,更深入的订制方法。需要找到目标飞控所对应的target.h头文件(位置在target文件夹/[飞控名文件夹]/target.h)。
下面以NAZE文件的头文件为例:
打开NAZE文件以后,找到target.h头文件
打开此头文件,找到如下图代码段
在这,可以看到已经宏定义了不同种类的陀螺仪芯片,加速度计芯片,气压计芯片。几乎把市面上,这个行业中出现的芯片都定义齐全了,目的是为了适应不同版本的飞控。此时,小编可以根据自己手里的飞控采用的陀螺仪芯片,加速度计芯片,气压计芯片,去除掉其他没用到的芯片定义。从而又可以节省出一部分空间出来。
去除的方法就是直接注释掉。
同样,在这个文件中,仔细观察,会发现有些功能被停用掉,比如:
上面截图中,磁力计被注释掉,表示磁力计功能没有启用。如果小编取消注释,就可以激活磁力计功能,此时NAZE飞控就有磁力计功能了。

对此文件进行修改以后,重新编译生成固件,就可以得到你自己订制的专属飞控版本了。为飞控瘦身,删掉不必要的功能。只留用需要的功能。

后语
  • 正如本文中再三强调,如果你把开发团队在官方发行版本中停用的某些功能激活了,那有可能导致主芯片运算能力不够,或者产生某些bug。因此,需要小心操作,并且你必须对自己的行为负责。
  • 小编用的穿越机是DTS家的GT200穿越机,遥控系统是GWY的AH6T搭配GWY SBUS接收机,视频眼镜是GWYCobra V眼镜。
  • 来一段视频缓解一下眼睛疲劳吧~


最后,在线订制和编译链接如下:
https://bf.fpv.wiki/
1. 先在Version右侧选择想要订制的版本号,
2. 然后在Target右侧选择板子类型
3. 再然后在Select features for the build:列表选择所要的功能(其实就是启用或停用各个功能模块的总开关(宏定义))
4. 最后在下面输入你的邮箱地址,并点击BUILD,就开始编译。
5. 编译完以后,会发送邮件到你邮箱,从邮箱提供的链接下载烧码档,邮件会记录启用了那些功能,方便自己比较。




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|静修| 发现者模型 ( 粤ICP备2021018702号 备案查询:https://beian.miit.gov.cn )

GMT+8, 2023-12-1 17:11 , Processed in 0.052269 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表