歡迎進入江蘇航天龍夢信息技術有限公司官方網站

欄目導航

在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-builder、tools/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

返回
頂部
浙江快乐彩票 排列三必中公式 山西11选5前三走势 66扣百家乐赢钱公式 江苏十一选五前三直选 国信证券 股票推荐 天津时时彩历史记录 四川体彩金7乐玩法 河南快3基本二码遗漏 武汉哪的股票配资好 排列五技巧和规律公式