スケッチ書き込みの怪(解)

ゴールデンウィーク中から10日間程、スマイルステーション内臓DSoneのシリアル(UART)書き込みについて、悩んでおりました。

 

やあさん様より、詳しい解説が掲載されましたが、本記事の素となった事の顛末を(恥ずかしながら)事例として紹介します。(箇条書きで、順を追っての紹介です。)

 

1.DSoneR2を2台所有しています。

 

2.そのうち1台を、PIPO X9Sに組み込み、DSソフトウエアは正常に動作していました。

 

3.S88-masconを入手した事から、DSjoyの確認をしたく、手っ取り早く手元に有った「スマイルステーション内臓DSone」を書き換えて見る事にしました。

 

4.DSjoyのスケッチを用意し、Arduino IDEより(UART経由で)書き込みを試みると、エラーが出て書き込み出来ませんでした。

 

5.そこで、何らかの配線が足らないのかと思い、よく調べもせずにRTSCTSを接続しても状況は変わりません。今まで接続していた「TX、RX、GND」の3本に加え、「DTR」を接続せよとの指示により、再度書き込み確認をするも状況は変わらず。

 

6.ブートローダの書き込みをしていないかも知れないとの情報から、内臓DSoneに対して、(ICSP経由で)ブートローダ書き込みとスケッチ書き込みをすると、問題無く書き込み出来ました。DSソフトウエアの確認をすると、今度は何故か?COMポートは使えないとエラーを吐いています。

f:id:har_amc:20170515095935j:plain 書き込みアダプター2改(ICSP)にて書き込み実施。(旧型Nanoは事故死したので、新型Nanoになっています。)ピンヘッダ付いてるのに何でわざわざ基板に乗っているのか?それは今後のお楽しみ。コネクタ逆だよね!これは始祖鳥と同じで、元祖なのです。(開発当時は向きに関して、特に留意していなかっただけです。)

 

※この時点で、内蔵DSoneの機械的(電気的)故障を疑い始めました。

 

6.一旦、内臓品は置いておき、もう一台のDSoneを用い、UART経由でスケッチ書き込み確認をすると、問題無く書き込み出来ており、DSソフトウェアも問題無く動きます。 

f:id:har_amc:20170515092523j:plainaitendoで購入した、USBシリアル変換ボードを使用しています。

 

7.念の為、こちらにも(ICSP経由で)ブートローダとスケッチを書き込んだ後に、UARTでスケッチを書き込んでみると・・・、こちらも内臓と同じ症状が!!書き込み出来ません。

f:id:har_amc:20170515092506j:plain

オーノー!ヤッチマッタ!  IC壊れたか??? 正常に動くものが無くなった・・・、ので。

 

 

8.原因究明の為、ATmega328Pを交換してみる事に。

f:id:har_amc:20170515092826j:plain

 

 

 ポリイミドテープ(カプトンテープ等)で基板養生して、ハンダを満たし全体を溶かして取り外します。マスキングテープを使うのが一般的ですね。

f:id:har_amc:20170515092841j:plain新品のICを取り付けして、再度7の作業を繰り返し。やはり、状況は変わりません。

 この時点で同じ挙動となった為、IC故障は「白」と判断。

 

9.今度は、内蔵したUSBシリアルの基盤が故障か?とも思い、これも交換するが状況は変わらず。これも「白」。

 

10.打つ手を無くし、状況をフジガヤさんに説明して、解説を求めると・・・、「ICSPでスケッチを書き込むと、以降UART経由でのスケッチ書き込み出来ない(通信自体は出来る)」との回答が!

 

 11.双方に対し、「ICSP経由でのブートローダ書き込み」と、「UART経由でのスケッチ書き込み」を実施。その後、共にスケッチ書き込みと、DSソフトウェアの実行を確認。問題有りません!

 

※追記:何て事の無い、問題だったみたいです。以前の記事で、こちらに別解説有り。

 

たまたま、スケッチ書き込みの状況の違う2台(ICSP及びUART)が、「コンパイル通らない病(苦手意識)」の蔓延する戦場に投下され誘爆し予想外の大爆発になった模様。

もし仮に、反対の物を内蔵していたら、何も問題にならなかった事でしょう。神様が、わざわざ勉強させてくれている様です。有り難い事です。

 

 

※結論としては、「ICSPでスケッチを書き込むと、以降UART経由でのスケッチ書き込み出来ない」という事。DSdecでは、スマイルコネクタ(ICSP経由)で「ブートローダとスケッチを連続で書き込んだ」ので、そのままの手順でやっていました。

 

 対策は、解説の通りに「目的(対象物)と、それに対する正しい書き込み方法を理解する」事ですね。

 

この事例が、皆様の役に立ってくれれば幸いです。

 

 

実はこの数週間で、「コンパイル通らない病」のワクチンも投下され、治癒の方向に向かっています。当初はライブラリを個別で加えていましたが、現在は必要な物はスケッチに同梱されているので、別投入は不必要になっているのです。環境を揃えようと、古い物でも何でもかんでも加えて行く事はやめましょう。シンプルに必要な物だけを「一つ一つ」ライブラリに加えて行くという事を心がけます。