龙芯开源社区

 找回密码
 注册新用户(newuser)
查看: 439|回复: 3

在Fedora下移植Arduino IDE

[复制链接]
发表于 2017-5-22 16:55:36 | 显示全部楼层 |阅读模式
本帖最后由 luoxiao95 于 2017-5-23 15:39 编辑

许久不来论坛逛了,发现好冷请!!!


      废话不多说,进入正题,去年我就弄了个小新闻,弄了当时最新版的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、修改配置文件,使用由系统提供的工具链和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. # Default "compiler.path" is correct, change only if you want to override the initial value
  8. +runtime.tools.avr-gcc.path=/usr
  9. compiler.path={runtime.tools.avr-gcc.path}/bin/
  10. compiler.c.cmd=avr-gcc
  11. compiler.c.flags=-c -g -Os {compiler.warning_flags} -std=gnu11 -ffunction-sections -fdata-sections -MMD -flto -fno-fat-lto-objects
  12. @@ -91,9 +92,9 @@ recipe.preproc.macros="{compiler.path}{compiler.cpp.cmd}" {compiler.cpp.flags} {
  13. # AVR Uploader/Programmers tools
  14. # ------------------------------

  15. -tools.avrdude.path={runtime.tools.avrdude.path}
  16. -tools.avrdude.cmd.path={path}/bin/avrdude
  17. -tools.avrdude.config.path={path}/etc/avrdude.conf
  18. +tools.avrdude.path=/
  19. +tools.avrdude.cmd.path={path}usr/bin/avrdude
  20. +tools.avrdude.config.path={path}etc/avrdude/avrdude.conf

  21. 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
复制代码

 楼主| 发表于 2017-5-22 17:28:06 | 显示全部楼层
本帖最后由 luoxiao95 于 2017-6-28 23:10 编辑

正所谓“无图无真相”,放几张图片吧。


主界面

管理库

为了测试串口能正常使用,我这里写了个串口显示DS18B20模块测出的数据,使用DS18B20模块时,需要添加单总线库OneWire库

加载库
添加OenWire库后,进行程序编译并将其上传到开发板中。打开串口监视器,串口监视器已经正常工作。另外,串口绘图器也能正常使用了。

串口监视器接收数据

串口绘图器

最重要的图片也不能忘了放
龙芯笔记本与Arduino开发板


修改好的压缩包在这里下载:http://mirror.lemote.com/fedora-users/luoxiao/other/arduino/

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册新用户(newuser)

x
发表于 2017-5-23 09:21:56 | 显示全部楼层
顶!
发表于 2017-5-23 13:34:25 | 显示全部楼层

本版积分规则

小黑屋|手机版|Archiver|Lemote Inc.  

GMT+8, 2017-9-26 11:29 , Processed in 0.192037 second(s), 19 queries .

快速回复 返回顶部 返回列表