Make Technology

Seeeduino XIAOが1日で壊れた→ブートローダを書き込んだら直った話

Make
スポンサーリンク

どうも、Reveです。
最近使っていたデバイス(Seeeduino XIAO)が急に動かなくなって困ったので、対処法を記事(備忘録)にしてみました。

今日のお題目

数か月前に購入したSeeeduino XIAOというマイコンボードを、重い腰を上げてようやく使い始めたですが、なんと1日でうんともすんとも言わなくなりました!?

電源を入れても全く動作せず、PCとUSBケーブルでつないでも認識されないと八方塞がりでした…orz

最終的にはまた動かせたものの少しクセが強めだったので、「ブートローダー再書き込み ふっかつのじゅもん」を備忘録として書くことにしました。

壊れた原因(?)

今も完全な特定には至っていないのですが、どうやら電源を消すタイミングでブートローダーが壊れる可能性があるようです。使っていたUSB電源アダプタが古い製品でコイル鳴きもしまくってたので、電源が不安定なせいもありそう…。

ブートローダー再書き込み

書き込み前の確認

では、ブートローダーの再書き込みに取り掛かる…前に一つ確認しておきましょう。

実は、公式で紹介しているXIAOのCOMポート復活の手段に「リセット」というものがあります。

Page Not Found | Seeed Studio Wiki

これは「RSTピンとGNDを素早く2回ショート(導通)させる」というもので、チップのブートローダーモードを起動することでポートを再認識できるようになると説明しています。やだー、簡単じゃないですか。早速試してみましょう!

画像はイメージです

~ (n回目のトライ) ~

画像はイメージです

残念ながら、うんともすんとも言いません。ここで諦めの悪い我々は、ネットサーフィンでさまよった挙句、とうとう「ふっかつのじゅもん(ブートローダー再書き込み)」という最終手段に至ったのです。

なお、リセットで復活したら、この後は全く必要ありませんwお疲れさまでした。

用意するもの

何をするにも道具は必要です。今回使ったものは以下の通りです。

  • ハードウェア
    • Atmel-ICE または ST-LINK
    • (はんだごて:SWDパッドと導線のはんだ付け)
  • ソフトウェア
    • Arduino IDE + Seeed SAMD Boards(ボードマネージャ)
    • Microchip Studio (旧Atmel Studio)

ハードウェア

ブートローダーの書き直しは基板裏面のSWDパッド経由で行われるため、SAMDシリーズのマイコンとのデバッグプローブを備えるAtmel-ICE、またはST-LINKが必要になります。家にたまたまAtmel-ICEがあったので、自分たちはそちらを使いました。

Atmel-ICEはこちらから購入できます。大体3万円。

Bitly

また、ST-Linkはこちら。こちらは1500円くらいで買えます。

Amazon | HiLetgo ST-Link V2 エミュレータ ダウンローダ プログラマー STM32F103C8T6 STM8 STM32 ケーブル付き [並行輸入品] | 産業・研究開発用品 | 産業・研究開発用品 通販
HiLetgo ST-Link V2 エミュレータ ダウンローダ プログラマー STM32F103C8T6 STM8 STM32 ケーブル付き が産業・研究開発用品ストアでいつでもお買い得。当日お急ぎ便対象商品は、当日お届け可能です。アマゾン配送商品は、通常配送無料(一部除く)。

値段が20倍くらい違うので、とりあえずXIAOを復元したいだけという方は後者がお勧め。ただ、この記事ではAtmel-ICEを使います(やり方はほぼ一緒)。

ソフトウェア

一方のソフトウェアはどれも無料です。

まずはArduino IDEのインストールが必須ですが、これを読んでる人は大体インストール済だと思うので飛ばします。続いてArduino IDEにXIAO(Seeed SAMDボード関連)のボードマネージャを追加しますが、こちらは前回の記事をご覧ください。

そして、Microchip StudioでSAMDマイコンの開発・デバッグ環境をインストールします。詳しい方法については、以下のURLをご参照ください。ただ、最初に選択するアーキテクチャ(マイコンの種類)をAVRからSAMに変える必要があります(よく分からなければ全てインストールでもOK)。

Microchip Studio for AVR® and SAM Devicesをインストール
Arduino IDEでATtiny85を扱える環境も作ったけど、割込み処理までは上手く扱えなかった。何かしらの方法(ライブラリ)はあるのかもしれないけど、見つけることができなかったのというのが正解かもしれないが。 ということで、Atmel

ハードウェアの接続

ソフトウェアをすべてインストールしたら、デバイス同士を接続しましょう。

まず、XIAOとAtmel-ICEをそれぞれUSBケーブルでPCと接続します。XIAOはType-Cコネクタなので注意。

XIAOのブートローダー書き込み用ピン(SWDパッド)は、実はUSBコネクタの裏側にあります。そのままではAtmel-ICEと接続できないので、はんだ付けで導線をくっつけるか、書き込み時にジャンパーピンなどを接触させます(ジャンパーピンでは不安定なので、はんだ付けがおすすめ)。

次に、Atmel-ICEのSAM側コネクタに付属のケーブルをつなぎます。10ピンの小さなコネクタの方をデバイスに挿します。ケーブルは両端でそれぞれコネクタの種類が違いますが、ピン数も形も異なるので一目瞭然です。

ケーブルをつないだら、SAMコネクタとXIAOを接続します。

赤線は、後ろ側の中央と接続

Atmel-ICEのコネクタが実は曲者で、公式のデータシートなんかを見てもどのピンが何番かとても難解なのですが、オス(ヘッダ)側のコネクタ穴を正面から見た配置と理解すれば良いかもしれません。まあ、赤線が1番と覚えたほうが断然わかりやすいですが。

Seeeduino XIAOAtmel-ICE
3V3Vcc(1)
GNDGND(3, 5, 9)
SWDIOSWDIO(2)
SWCLKSWDCLK(4)
XIAOとAtmel-ICEのピン対応

ピンが正しく配線されたら、Atmel-ICEのランプが2つ光るはずです。なお、6ピン側のコネクタはバラバラに配線されているので、一つ一つ配線を確認しながらつないでください。

ファームウェア書き込み

デバイス同士をつないだら、いよいよ最終段階に入ります。

初めにArduino IDEを開いて、ツールメニューからSeeduino XIAOを選択します。ほかの項目はそのままでOK。

シリアルポートが既に認識されてますが、手順は一緒

ボードを切り替えたら、書込装置を「Atmel-ICE over OpenOCD」にして、そのまま「ブートローダを書き込む」をクリック。

シリアルポートは認識されていないという体で

正常にブートローダーが書き込めたら、シリアルポートが復活しているはずです。
おめでとうございます。これでプログラムの書き込みも実行も正常にできるようになりました!

おまけ

そういえば、Seeeduino XIAO Expansion boardというSWDパッドも含めたすべてのピンにアクセスできるようにする拡張ボードがあるみたいです。

便利そうですね。こちらから購入できます。

Bitly

ちなみに、SWDパッドと接触しているピンは、スプリングプローブとかポゴピンとか言われたりします。Amazonでも購入できるようですが…。

Bitly

参考

Atmel-ICEによるSeeeduino XIAO Bootloaderのリカバリ

Atmel-ICEによるSeeeduino XIAO Bootloaderのリカバリ | Quest7
最近、Seeeduino XIAOをよく使っています。小型(2cm角)で、CPUがArm Cortex-M0+ 32ビット 48 MHz(SAMD21G18)と高性能なのが魅力です。

How to unbrick a dead XIAO using ST-LINK and OpenOCD (Seeed公式フォーラムより)

How to unbrick a dead XIAO using ST-LINK and OpenOCD
Hi, Using an inexpensive Chinese ST-LINK and OpenOCD for Windows, I was able to repair the XIAO bootloader. Here is a summary of the procedure. I hope it will ...
タイトルとURLをコピーしました