关于对BetaFlight的二次开发环境搭建:
下载并修改eabi:
https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads
我下载的是gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.bz2
解压到/usr/lib/gcc/里,改一下环境变量,详见章节3.
1.先从git上下载Firmware
git clone https://github.com/betaflight/betaflight.git /home/lyhusband/Betaflight/(要拷贝到的目录)
2.下载ubuntu版的地面调参软件:
从官网下载地面调参软件:
https://github.com/betaflight/betaflight-configurator/releases
(deepin支持deb的安装方式,虽然会报错,但是安装上是可以正常使用的)
sudo dpkg -i betaflight-configurator_10.7.0_amd64.deb
安装完成后即可打开调参软件:
3.交叉编译工具切换
当存在多个arm-none-eabi-gcc版本时,需要手动选择主编译器版本,编译器统一放在/usr/lib/gcc/文件夹下,通过修改主目录下的 .bashrc文件来决定选择哪一个编译器,具体操作如下:
cd ~ //确认在主文件夹下
vim .bashrc //修改文件,注意不需要root权限
修改最后一行export,修改为要用的编译器的地址,如果将这一行注释掉,将会改为由deepin仓库安装的7.3.1版本,具体例子如下(修改为9.3.1版本,注释掉为7.3.1):
由于我在2020年10月14日下载到的源码还需要9.2.1的eabi,但是9.3.1是向下兼容的,所以需要修改工程文件,修改/×工程目录/make/tools.mk的编译器选择:
# Set up ARM (STM32) SDK
ARM_SDK_DIR ?= $(TOOLS_DIR)/gcc-arm-none-eabi-9-2020-q2-update//目前我的eabi
# Checked below, Should match the output of $(shell arm-none-eabi-gcc -dumpversion)
GCC_REQUIRED_VERSION ?= 9.3.1//我的eabi版本号
设置好之后reboot,等待重启完成后在源码根目录 make TARGET=#设备型号# DEBUG=INFO,如果可以编译过则开始搭建eclipse开发环境
4.使用eclipse进行源码编译与二次开发
(注意在修改属性时一定要把project选对!!!!)
打开eclipse并导入bf源码,此时GNU还是eabi-7.3.1,首先切换编译器版本,由于原始编译器为7.3.1,而9.3.1存在与我的环境变量中,查看porject→properties→c/c++ Build→Environment,其中PATH中已经包含了我的9.3.1的编译路径,但是编译时发现还是用的7.3.1,索性将9.3.1的环境目录提前至整个变量值的最前头:
配置好这些之后别忘了将编译器的指令定义好,别用all,这样该会把所有支持的cpu和板子都编译一遍,太费时间和空间,具体方法:porject→properties→c/c++ Build,在Builder Settings中把
Use default build command前的勾勾去掉,在Build command手动输入‘make’,再切换到Behavior选项卡中将build后面的‘all’改为TARGET=#想要的目标设备#,如我需要在F745的demo板上跑,则如图修改:
至此,在eclipse中点击Betaflight项目并右键build即可编译出我们要的目标文件。
2020-10-15 eclipse版本为eclipse_2020-09 IDE for C/C++ Developers: