我们来看一下编译的过程,我的机器是Ubuntu18.04
代码语言:javascript复制https://www.bitcraze.io/documentation/repository/crazyflie-firmware/master/building-and-flashing/build/
代码语言:javascript复制sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa
sudo apt-get update
sudo apt install gcc-arm-embedded
可以看到最重要的还是交叉的编译工具,apt下载一下
代码语言:javascript复制https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm
更新的机器是,Ubuntu20.4是执行的下面的命令
安装的编译器是这个,编译ARM构架的裸机系统
代码语言:javascript复制sudo apt-get install make gcc-arm-none-eabi
代码语言:javascript复制https://www.cnblogs.com/deng-tao/p/6432578.html
在上面的哪个博客上面归类的不错,可以你去看看
我去找了一下关于ARM编译器的资料,当然是去官网看啦
支持的芯片,M系列的就可以
因为不管是STM32 还是NRF都是M得ARM芯片
代码语言:javascript复制https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads
编译器资料下载的地方,其实也不是资料,其实就是最新的gcc下载得地方
代码语言:javascript复制git clone --recursive 用于循环克隆git子项目
项目里包含的一些库或者一些模块是存在了别的仓库,可以用递归来克隆回来。一次性就能解决所有的依赖模块,这里就选择这个命令参数来clone
代码语言:javascript复制https://www.cnblogs.com/love-zf/p/13192734.html
代码语言:javascript复制git clone --recursive https://github.com/bitcraze/crazyflie-firmware.git
我线clone一下,因为子库比较大,所以有点费时间
code在提示这个,可不是嘛,三分钟前都在提交代码
稍等片刻,colne完成
一个多g
代码语言:javascript复制cd crazyflie-firmware
git submodule init
git submodule update
如果一些库没有递归克隆的标志,那就自己手动安排一下
代码语言:javascript复制make PLATFORM=cf2
然后运行这个,打开编译的选项目录
代码语言:javascript复制全部:构建快捷方式
编译:编译cflie.hex。警告:请勿更新version.c
build:更新version.c并编译cflie.elf / hex
clean_o:仅清除对象文件,保留可执行文件(即.elf,.hex)
clean:清理所有编译文件
mrproper:清除每个编译文件和经典编辑器备份文件
cload:如果crazyflie-clients-python放在同一目录级别,并且
插入Crazyradio / Crazyradio PA,它将尝试刷新固件
使用无线引导程序。
flash:使用OpenOCD的Flash .elf
暂停:使用OpenOCD暂停目标
reset:使用OpenOCD重置目标
openocd:启动OpenOCD
如果需要自定义config的内容,需要修改这个地方
编译之前的文字菜单就是这个文件
代码语言:javascript复制make clean
make
make cload
之后在进行编译的时候,要先清理目录,然后编译。然后尝试自动上传,可以看上面的命令。