1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Ubuntu18.04でAIミニ四駆キットをアップデートする

Last updated at Posted at 2019-05-24

あかまるさんが技術書典で配布していたAIミニ四駆キットのファームウェアアップデートをUbuntu18.04で行う。
マイコンとしてはSAMD51J20Aなのでこのマイコンをターゲットに書き込みをしたい人も参考になると思う。

用意するもの

Atmel-ICE

BASICキットで良い。秋月で10,800円。
マルツだと基板むき出しのPCBAキットも売ってる。こちらは7,915円。
付属しているケーブルの長さの都合上、ミニ四駆の上にICEを置く必要があるのでケース付きのBASICキットをおすすめする。
結局CMSIS-DAPとして使ってるので、もっと安いやつでもいいと思う。

WindowsPC

Ubuntuで作業するといいつつ、Windowsが出てくるのは申し訳ないが、Atmel StudioからcmsisとDEPを引き抜いてくるのに使用する。
このファイルがあれば用済みなので許してほしい。

電池

基板を起動させないと焼けない。

ビルド環境の準備

ARMクロスコンパイラのインストール

Ubuntuのデフォルトのリポジトリにあるgcc-arm-none-eabiを使用するとビルドエラーが起きる。
以下のようにコンパイラをインストールする。

sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa
sudo apt-get update
sudo apt-get install gcc-arm-embedded

ソースの準備

AIミニ四駆キットのソースの入手

  1. 以下からcloneする。
    https://github.com/aks3g/ai_mini_4wd_kit

MicroPythonのソースの入手

  1. 以下のreleasesからai_mini_4wd_kitが対応してるバージョンを落とす。
    現在だと1.9.4に対応している。
    https://github.com/micropython/micropython
  2. 落としたソースをai_mini_4wd_kitのmicro_python直下にコピーする。
    MicroPythonのソース無いとai_mini_4wd_kitのportsのディレクトリがマージされるディレクトリの位置ならOK。

cmsisとDEPの入手

  1. WindowsでAtmelStudioをインストールする。
  2. インストール後、SAMD51J20Aをターゲットにしたプロジェクトを適当に作る。
  3. C:\Program Files (x86)\Atmel\Studio\7.0\packsをLinuxに持ってくる。
  4. 任意の場所にpacksを展開する。(以降/YOUR/GET/ATMEL_STUDIO/packsに置いたとする。)
  5. packs/arm/CMSISからpacks/arm/cmsis/5.0.1/CMSISにシンボリックリンクを張る。

ビルド

環境変数の設定

以下はfishのものです。自分の環境に合わせてください。

set -x CROSS_COMPILE /usr/bin/arm-none-eabi-
set -x PACKS_PATH /YOUR/GET/ATMEL_STUDIO/packs/

make

cd ai_mini_4wd_kit/src/micro_python/ports/ai_mini4wd
make

成功するとai_mini_4wd_kit/src/micro_python/ports/ai_mini4wd/buildディレクトリが作られ、この中にfirmware.elfが生成される。

書き込み

OpenOCDのインストール

UbuntuデフォルトのリポジトリにあるOpenOCDはSAMD5X系に対応していない。
自分でビルドする必要がある。

ソースの入手

以下からcloneする
https://sourceforge.net/p/openocd/code/ci/master/tree/
私がビルドしたコードのsha1はaf952850b549124202903a24116d413fa145a769であるが、SAMD5Xに対応したのはdeaf3d264123391d8fe5c4cccbf8fb8852e1be23からなので、このコミット以降ならどれでも構わないと思う。
分からなければmasterで良い。

依存ライブラリのインストール

OpenOCDは以下のパッケージに依存する。

  • make
  • libtool
  • pkg-config
  • autoconf
  • automake
  • texinfo

今回Atmel-ICEを使用するため、追加で以下のパッケージもインストールする。

  • libusb-dev
  • libhidapi-dev

ビルド

./bootstrap
./configure --enable-cmsis-dap
make
sudo make install

configureのenable-cmsis-dapはなくても上記のライブラリが入っていれば有効になるが、念の為つけておく。

OpenOCDの設定ファイルの作成

OpenOCDはカレントディレクトリにopenocd.cfgというファイルが存在すればこれを読み込む。
実行したいディレクトリで次のようなopenocd.cfgファイルを作る

interface cmsis-dap

set CHIPNAME samd51j20a
source [find target/atsame5x.cfg]

Atmel-ICEをPCに接続していない状態でOpenOCDを実行する

openocd

ファイルに問題がある場合、エラーメッセージが出力される。
ファイルに問題がないことを確認したらCtrl+Cで終了する。

PCと基板の接続

  1. Atmel-ICEの付属のケーブルをSAMと書いてある方に差す。
  2. ミニ四駆に電池と基板をセットする。走り出すと困るのでSDカードは抜いておく。
  3. Atmel-ICE付属ケーブルをミニ四駆の進行方向右上にあるピンに差す。
    ケーブルのコネクタはケーブルの途中についているものを使用する。
    ケーブルの赤い線がミニ四駆の外側になるように差す。
  4. Atmel-ICEをPCとUSBで接続する。
    この時Atmel-ICEの真ん中のランプが光る。
  5. ミニ四駆の電源を入れる。
    この時Atmel-ICEの左側のランプが光る。

OpenOCDの起動

OpenOCDを起動する。
udev/rulesを書けばsudoは要らないと思うが、設定が面倒なのでsudoする。

sudo openocd

別のターミナルを開く。
パスを書くのが面倒なのでカレントディレクトリにfirmware.elfを持ってくる。
telnetでlocalhost:4444につなぐ。

telnet localhost 4444

OpenOCDと接続ができたらfirmware.elfを焼き込む。
以下を実行する。

init
reset halt
flash write_image erase firmware.elf
reset run
exit

以上で書き込みまで終了する。
お疲れ様でした。

ハマったポイント

gcc-arm-none-eabiパッケージで入るGCCでビルドエラー

以下のエラーが出る

CC build/_frozen_mpy.c
LINK build/firmware.elf
/usr/lib/gcc/arm-none-eabi/6.3.1/../../../arm-none-eabi/bin/ld: error: /usr/lib/gcc/arm-none-eabi/6.3.1/../../../arm-none-eabi/lib/crt0.o: Conflicting CPU architectures 13/1
collect2: error: ld returned 1 exit status
Makefile:63: recipe for target 'build/firmware.elf' failed

gcc-arm-none-eabiをapt remove & apt autoremoveしてから手順に戻ること。
autoremoveまでしないとgcc-arm-embeddedのインストールに失敗する。

あとがき

あかまるさんの基板は完成度が高く、いろいろな部分に試行錯誤やアイディアでなんとかしてきた感じのところがあって非常に良い。
ぶっちゃけた話、技術書典で軽くお話を伺っただけも非常に面白かったので、本当にミニ四駆やるかわからないけど話面白かったし金を出したいな的な感じで基板をお分けいただいた。
実際に基板をいじるとまた楽しかったのだが、フレキ基板部分が消耗品感あるので、この基板がめちゃくちゃ人気出て定常的に基板手に入るようにならないかな?くらいの変なことを思いこの記事を書いた。
まぁ、なかなかそうはならないと思いますが、またイベントで基板売ってください。(今度はフレキだけほしいです。)
自分でも基板作れるようがんばります…。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?