admin 管理员组

文章数量: 887265

前言:以前装双系统,在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
   以下详细讲以下操作中的一些细节,细节决定成败。

      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/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方便得多;










本文标签: 环境 Windows bash