新闻中心

LEMOTE NEWS

栏目导航

在Fedora21下移植Arduino IDE

发布时间:2017-05-23 15:55:45    已阅读:

      来源:龙芯开源社区   作者:luoxiao95

       废话不多说,进入正题,去年我就弄了个小新闻,弄了当时最新版的Arduino IDE到龙芯Fedora21上,http://bbs.lemote.com/forum.php?mod=viewthread&tid=74538&extra=page%3D1 后来又发现串口监视器和串口绘图器根本没法儿使用,这使得Arduino开发板在龙芯电脑上进行串口调试非常不方便。前几天,我又在龙芯上折腾了一番,最终解决了所有问题。下面来说说整个移植的过程(本帖旨在抛砖引玉,如有不完善之处,敬请指出以便更正)
      Fedora21/25软件源也提供了Arduino IDE软件包,不过版本实在太老。此外,Arduino IDE是开源软件,绝大部分代码用java进行编写,根据java的“一处编译,四处运行”的特性,此处只以已经编译好的压缩包进行修改,感兴趣的朋友可以从源代码进行编译,然后进行修改。

测试环境:龙芯3A1000 + Fedora21、Fedora25


  1、前期准备
首先,我们需要下载已经编译好的版本,下载地址:https://www.arduino.cc/en/Main/Software,选择下载Linux 64 bits的包。下载完毕后,使用tar -xvf命令将压缩包解开,然后使用cd命令进入该文件夹。

2、去除X86_64相关的二进制文件
      删除java文件夹以去除供x64使用的java。接着删除可执行文件arduino-buildertools/ctags/5.8-arduino11/ctags; hardware/tools/avr目录、库文件lib/liblistSerialsj.solib/libastylej.so


3、编译所需库文件
       步骤2删除了两个X64平台的库文件liblistSerialsj.soastylej.so,现在需要为龙芯平台提供这两个库文件。
       首先编译所需的liblistSerialsj.so,先确保龙芯电脑安装了git以及java-devel

  1. git  clone https://github.com/facchinm/listSerialPortsC --recursive
  2. cd   listSerialPortsC
打开compile_linux.sh将JAVA_INCLUDE_PATH一行修改为
  1. JAVA_INCLUDE_PATH=/usr/lib/jvm/java-1.8.0/include/
   此外,因为我们使用的是64位操作系统,不需要给32位系统和arm平台编译这个库,所以我们需要将compile_linux.sh中mkdir -p distrib/linux32这一行及以下行的所有内容删除。接着执行compile_linux.sh完成编译,将生成的库文件distrib/linux64/liblistSerialsj.so拷贝到arduino IDE目录下的lib目录里。
  1.    sh   compile_linux.sh
  2.   cp   distrib/linux64/liblistSerialsj.so  ~/arduino-1.8.2/lib/
  对于astylej.so,可以使用由系统的astyle软件包提供,使用yum软件包管理器安装astyle,然后将/usr/lib64/libastyle-2.04.so复制到Arduino IDE目录的lib文件夹下并重命名为libastylej.so即可。
  1. yum  install  astyle
  2. cp  /usr/lib64/libastyle-2.04.so     ~/arduino-1.8.2/lib/libastylej.so    //本条命令仅针对Fedora21系统,Fedora25根据实际情况进行修改

4、编译arduino-builder
  请确保已经安装了golang编译器!编译完成后将生成的arduino-builder二进制文件复制到Arduino IDE的目录下
  1. git  clone https://github.com/arduino/arduino-builder/
  2. cd   arduino-builder
  3. export   GOPATH=$(pwd)       //设置GOPATH变量
  4. go  get  github.com/go-errors/errors
  5. go  get  github.com/stretchr/testify
  6. go  get  github.com/jstemmer/go-junit-report
  7. go  build  arduino.cc/arduino-builder
  8. cp   arduino-builder  ~/arduino-1.8.2/

5、编译ctags
  Fedora21软件仓库里的ctags并不支持arduino,因此必须使用arduino官方提供的ctags。
  1. git  clone https://github.com/arduino/ctags
  2. cd   ctags
  3. sh  configure
  4. make  -j4
  5. cp  ctags  ~/arduino-1.8.2/tools-builder/ctags/5.8-arduino11/

  6. 6、修改配置文件,使用由系统提供的工具链和avrdude烧写工具
  1.   cd ~/arduino-1.8.2/hardware/arduino/avr/
  使用文本编辑器打开platform.txt,修改的内容如下
  1. diff --git a/platform.txt b/platform.txt
  2. index 3985678..b2ad919 100644
  3. --- a/platform.txt
  4. +++ b/platform.txt
  5. @@ -18,6 +18,7 @@ compiler.warning_flags.more=-Wall
  6. compiler.warning_flags.all=-Wall -Wextra
  7.  
  8. # Default "compiler.path" is correct, change only if you want to override the initial value
  9. +runtime.tools.avr-gcc.path=/usr
  10. compiler.path={runtime.tools.avr-gcc.path}/bin/
  11. compiler.c.cmd=avr-gcc
  12. compiler.c.flags=-c -g -Os {compiler.warning_flags} -std=gnu11 -ffunction-sections -fdata-sections -MMD -flto -fno-fat-lto-objects
  13. @@ -91,9 +92,9 @@ recipe.preproc.macros="{compiler.path}{compiler.cpp.cmd}" {compiler.cpp.flags} {
  14. # AVR Uploader/Programmers tools
  15. # ------------------------------
  16.  
  17. -tools.avrdude.path={runtime.tools.avrdude.path}
  18. -tools.avrdude.cmd.path={path}/bin/avrdude
  19. -tools.avrdude.config.path={path}/etc/avrdude.conf
  20. +tools.avrdude.path=/
  21. +tools.avrdude.cmd.path={path}usr/bin/avrdude
  22. +tools.avrdude.config.path={path}etc/avrdude/avrdude.conf
  23.  
  24. tools.avrdude.network_cmd={runtime.tools.arduinoOTA.path}/bin/arduinoOTA

7、修复串口监视器/绘图器不能使用的问题
  Arduino IDE里的jssc模块在龙芯平台并不能正常使用,导致串口监视器/绘图器不能使用甚至不能选择开发板的端口。因此这里需要编译fedora25软件仓库里的jssc去替换掉Arduino IDE里的jssc模块。
  1.    wget  http://mirrors.ustc.edu.cn/fedora/releases/25/Everything/source/tree/Packages/j/jssc-2.8.0-5.fc24.src.rpm
  2.    rpmbuild  --clean  --rebuild  jssc-2.8.0-5.fc24.src.rpm
  3.    sudo  yum  install rpmbuild/RPMS/mips64el/jssc-2.8.0-5.fc21.loongson.mips64el.rpm
  4.    cp   /usr/lib/java/jssc.jar  ~/arduino-1.8.2/lib/jssc-2.8.0.jar

8、升级工具链(仅针对Fedora21系统)
     Fedora21系统下,在编译程序时会报"this program has been built without plugin suppot"的错误,升级一下avr-binutils即可。此处选择使用fedora25软件仓库里的srpm进行编译安装,以方便管理。
首先安装rpm打包工具rpm-build,然后下载avr-bniutils的srpm进行打包并安装
  1.   wget http://mirrors.ustc.edu.cn/fedora/releases/25/Everything/source/tree/Packages/a/avr-binutils-2.26-1.fc25.src.rpm
  2.   rpmbuild  --rebuild  --clean  avr-binutils-2.26-1.fc25.src.rpm
  3.   sudo  yum  install ~/rpmbuild/RPMS/mips64el/avr-binutils-2.26-1.fc21.loongson.mips64el.rpm

      至此,整个移植工作就完成了。我们通过如下命令安装工具链和烧写工具就可以使用连接上自己的Arduino开发板,打开Arduino IDE进行开发了
  1. sudo  yum  install  avr-libc avr-gcc avrdude avr-binutils
    在Arduino IDE的目录里,可以通过执行install.sh脚本文件添加启动器到启动菜单,以后可以在应用程序->编程找到Arduino IDE的启动菜单了。
      另外,为了保证当前用户有权限对设备进行读写,使用一下命令将用户加入dialout组,注销后重新登陆即可

  1. usermod -a -G dialout USER