EN

新闻中心

LOONGSON NEWS

栏目导航

在Fedora21下移植Arduino IDE

发布时间:2017-06-24    已阅读:

          废话不多说,进入正题,去年我就弄了个小新闻,弄了当时最新版的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、前期准备
首先,我们需要下载已经编译好的版本,下载地址:www.arduino.cc/en/Main/Software
选择下载Linux 64 bits的包。下载完毕后,使用tar -xvf命令将压缩包解开,然后使用cd命令进入该文件夹。
2、去除X86_64相关的二进制文件
      删除java文件夹以去除供x64使用的java。接着删除可执行文件arduino-builder、tools/ctags/5.8-arduino11/ctags; hardware/tools/avr目录、库文件lib/liblistSerialsj.so和lib/libastylej.so。
3、编译所需库文件
         步骤2删除了两个X64平台的库文件liblistSerialsj.so和astylej.so,现在需要为龙芯平台提供这两个库文件。
         首先编译所需的liblistSerialsj.so,先确保龙芯电脑安装了git以及java-devel
git  clone https://github.com/facchinm/listSerialPortsC --recursive
cd   listSerialPortsC
打开compile_linux.sh将JAVA_INCLUDE_PATH一行修改为
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目录里。
         sh   compile_linux.sh
         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即可。
yum  install  astyle
cp  /usr/lib64/libastyle-2.04.so     ~/arduino-1.8.2/lib/libastylej.so    //本条命令仅针对Fedora21系统,Fedora25根据实际情况进行修改

4、编译arduino-builder
         请确保已经安装了golang编译器!编译完成后将生成的arduino-builder二进制文件复制到Arduino IDE的目录下
git  clone https://github.com/arduino/arduino-builder/
cd   arduino-builder
export   GOPATH=$(pwd)       //设置GOPATH变量
go  get  github.com/go-errors/errors
go  get  github.com/stretchr/testify
go  get  github.com/jstemmer/go-junit-report
go  build  arduino.cc/arduino-builder
cp   arduino-builder  ~/arduino-1.8.2/
5、编译ctags
         Fedora21软件仓库里的ctags并不支持arduino,因此必须使用arduino官方提供的ctags。
git  clone https://github.com/arduino/ctags
cd   ctags
sh  configure
make  -j4
cp  ctags  ~/arduino-1.8.2/tools-builder/ctags/5.8-arduino11/
6、修改配置文件,使用由系统提供的工具链和avrdude烧写工具
cd ~/arduino-1.8.2/hardware/arduino/avr/
         使用文本编辑器打开platform.txt,修改的内容如下
diff --git a/platform.txt b/platform.txt
index 3985678..b2ad919 100644
--- a/platform.txt
+++ b/platform.txt
@@ -18,6 +18,7 @@ compiler.warning_flags.more=-Wall
compiler.warning_flags.all=-Wall -Wextra
# Default "compiler.path" is correct, change only if you want to override the initial value
+runtime.tools.avr-gcc.path=/usr
compiler.path={runtime.tools.avr-gcc.path}/bin/
compiler.c.cmd=avr-gcc
compiler.c.flags=-c -g -Os {compiler.warning_flags} -std=gnu11 -ffunction-sections -fdata-sections -MMD -flto -fno-fat-lto-objects
@@ -91,9 +92,9 @@ recipe.preproc.macros="{compiler.path}{compiler.cpp.cmd}" {compiler.cpp.flags} {
# AVR Uploader/Programmers tools
# ------------------------------
-tools.avrdude.path={runtime.tools.avrdude.path}
-tools.avrdude.cmd.path={path}/bin/avrdude
-tools.avrdude.config.path={path}/etc/avrdude.conf
+tools.avrdude.path=/
+tools.avrdude.cmd.path={path}usr/bin/avrdude
+tools.avrdude.config.path={path}etc/avrdude/avrdude.conf
tools.avrdude.network_cmd={runtime.tools.arduinoOTA.path}/bin/arduinoOTA
7、修复串口监视器/绘图器不能使用的问题
         Arduino IDE里的jssc模块在龙芯平台并不能正常使用,导致串口监视器/绘图器不能使用甚至不能选择开发板的端口。因此这里需要编译fedora25软件仓库里的jssc去替换掉Arduino IDE里的jssc模块。
   wget  http://mirrors.ustc.edu.cn/fedora/releases/25/Everything/source/tree/Packages/j/jssc-2.8.0-5.fc24.src.rpm
   rpmbuild  --clean  --rebuild  jssc-2.8.0-5.fc24.src.rpm
Sudo  yum  install
rpmbuild/RPMS/mips64el/jssc-2.8.0-5.fc21.loongson.mips64el.rpm
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进行打包并安装
wget http://mirrors.ustc.edu.cn/fedora/releases/25/Everything/source/tree/Packages/a/avr-binutils-2.26-1.fc25.src.rpm
  rpmbuild  --rebuild  --clean  avr-binutils-2.26-1.fc25.src.rpm
  sudo  yum  install
~/rpmbuild/RPMS/mips64el/avr-binutils-2.26-1.fc21.loongson.mips64el.rpm
      至此,整个移植工作就完成了。我们通过如下命令安装工具链和烧写工具就可以使用连接上自己的Arduino开发板,打开Arduino IDE进行开发了
sudo  yum  install  avr-libc avr-gcc avrdude avr-binutils
    在Arduino IDE的目录里,可以通过执行install.sh脚本文件添加启动器到启动菜单,以后可以在应用程序->编程找到Arduino IDE的启动菜单了。
      另外,为了保证当前用户有权限对设备进行读写,使用一下命令将用户加入dialout组,注销后重新登陆即可
usermod -a -G dialout USER