在Windows下搭建PX4编译环境 | 您所在的位置:网站首页 › 京东e卡买东西便宜吗 › 在Windows下搭建PX4编译环境 |
前言:以前装双系统,在Linux下编译PX4源码,但是对于我这种非程序员来说用起来确实难受,而且有许多工作还需要在windows下做,切换来切换去很烦躁。然而,在windows下用px4toolchain编译,不论是两年前还是现在,我都没成功过。Win10平台支持Bash on Windows后,PX4也跟进了基于Bash On Windows 的编译过程,试了一下,还算比较顺畅。当然,也可以装虚拟机。。。 ——Edited By RobotBrain.M 2018-1-31 1. 什么是Bash On Windows?
bash 是一个为GNU计划编写的Unix shell(抄自百度百科)。Bash on windows就是在Windows上可以原生运行Linux bash,通俗的说就是可以在windows下边运行一个linux子系统,干一些linux干的活儿。别高兴太早,毕竟不是linux系统,很多功能都没有,存在各种bug,比如我用nano或vim编辑的时候就会出一些完全不知所谓的乱码,但编译px4源码没有问题。 2. 如何安装Bash On Windows?
1. 安装Bash On Windows需要满足几个条件:Win10、开发人员模式、win10版本符合要求。先贴出我参考的一些资料
1)Win10系统Bash on Ubuntu on Windows怎么用? 2)bash on windows 安装教程(win 10)。 3)Windows Subsystem for Linux Documentation.
我是刚从win7升级到win10,直接满足基本条件,所以参考第3个资料,如果不是就需要参照1、2。
2. 以管理员方式打开PowerShell,然后输入: Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux 运行结束之后 重启系统。3. 在MicrosoftStore应用当中搜索Ubuntu,点击安装,安装完成之后不要关闭窗口,点击启动,等待Ubuntu安装完成。 最后在命令行会显示安装成功,然后设置用户名,密码,以获得linux下的超级用户权限(类似管理员),在使用sudo命令的时候会用到。至此算是安装好了Ubuntu,不要着急编译先用以下命令更新一下系统: sudo apt-get update sudo apt-get upgrade 3.编译px4源码
当前在Bash On Windows 下仅能编译,编译好后可以用地面站(MP或QGC)上传到飞控。参考资料:
1) Bash On Windows下编译PX4官方文档。
基本流程按照官方文档执行就可以,但是在实际安装中会出现各种小问题,以下将会详细说明。 PX4开发者网站给出了基于bash on windows下的编译方法(不要着急执行,先看完后边的细节,避免一些错误): step1:Install Bash on Windows. 安装Bash on Windows,前边已经完成; step2:Download the windows_bash_nuttx.sh script. 下载Windows_bash_nuttx.sh,这个文件相当于官方打包的命令,用户直接执行,不用自己写繁杂的命令; step3:Open the bash shell and navigate to the directory containing the script. 打开window_bash_nuttx.s所在文件夹 step4:Run the script using the command below (acknowledging any prompts as required). 执行window_bash_nuttx.sh source windows_bash_nuttx.sh step5:Test the script by building the firmware: 编译 cd $src/Firmware make px4fmu-v2_default 4 以下详细讲以下操作中的一些细节,细节决定成败。 1. 执行第2步windows_bash_nuttx.sh时,打开后时整页代码,自行复制并保存在txt文件中,我用的是SublimeText3, 另存 为windows_bash_nuttx.sh文件。2.执行第3步,将保存好的windows_bash_nuttx.sh放在任意路径下,我放在D:\PX4SourceCode文件下。这里注意, 在bash on window下改变磁盘路径使用命令(例如打开d盘): cd /mnt/d 如果已经目录下直接“cd+文件夹名”,然后: cd PX4SourceCode 3. 现在就可以执行 第4步中的命令。4. 指定编译器(其实这一步应该在第1步之后就应该完成)。编译器可以按照官方的步骤来 wget https://github.com/SolinGuo/arm-none-eabi-bash-on-win10-/raw/master/gcc-arm-none-eabi-5_4-2017q2-20170512-linux.tar.bz2 tar -xvf gcc-arm-none-eabi-5_4-2017q2-20170512-linux.tar.bz2 export PATH=$HOME/gcc-arm-none-eabi-5_4-2017q2/bin:$PATH 注意,官方给出的是: export PATH=$HOME/gcc-arm-none-eabi-5_4-2017q2/bin:\$PATH中'\'不能有,否则会报错(细节1)。 也可以采用简单的方式(我采用的这种方式,细节2): sudo apt-get install gcc-arm-none-eabi 完成以上配置就可以进行编译了。5.编译报错。这个报错可能凭运气吧,貌似不一定?不论采用以上哪种方式配置编译器,编译都会出现如下的报错,大意是“内存溢出”?(细节3) 如果出现该报错,解决方案如下: 在Firmware路径下输入:(注意$后边的才是要输入的命令,前边是路径) ~/src/Firmware$ find -name ld.* 会显示所有与ld有关的文件,然后找到 ./platforms/nuttx/nuttx-configs/px4fmu-v2/scripts/ld.script导航到ld.script所在的文件夹,用vim打开编辑: ~/src/Firmware/platforms/nuttx/nuttx-configs/px4fmu-v2/scripts$ vim ld.script找到如下图所示的flash位置,移动光标到需要修改的位置,按‘a’键进入修改模式,将下图红色标记处值改为1024k,按Esc键退出修改模式,按'Shift+ZZ(两次)'保存并退出编辑。
5.成功编译。处理完上述细节,再次编译就可以成功编译。
导航到编译生成的目标文件,可以进行烧录的固件文件已经存在(红线标记):
结语:本次编译耗时较长,解决了一些细节问题,总结如下: 1) 仅针对PX4编译,Bash on Windows下的体验与Ubuntu下的体验一样顺畅; 2)针对编译过程中出现的问题,认真阅读错误信息,以及编译过程信息,查阅资料,结合经验,大胆尝试,并注意记录修改的地方,防止改的太多,出现错误; 3)在本次查找需要更改的文件,明显感觉到linux比windows方便得多;
|
CopyRight 2018-2019 实验室设备网 版权所有 |