關於 Arduino Ameba 的 100 篇 - 如何升級更換 toolchain (1/100)
Toolchain
屬於程式的開發工具. 每個不同的 CPU 都會有其相對應的 toolchain.
Arduino 走的是 open source, 所以會使用最常用的開源工具 - GNU.
網路上找到一篇關於 GNU 開發工具 , 可以參考
另外有關 GNU toolchain 的深入部分, 可以參考 Jim Huang 的這份投影片
http://www.slideshare.net/jserv/how-a-compiler-works-gnu-toolchain?from_action=save
Ameba 的 CPU 是 ARM 的 Cortex-M3, 和 Arduino DUE 使用的相同
在網路上有個 ARM 的社群, 開發 給 ARM 使用的 embedded GCC
目前 Arduino 和 ARM mbed 都是使用這套 toolchain
https://launchpad.net/gcc-arm-embedded
其中 6.0 應該也快出來了.
Arduino 安裝後 toolchain 的位置
windows 會放在 :
C:/Users/<使用者名稱>/AppData/Local/Arduino15/packages/<平台安裝package名稱>/tools/arm-none-eabi-gcc/4.8.3-2014q1 下
MAC OS 會放在 :
/Users/<使用者名稱>/Library/Arduino15/packages/<平台安裝package名稱>/tools/arm-none-eabi-gcc/4.8.3-2014q1 下
升級更換
(1) 一個最簡單的方式是, 假裝他還是 4.8.3, 直接更換上述目錄下的檔案.
(2) 自製 JSON 檔
Arduino JSON 檔設定
在安裝時, 會要求輸入 偏好設定 -> 額外的板子管理員網址
如果有去看這的話, 這是一個 JSON 格式的檔案. (ASCII 明文 )
toolsDependencies : 這邊定義了我們要安裝哪些 package
"toolsDependencies": [
{
"packager": "realtek",
"name": "arm-none-eabi-gcc",
"version": "4.8.3-2014q1"
},
{
"packager": "realtek",
"name": "ameba_tools",
"version": "1.0.6"
}
]
name / version 和前面相同, 而且安裝後會以這兩個為目錄名稱
host : 有四種
i686-mingw32 : windows
x86_64-apple-darwin : MAC OSX
x86_64-pc-linux-gnu : Linux 64 bit
i686-pc-linux-gnu : Linux 32 bit
archiveFileName: 檔案名稱
url : 下載位置
checksum : 用 SHA256 做全檔 checksum
size : 檔案大小
"tools": [
{
"name":"arm-none-eabi-gcc",
"version":"4.8.3-2014q1",
"systems":[
{
"host":"i686-mingw32",
"archiveFileName":"gcc-arm-none-eabi-4.8.3-2014q1-windows.tar.gz",
"url":"http://downloads.arduino.cc/gcc-arm-none-eabi-4.8.3-2014q1-windows.tar.gz",
"checksum":"SHA-256:fd8c111c861144f932728e00abd3f7d1107e186eb9cd6083a54c7236ea78b7c2",
"size":"84537449"
},
{
"host":"x86_64-apple-darwin",
"url":"http://downloads.arduino.cc/gcc-arm-none-eabi-4.8.3-2014q1-mac.tar.gz",
"archiveFileName":"gcc-arm-none-eabi-4.8.3-2014q1-mac.tar.gz",
"checksum":"SHA-256:3598acf21600f17a8e4a4e8e193dc422b894dc09384759b270b2ece5facb59c2",
"size":"52518522"
},
{
"host":"x86_64-pc-linux-gnu",
"url":"http://downloads.arduino.cc/gcc-arm-none-eabi-4.8.3-2014q1-linux64.tar.gz",
"archiveFileName":"gcc-arm-none-eabi-4.8.3-2014q1-linux64.tar.gz",
"checksum":"SHA-256:d23f6626148396d6ec42a5b4d928955a703e0757829195fa71a939e5b86eecf6",
"size":"51395093"
},
{
"host":"i686-pc-linux-gnu",
"url":"http://downloads.arduino.cc/gcc-arm-none-eabi-4.8.3-2014q1-linux32.tar.gz",
"archiveFileName":"gcc-arm-none-eabi-4.8.3-2014q1-linux32.tar.gz",
"checksum":"SHA-256:ba1994235f69c526c564f65343f22ddbc9822b2ea8c5ee07dd79d89f6ace2498",
"size":"51029223"
}
]
},
(先補一個 windows 的, 之後來試 MACOS)
{ | |
"name":"arm-none-eabi-gcc", | |
"version":"5.2.1-2015q4", | |
"systems":[ | |
{ | |
"host":"i686-mingw32", | |
"archiveFileName":"arm-none-eabi-gcc-5.2.1-2015q4-win32.tar.gz", | |
"url":"https://github.com/neojou/arduino-ameba/raw/master/release/arm-none-eabi-gcc-5.2.1-2015q4-win32.tar.gz", | |
"checksum":"SHA-256:0938e98f0fff7540e69143de11e00cb917d84912f9b60752859af81d5bd054cd", | |
"size":"77056145" | |
} | |
] | |
}, | |
有趣的是, 修改之後, 發生一個 compiler error
Google 了一下, 發現的確也有人有同樣問題, 所以我也反應上去了 ^_^
https://github.com/arduino/Arduino/issues/4002
讓我想起以前一個和型態宣告有關的 bug
http://www.cnblogs.com/nightwatcher/p/3253485.html
也難怪 toolchain 越檢查越嚴格了.
修正後可以正常動作.
PS1: 用 5.2.1 build 大小差不多 41K, 原本的大概 42K, 的確會小一點.
PS2: 下回補上 mac os 的並連同 compiler 參數調整.
留言
張貼留言