06-23
2017
在fedora21下移植arduino ide
废话不多说,进入正题,去年我就弄了个小新闻,弄了当时最新版的arduino ide到龙芯fedora21上,
,后来又发现串口监视器和串口绘图器根本没法儿使用,这使得arduino开发板在龙芯电脑上进行串口调试非常不方便。前几天,我又在龙芯上折腾了一番,最终解决了所有问题。下面来说说整个移植的过程(本帖旨在抛砖引玉,如有不完善之处,敬请指出以便更正)
fedora21/25软件源也提供了arduino ide软件包,不过版本实在太老。此外,arduino ide是开源软件,绝大部分代码用java进行编写,根据java的“一处编译,四处运行”的特性,此处只以已经编译好的压缩包进行修改,感兴趣的朋友可以从源代码进行编译,然后进行修改。
测试环境:龙芯3a1000 fedora21、fedora25
1、前期准备
首先,我们需要下载已经编译好的版本,下载地址:,
选择下载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
,后来又发现串口监视器和串口绘图器根本没法儿使用,这使得arduino开发板在龙芯电脑上进行串口调试非常不方便。前几天,我又在龙芯上折腾了一番,最终解决了所有问题。下面来说说整个移植的过程(本帖旨在抛砖引玉,如有不完善之处,敬请指出以便更正)
fedora21/25软件源也提供了arduino ide软件包,不过版本实在太老。此外,arduino ide是开源软件,绝大部分代码用java进行编写,根据java的“一处编译,四处运行”的特性,此处只以已经编译好的压缩包进行修改,感兴趣的朋友可以从源代码进行编译,然后进行修改。
测试环境:龙芯3a1000 fedora21、fedora25
1、前期准备
首先,我们需要下载已经编译好的版本,下载地址:,
选择下载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