ezk 发表于 2017-10-10 08:05:23

如何自己编译定制betaflight + 给F3硬件 BF321软件加上GPS功能

本帖最后由 ezk 于 2017-10-10 09:13 编辑

编译环境设置参考https://github.com/martinbudden/betaflight/blob/master/docs/development/Building%20in%20Windows.md需要软件:Cygwin 和GNU ARM Toolchain
我自己测试用Cygwin 2.881 和gcc-arm-none-eabi-6-2017-q2-update-win32 成功编译BF3.2.1Cygwin下载,下载X8664 还是32 看你自己的电脑https://www.cygwin.com/
在安装Cywin时候要选下面这些选项    Devel/git   Devel/git-completion (可选)    Devel/make    Devel/binutils    Editors/vim    Editors/vim-common(可选)    Shells/mintty (默认选了)默认安装到C:\cygwin64C:\cygwin64\home\windows用户名 目录下就是相当于linux的home目录 所有git下载过来和编译的文件都在里面

接下来下载安装 ARMtool chainhttps://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads下载zip包就行
下载完要添加windows 环境目录添加一个path 里面填下面的东西 C:\gcc-arm-none-eabi-6-2017-q2-update-win32\bin是这个tool chain的解压目录里面的bin 文件夹 %PATH%;C:\gcc-arm-none-eabi-6-2017-q2-update-win32\bin这样编译环境就设置完成了
接下来git下载源文件 和编译
点开桌面的 cygwin64terminal 粘帖git clone https://github.com/betaflight/betaflight.git整个BF的源码就下载到你的C:\cygwin64\home\windows用户名 目录下接下来进入betaflight 目录 输入cdbetaflight接下来输入makeTARGET=BETAFLIGHTF3 就开始编译了 里以BETAFLIGHTF3 作为目标硬件(target)来编译所有的支持目标硬件都罗列在C:\cygwin64\home\windows 用户名\betaflight\src\main\target编译好的hex文件在C:\cygwin64\home\ windows 用户名\betaflight\obj如果编译出错基本上是英文tool chain 那环境变量设置不对

给F3的 BF3.2.1 瘦身或者添加GPS或者其他功能我要GPS不是要回家功能,而是x9d支持数传GPS坐标的功能。这样在齐腰身的草上空随意飞行都不怕丢。飞控可以把实时的坐标传到遥控器上,这样省去大量找飞机的时间。飞机也再也没有丢过。重新编译的固件并不能带来任何性能上的提高。接下来最大的问题来了 BF3.2.1 把F3 MCU的 GPS支持完全给移除了因为Flash/ROM不够用了,好多空间给动态滤波用了。 STM32F303256 Kb Flash/ROM 40Kb SRAM,F303只有256Kb的ROM。这点可以在C:\cygwin64\home\windows用户名\betaflight\src\main\target\common_fc_pre.h里面最后几行看到。
下面我一BETAFLIGHT F3 飞控为例 厦门的FPVmodel造的我先试试强制添加GPS功能 找到C:\cygwin64\home\windows 用户名\betaflight\src\main\target\BETAFLIGHTF3\target.h随便找个地方添加这几行#define GPS#define USE_NAV#define USE_UNCOMMON_MIXERS最终结果编译出错ROM还是不够用 接下来看看那些头文件怎么定义的,其实好多万年不用的功能都可以删掉,例如PWM, LED灯,各种数传协议等等。但是我还是想保留软串口功能。有一台穿越图传支持类似smartaudio配置功能那要留给图传配置用。 上面这3个图是C:\cygwin64\home\windows 用户名\betaflight\src\main\target\common_fc_pre.h的头文件这张图是来自于C:\cygwin64\home\windows 用户名\betaflight\src\main\target\BETAFLIGHTF3\target.h , 可以把ESC 回传RPM这些功能去掉。
把各种协议都干掉终于ROM空间够了,也编译成功。 接下来直接去Chrome把hex文件手动刷进去就行
下面是编译时候2个头文件的配置
这定制版本的固件我只有时间在家里试飞,GPS是保证能用的,硬件只支持betaflight f3这飞控。 这飞控和那些其他淘宝版本的硬件F3不太一样。



ezk 发表于 2018-4-28 04:01:51

jcofee 发表于 2018-4-27 11:56
楼主,麻烦问下,我也按你的方式编辑了刷到飞控里,在 GPS 界面里有显示 8 颗星,但始终无法 3DFix,并且右 ...

没有用过地图 我只需要坐标
3Dfix 需要不少时间 同样用m8n 在pix一般30秒内 bf有的时候一颗电池飞完都没fix
OSD显示速度我没试过 应该没问题
尝试把那些不要的telemetry的define全部注解掉 留下越多define越好
现在github 最新版的又多了好多这类宏定义

ezk 发表于 2018-4-26 15:36:17

=爱好者= 发表于 2018-4-26 14:47
能加上成自动返航就更好了,用F4空间大些

要导航 出门转inav

ezk 发表于 2017-10-10 12:14:45

下一帖讲解X9D的 数传功能
BF的数传和 pix的数传

ezk 发表于 2017-10-10 12:04:53

jkd_405 发表于 2017-10-10 09:34
占坑学习,能否用eclipse for c++

编辑可以
编译不清楚 应该也可以 我不知道如何设置

wind_fly 发表于 2018-12-16 11:31:37

按照这个方法进行了,配置,但是现在不能进行make。不知什么原因,能否加个微信,指点一下。

博博爱ZZU 发表于 2018-11-2 15:14:48

兄弟,bf固件,是用的啥语言写的?

maxkz 发表于 2018-11-12 23:25:24

怎么用这个调出GPS导航

ezk 发表于 2018-11-1 06:52:51

无名小模 发表于 2018-10-30 20:02
兄弟有文档说明这些参数是干什么的吗,我想把最新的瘦身一下,想用gps

没有 英文理解还是很简单的

一身阿富汗 发表于 2017-10-10 08:24:08

高手在民间。

jkd_405 发表于 2017-10-10 09:34:28

占坑学习,能否用eclipse for c++

格飞FPV 发表于 2017-10-10 09:47:52

好帖子帮顶了

anyhow18 发表于 2017-10-10 16:42:24

专业玩法果然6

chanshiguan.ink 发表于 2017-10-10 17:28:01

高手在民间{:1_9:}{:1_9:}

永远的零 发表于 2017-10-10 19:51:01

专业!那套中午注释,心血

machiner888 发表于 2017-12-12 12:11:59

这个编译完后,怎么将修改的内容更新到gitHub上去呢?

sunjjun 发表于 2018-4-26 10:43:10

好牛的技术贴,我也搞了一个OMNIBUS的

=爱好者= 发表于 2018-4-26 14:47:47

能加上成自动返航就更好了,用F4空间大些

kappak 发表于 2018-4-26 16:35:43

好文章啊!!!!!!!!!!!!!

jcofee 发表于 2018-4-27 11:56:02

楼主,麻烦问下,我也按你的方式编辑了刷到飞控里,在 GPS 界面里有显示 8 颗星,但始终无法 3DFix,并且右边的地图也无法显示。请问还有什么需要注意的么?我只是想在OSD中可以显示飞行的速度相关信息,也可以查询坐标!

taiyangzai 发表于 2018-4-28 07:22:09

好技术支持

Wangooodhuquan 发表于 2018-10-12 08:37:33

学习了,好

FPV大帝 发表于 2018-10-16 19:25:05

这源代码帖子谁有

无名小模 发表于 2018-10-30 20:02:08

兄弟有文档说明这些参数是干什么的吗,我想把最新的瘦身一下,想用gps
页: [1] 2
查看完整版本: 如何自己编译定制betaflight + 给F3硬件 BF321软件加上GPS功能