最近一个在一个项目上想在树莓派3B+上使用9dof-razor-imu传感器,,搭建开发环境的时候根据其官网说明选了Arduino。然而在添加他的第三方SparkFun开发板时出了问题,因为他的开发板环境包在GitHub上,所以Arduino的开发板管理器在下载该开发板的索引地址时报错,无法下载索引的.json文件,而Linux系统中翻墙去外网对于小白来讲过于复杂,各种操作看的我头疼,无奈之下各种百度,企图找到手动下载安装的方法。但是该传感器过于冷门,找不到相关问题的解决办法。无奈之下只得研究一波,费了好几天的时间找到了自己手动添加开发板的方法。
首先来讲一下如果你的树莓派或其他Linux系统的计算机可以连接外网时手动添加开发板的方法。以我要找的SparkFun SAMD 开发板为例。
(1)打开 Arduino IDE,文件->首选项,在下方附加开发板管理器中添加你要添加的开发板索引地址,比如:https://raw.githubusercontent.com/sparkfun/Arduino_Boards/master/IDE_Board_Manager/package_sparkfun_index.json
然后点击下方的OK按钮保存。
(2)工具->开发板->开发板管理器,等待下载索引完成后就可以在上面搜索你要找的开发板。
但是如果你跟我一样下载索引.json文件时报错,那么你的开发板管理器就不会出现你要找的开发板环境。那么你就需要去手动添加它。完成这个操作你首先需要有一个能够翻墙的Windows系统的电脑在身边。(下载一个适配Windows系统的梯子)
(1)在能够连接外网的电脑上打开索引的地址https://raw.githubusercontent.com/sparkfun/Arduino_Boards/master/IDE_Board_Manager/package_sparkfun_index.json
右键点击“另存为”,保存为.json格式的文件,注意不要改名字。
(2)然后在树莓派上打开 Arduino IDE,文件->首选项,在下方找到"在首选项中还有更多选项可以直接编辑"这句话,点击这句话下方的地址,就会跳到一个文件夹中,然后用U盘将.json文件移动到该文件夹下。(如果在文件夹中看到跟你的文件重名但是多了.tmp的文件,将其删除)
(3)回到首选项那,点击上方的网络,改为手动代理,但不要填任何东西,这个操作是为了断网,然后点击OK(好)按钮保存设置。(在此期间不要打开开发板管理器,否则Arduino便会刷新索引目录,将你移过去的json文件清掉)
(4)打开json文件,在代码中找到你要下载的开发板环境的url地址,比如我要下载SparkFun SAMD Boards,那么我就找到它的url地址https://github.com/sparkfun/Arduino_Boards/raw/master/IDE_Board_Manager/sparkfun-samd-1.8.3.tar.bz2(json文件中可能会有很多个版本的地址,找到自己要的就可以),然后复制地址,在电脑上打开,浏览器就会自动下载包。
{"name": "SparkFun SAMD Boards (dependency: Arduino SAMD Boards 1.8.1)","architecture": "samd","version": "1.8.3","category": "Contributed","url": "https://github.com/sparkfun/Arduino_Boards/raw/master/IDE_Board_Manager/sparkfun-samd-1.8.3.tar.bz2","archiveFileName": "sparkfun-samd-1.8.3.tar.bz2","checksum": "SHA-256:74393DAD50FCFDCCF36EC15FA1CC4354258E9050BDB1C1692E58F0C21F82C2D6","size": "2840829","help": {"online": "https://learn.sparkfun.com/tutorials/installing-arduino-ide/board-add-ons-with-arduino-board-manager"},"boards": [{ "name": "SparkFun SAMD21 Mini Breakout" },{ "name": "SparkFun SAMD21 Dev Breakout" },{ "name": "SparkFun 9DoF Razor IMU M0" },{ "name": "LilyPad LilyMini" },{ "name": "Sparkfun SAMD21 Pro RF" },{ "name": "Sparkfun RedBoard Turbo" },{ "name": "Sparkfun SAMD51 Thing Plus" },{ "name": "Sparkfun Qwiic Micro" },{ "name": "SparkFun SAMD51 MicroMod" }],"toolsDependencies": [{"packager": "arduino","name": "arm-none-eabi-gcc","version": "4.8.3-2014q1"},{"packager": "arduino","name": "bossac","version": "1.8.0-48-gb176eee"},{"packager": "arduino","name": "openocd","version": "0.9.0-arduino"},{"packager": "arduino","name": "CMSIS","version": "4.5.0"},{"packager": "arduino","name": "CMSIS-Atmel","version": "1.2.0"}]}],"tools": [{"version": "8-2018-q4-major", "name": "arm-none-eabi-gcc", "systems": [{"host": "x86_64-apple-darwin", "url": "https://static.sparkfun.com/large/gcc-arm-none-eabi-8-2018-q4-major-mac.tar.bz2", "checksum": "SHA-256:0b528ed24db9f0fa39e5efdae9bcfc56bf9e07555cb267c70ff3fee84ec98460", "archiveFileName": "gcc-arm-none-eabi-8-2018-q4-major-mac.tar.bz2", "size": "111430151"}, {"host": "i386-apple-darwin11", "url": "https://static.sparkfun.com/large/gcc-arm-none-eabi-8-2018-q4-major-mac.tar.bz2", "checksum": "SHA-256:0b528ed24db9f0fa39e5efdae9bcfc56bf9e07555cb267c70ff3fee84ec98460", "archiveFileName": "gcc-arm-none-eabi-8-2018-q4-major-mac.tar.bz2", "size": "111430151"}, {"host": "i686-linux-gnu","url": "https://static.sparkfun.com/large/gcc-arm-none-eabi-8-2018-q4-major-linux.tar.bz2", "checksum": "SHA-256:fb31fbdfe08406ece43eef5df623c0b2deb8b53e405e2c878300f7a1f303ee52", "archiveFileName": "gcc-arm-none-eabi-8-2018-q4-major-linux.tar.bz2", "size": "107253352"}, {"host": "x86_64-pc-linux-gnu","url": "https://static.sparkfun.com/large/gcc-arm-none-eabi-8-2018-q4-major-linux.tar.bz2", "checksum": "SHA-256:fb31fbdfe08406ece43eef5df623c0b2deb8b53e405e2c878300f7a1f303ee52", "archiveFileName": "gcc-arm-none-eabi-8-2018-q4-major-linux.tar.bz2", "size": "107253352"}, {"host": "i686-mingw32","url": "https://static.sparkfun.com/large/gcc-arm-none-eabi-8-2018-q4-major-win32-modified.zip", "checksum": "SHA-256:98f47ed254ce31942408028c3a4a75ad4ee9fe7f318daecafb8c101bc19a6e23", "archiveFileName": "gcc-arm-none-eabi-8-2018-q4-major-win32-modified.zip", "size": "135448870"}]},{"name": "bossac","version": "1.4.0","systems": [{"host": "i686-mingw32","url": "https://github.com/sparkfun/Arduino_Boards/raw/master/sparkfun/samd-tools/bossac/bossac-1.4.0-win.zip","archiveFileName": "bossac-1.4.0-win.zip","checksum": "SHA-256:BCA6503F5DBB1F96693AFD0701A759ECFB3BE5B9FB3F9D901CA17853B224F4EB","size": "314705"},{"host": "x86_64-pc-linux-gnu","url": "https://github.com/sparkfun/Arduino_Boards/raw/master/sparkfun/samd-tools/bossac/bossac-1.4.0-linux64.tar.bz2","archiveFileName": "bossac-1.4.0-linux64.tar.bz2","checksum": "SHA-256:BB8F398BF84C5F31880FE9A2C7AE0174592516CE4821B49744B426AA968ADA10","size": "225696"},{"host": "x86_64-apple-darwin","url": "https://github.com/sparkfun/Arduino_Boards/raw/master/sparkfun/samd-tools/bossac/bossac-1.4.0-osx.tar.bz2","archiveFileName": "bossac-1.4.0-osx.tar.bz2","checksum": "SHA-256:D0F225846D7BC80A74324D783CDB35C42A7F85EAD73CC016C0CC767B0AA5E81C","size": "74461"}]}]
(5)我们在代码上还能看到 toolsDependencies 下有很多packager,这些也需要找到他们相应的url地址下载。(依赖包url地址找不到没关系,后面会讲)
(6)将下好的包通过U盘移到树莓派上,在我们放json文件的地方进入staging/packages/,将下好的包复制到里面。
(7)打开开发板管理器,这时我们就能在里面找到自己要添加的开发板,选好版本后点击安装(比如我选的是SparkFun SAMD Boards 1.8.3),如果你之前把它所要的依赖包都安装好了,那么手动安装到此结束。但是如果你之前在json文件中没有找到依赖包的url地址,那么你在安装的过程中就会报错,这时候就需要你对着开发板管理器下方报错的地址,在你的电脑上手动下载依赖包,并移到树莓派的staging/packages/中,然后继续点击安装,直到最后安装成功。
在最后,再说一个小技巧,安装开发板时,如果报错,那么他会在staging/packages/文件夹下生成一个名称正确的空文件,所以在你将依赖包手动复制到树莓派上时,如果它提示该文件夹下有一个重名的文件,就说明你下载对了,将空文件覆盖即可。