PICNICファームウェアの更新 | |
■PICNICファームウェアの更新
2008年06月09日 8:48 更新
|
●PIC16F877Aバージョンの不具合について(2004/4/29追記)
<書き込み不良の原因> <回避方法> <まとめ> ●更新作業の概要4.1.1 作業手順PICNICファームウェアは、以下の作業手順を経て、改変・更新することが可能です。 (1)MPASM版ファームウェア(アセンブリ言語で書かれていてMPASMアセンブラでアセンブル可能なもの。*.asm)を編集 今回のような小規模な更新作業ではなく、実際の規模の「開発環境」では、上記(3)(4)の手順を省くため、ICE(In-Circuit Emulator:インサーキット・エミュレータ)と呼ばれる、開発マシンと連携して動作するようなエミュレーションCPUをターゲット上のCPUソケットへ挿した状態で動作チェックを進めることが多いです。 PICマイコン用のICEキットも存在しますが、個人で購入するには高価です。 4.1.2 更新のための環境・必要機材 PICNICファームウェア更新のために必要な環境・必要機材は、主に以下のようなものです。今回はWindows上での開発を前提としていますが、UNIX上で動くGNUなもの(GNUPIC)が存在するようです。 [A] プログラム編集、MPASM実行環境 ・現在動作中のファームウェアのアセンブリ言語ファイル [B] PICマイコン(PIC16F877-20/P IC表面の刻印を確認)への書き込み ・周辺拡張オプションキットに付属している、PIC16F877-20/P(IC表面の刻印を確認)※新出荷のPICNICキットに付属の 877AバージョンのIC(PIC16F877A-1/P)は、ver.3のライタでは、書き込みできません。
<写真1> PICマイコンライタ ver.3(ROM rev.B〜Dまで各種あり)
<写真2> DIP300mil 40pin ゼロプレッシャーICソケット(TEXTOOL)
・前章のPICNIC動作試験(§3.2 動作確認に必要なもの)と同様の環境・機材が必要。 ●MPLAB(MPASM含む)のセットアップMPLAB(IDE)の在処/ダウンロードからインストールまでの手順/MPASMの起動チェック 4.2.1 MPLAB(IDE)の在処 Microchip社製 MPLAB PICマイコン統合開発環境(IDE)ver6.x以上は、以下からダウンロード可能です。現在のところ、Windows用のみリリースされているようです。 Microchip インデックス(リンク集) 4.2.2 ダウンロードからインストールまでの手順(2004年4月19日改訂) 以下、MPLAB ver5.70のセットアップを例にして手順を説明します。(適宜 ver6以上の場合と読み替えて対応して下さい)。 (1)MPLAB ver5.70のFullセットアップZIPファイル(mp57full.zip : 13MByte)を取得する。ダウンロード先は、例えば C:\TMP などとしておく。 (2)ダウンロードしたセットアップ用ファイルはZIP形式で圧縮されているので、WinZIPなどの解凍ツールを用いて、一時フォルダへ展開する。 ※WinZIP ver8.1評価版のダウンロードはここをクリック! 自動的にダウンロードが開始される。[開く]を選択すると、セットアップまで自動的に実行される。メニューはClassicとしておくと良い (3)WinZIPが解凍ツールになっている場合、ダウンロードしたMPLABのZIPファイル(mp57full.zip)のアイコン上で 右クリック→WinZip→extract here を選択すると、一時フォルダに、セットアップ実行可能ファイル(MP57000full.exe)が生成される。 (4)(3)で生成した MP57000full.exe をダブルクリックして、セットアップを実行。 (5)最初のいくつかの質問は、すべてdefault値で答えていってよい。途中で、Component select の場面になるので、ここでは、最初の2つと最後の1つ、つまり、
の3つだけチェックし、他は全てチェックを外して下さい(チェックを外さないと、WinXP SP2の場合、Windowsの再起動に失敗しブルースクリーンとない非常に困ったことになります)※ MPLABのセットアップするパッケージを選択 (6)セットアップの最後で再起動を求められるので、他の全てのアプリケーションで未保存のファイルなどがないことを確かめた後、再起動する。 (7)セットアップが終了すると、[プログラム]→[Microchip MPLAB]内に、MPLAB IDE のツール群が設置されている。 (8)できれば、デスクトップ上に MPASM for Windowsのショートカットアイコンを設置しておくと便利である。(*.asmファイルのドラッグ&ドロップによるアセンブルが可能。便利!)
※2004年4月19日改訂:Microchip社のサイト構成が大幅に変更されたため、リンク調整ならびにlocalcopyを配置しました。 4.2.3 MPASMの起動チェック IDEに含まれる、MPASM PICマイコン用マクロアセンブラ(MPASM for Windows)の起動をチェックしておきましょう。 (方法1)上述4.2.2 手順(5)にて、ショートカットアイコンがデスクトップ上に設置されている場合は、それをダブルクリックして実行する。 (方法2)[スタート]→[プログラム]→[Microchip MPLAB]内の、MPASM for Windowsのアイコンを選択して、実行する。 以下のような、MPASMの起動画面(図1)が表示されることを確認してください。
<図1> MPASMの起動画面 ●MPASM版ファームウェアのアセンブルMPASM版ファームウェア(ver1.2)のダウンロード/MPASMによるアセンブル/アセンブルによって生成されるファイル群 4.3.1 MPASM版ファームウェア(ver1.2)のダウンロード ※PICNICファームウェア(ver1.2)の概要については、先に§1.2を参照してください。 PICNIC ver.2用のMPASMアセンブラ向けファームウェア(ver1.2)は、以下からダウンロードしてください。 アセンブリソースファイル(v12.asm) 今後の演習にともなう開発作業のため、PC上の適当なドライブにPICマイコン開発用のフォルダを新規作成しておきましょう。(例:E:\Project\PICNIC など) ※フォルダ名に関する注意:ASM/HEXファイルの置かれているディレクトリについて、フォルダ名に日本語等が含まれていると、MPASMならびに後述のPICプログラマは、正しくASM/HEXファイルをロードできない場合があるので、このようなフォルダ以下にファイルを格納しないで下さい。(2005/4/29追記)
開発途上で、編集を誤って行い、正常動作ができなくなったり、(PICNICキット購入時の)初期バージョンの状態に戻したい場合などは、上のリンクから改めてファームウェアのアセンブリソースファイルの原本をダウンロード&アセンブリすることで、開発の最初の状態に戻ることができます。 開発途上のバージョンの、ソースファイルを保存しておくことは重要です。例えば4月27日に正常動作を確認したバージョンを保存しておきたい場合、そのアセンブリソースファイル名を、例えば v12-0427.asm などというようにしてコピーしておくと、後で行った変更で正常動作しなくなった場合、この時点のバージョンまでは「戻ることができる」ため、便利です。 4.3.2 MPASMによるアセンブル いよいよMPASMアセンブラを用いて、PICNICファームウェアのアセンブルを行って、HEX形式ファイルを生成してみましょう。 最初は、ダウンロードしたオリジナル(v12.asm)のまま、アセンブルを試みます。 (1)MPASMを起動する。 (2)[Source File Name:] のテキストボックス中に、v12.asmファイルを指定するか、[Browse...]をクリックして、アセンブルしたいv12.asmの在処を指定する(図2)。
<図2> ソースファイルの指定 (3)[Options:]の各パラメータは、default値のままでOKである。必要があれば変更する。 (4)[Assemble]ボタンをクリックして、アセンブルを実行する。MPASMのアセンブル中を示す小さなダイアログが現れて、アセンブル途中の様子が逐次表示される(最近のPCは高速なので瞬く間にアセンブルは終る)。最後に、 Assenmby Successfull. と表示が行われ、アセンブルは終了する。[OK]ボタンをクリックして、MPASMは終了。
<図3> MPASMのアセンブル中ダイアログ ※Windowsのエクスプローラ(フォルダ)上のファイルアイコン(v12.asm)を、MPASMのショートカットアイコン上へドラッグ&ドロップすることで、アセンブルを実行させることも可能である。(ドラッグ&ドロップ可能なのはMPASMである。PICライタソフトウェアは、ドラッグ&ドロップには対応していないので注意。2005/4/29追記)
4.3.3 アセンブルによって生成されるファイル群 上述のアセンブルが正常に完了すると、以下のようなファイル群が生成される。このうち重要なのは、PICライタによってPICマイコン上へ転送する、機械語ファイル v12.hex である。 v12.hex : Intel-HEX形式の機械語ファイル ●PICライタによる書き込みPICマイコンライタ ver.3/ ライタソフトウェア(PIC programmer ver.3)のセットアップ/PC ⇔ PICライタ間の接続/PC と PIC programmer間の通信状況の確認/PIC16F877へのv12.hex HEX形式ファイルの書き込み 4.4.1 PICマイコンライタ ver.3 PICマイコン PIC16F877へのファーム書き込みには、秋月電子製 PICマイコンライタ ver.3を使用します。ライタ用の電源としてはACアダプタ(DC15V)を使用します。 <写真3> PICマイコンライタ ver.3(JP2未設定) 4.4.2 ライタソフトウェア(PIC programmer ver.3用 ver2.9.5)のセットアップ HEX形式機械語ファイルをPICライタへ送り込むには、専用のPCライタ用ソフトウェアが必要です。Windows用の旧版(ver2.9.5)を用いることで、ノートPCのオプションとして良く用いられるシリアルポート付きポートレプリケータ、IBM ThinkPadシリーズなどでみられるドッキングステーション、ならびにUSB⇔RS-232Cシリアル変換アダプタなどを用いた場合のCOM5:利用が、PICライタを用いて書き込み可能となるようです。 以下、PIC programmer リリース2.9.5のセットアップを前提にして手順を説明します。 【注意点】秋月電子のサイトには、ver2.9.21のバージョンがダウンロード可能となっているが、これはPICプログラマ上のファームウェアが対応していないため使用できない。以下のローカルコピーからver2.9.5をダウンロードして利用してください(2004年4月25日追記)。 (1)PIC programmer リリース2.9.5のセットアップZIPファイル(PIC programmer ver.2.9.5のダウンロード localcopy (picpgm_win_2.9.5.zip) )を取得する。ダウンロード先は、例えば C:\TMP などとしておく。 (2)ダウンロードしたセットアップ用ファイルはZIP形式で圧縮されているので、WinZIPなどの解凍ツールを用いて、一時フォルダへ展開する。 (3)WinZIPが解凍ツールになっている場合、ダウンロードしたPICプログラマのZIPファイル(picpgm_cd.zip)のアイコン上で 右クリック→WinZip→extract here を選択すると、一時フォルダに、セットアップ実行可能ファイル群(setup.exeなど)が生成される。 (4)(3)で生成した setup.exe をダブルクリックして、セットアップを実行。いくつかの質問は、すべてdefault値で答えていってよい。 (5)セットアップが終了すると、[プログラム]→[Akizuki]内に、PIC Programmer ver.3 のツールが設置されている。余裕があれば、デスクトップ上に
PIC Programmer ver.3のショートカットアイコンを設置しておくと便利である。 4.4.3 PC ⇔ PICライタ間の接続 PCとPICライタ間は、シリアルケーブルによる接続を行う必要がある(Ethernetではない)。ちょうど、PC ⇔ PICNIC をブートストラップモードによって設定を行う際に、シリアルケーブルで接続した場合と、殆ど同じである。 PCとPICライタ間を、RS-232C D-Sub9ピン オス⇔メス ストレート接続ケーブルで接続する。PC側にシリアルポートが用意できない場合、USB接続の仮想シリアルポートアダプタ(COM5:などに割り当てられる)を購入し、パソコンに接続・設定する(パソコンショップで購入可能)。USB仮想シリアルポートアダプタの種類によっては、正常にシリアルポートとして認識できない場合もあるので、その場合には担当まで相談して欲しい。 <写真4> PC側ポートにシリアルケーブルを接続 <写真5> PICライタ側ポートにシリアルケーブルを接続 4.4.4 PC と PIC programmer間の通信状況の確認 PC と PIC programmer間が正常に通信できているか、ならびにPICライタソフトウェアによって、書き込み対象となるPICプログラマが認識されているか、などの各種通信状況の確認を行います。 (1)PIC programmerのDCプラグへACアダプタを接続し、ライタ側の電源を投入する。ライタ基板上部の Power(D1)LEDが点灯することを確認する。 (2)PC上で、PICライタソフトウェアを起動する。以下のような起動画面が現れる(以下の例では、COM4にてライターが検出されている)。 <図4> PICライタソフトウェアの起動画面 (3)[オプション(O)]→[COMポート設定(C)]を選択し、プログラマが接続されているシリアルポートを選択する。デスクトップマシンなどで標準シリアルポートが存在する場合や、ノートPCのポートレプリケータ、ドッキングステーション経由などのシリアルポートの場合は、COM1:あるいはCOM2:にて接続されているはずである。他方、USB仮想シリアルポートアダプタ経由による接続では、COM5:以降で認識可能となる場合が多い。 (4)正常にPICライタが認識されると(例えばCOM2:の場合)、下段のメッセージボックス領域に、 ライターを COM2 に検出しました。 あるいは COM2:を選択しました。 と表示され、右下端の黄色のテキストボックスに、現在接続中のシリアルポート番号ならびにPICプログラマ上の制御ファームウェアのバージョンが表示されている。例えば以下のようである。 COM2: AKIPIC-PGM V3.00
<図5> PICライタソフトウェアの認識に失敗している状態 <図6> PICライタソフトウェアの認識に成功した状態(この場合はCOM2ポートに接続されている。ライタROMのrevisionによって、PGMV3.00--4.00と表示される場合あり) 4.4.5 PIC16F877へのv12.hex HEX形式ファイルの書き込み(2004/9/9追記、2005/4/29修正) (1)PICライタソフトウェアのウィンドウ右上端の[デバイス設定]を、PIC16F877へ設定する(重要)。 <図7> 書き込みデバイスを、PIC16F877 へ設定
(2)PICライタ基板右上端の書き込みPICマイコンタイプの選択JP2を 1-2短絡へ変更する(重要)。PICライタソフトでも、「ボード情報」の小さいウィンドウに、その設定情報が表示されている。 <写真6> PICマイコンタイプの選択JP2を 1-2短絡へ変更 (3)PICライタの40pinソケットへ、周辺拡張オプションキットに付属している、PIC16F877-20/P のICを挿入する。※PICNIC基板上から取り外したPICマイコン PIC16F877A-1/Pは使用しない! IC端に半円の切り欠きがあるほうが、向かって上になるように挿入する。方向を間違えると、PICは破壊されます。しっかり根元までピンが入っていることを確認した後、ゼロプレッシャーICソケットのレバーを下げてピンを固定する。 <写真7> PIC16F877-20/P を ICソケットのレバーを下げて固定
(4)ウィンドウ左上端の[Hexロード]ボタンをクリックし、HEX形式機械語ファイルを指定する(v12.HEX)。[開く]ボタンを押すと、プログラムメモリ、EEPROMメモリがロードされた内容(v12.hex)に更新される(3FFF, FFなどでfillされた状態ではないことを確認せよ)。 ※PICライタソフトウェアは、ドラッグ&ドロップには対応していないので注意。2005/4/29追記 (5)PICライタソフトウェアのウィンドウ右端の[Config. Word設定]を、以下の設定値へ変更する(重要)。
(6)PICライタソフトウェアのウィンドウ右上端の[プログラム]ボタンを押して、書き込みを開始する(所用時間:約3分)。実際の書き込みを行う前に、既存のファームウェアを[上書きしますか?]と聞いてくる場合があるので、[はい]と答えておく。 (7)書き込み中は、PICライタ基板上のBusy(D2)LEDが点灯している。書き込み終了後、自動的に書き込み内容と実際のPICマイコン上のメモリとの照合(ベリファイ)を行い、結果をレポートする。 ※書き込みエラーがおこる場合、書き込みソフトウェアと、ライタのバージョン、ならびにPICマイコンの種別の不一致が考えられる。書き込みが正常に行えるのは以下の組み合わせである。 ・書き込みソフトver2.9.5+ライタver.3+PIC16F877-20/P ●更新後ファームウェアによる動作試験PICNIC側ICソケットへゼロプレッシャーソケットを重装/プログラム更新済みPICによる動作試験 4.5.1 PICNIC側ICソケットへゼロプレッシャーソケットを重装 ※注意点:PICNIC側ICソケットへマイコンを抜き差しするときには、必ず、PICNICへの電源供給をオフにしておくこと!! 電源が入ったまま(プログラムが実行されている状態で)、ICを抜き差しした場合、ICが破壊される可能性が高い。 PICNIC側のPIC-ICソケットは何も差さっていない状態にする。ここへゼロプレッシャーソケットを重装する。 ※DIP300mil 40pin ゼロプレッシャーICソケット(TEXTOOL)(←PICNIC周辺拡張オプションキットに同梱。) ※重装時のポイント:PICNIC側ICソケットへゼロプレッシャーソケットを重装する際、PICNIC基板の左下端の、LCD輝度調整用VR1半固定抵抗が少々邪魔になる。そこで、予め、基板向かって左手方向へ、VR1をちょっと指で倒しておく。(VR1の足を折らない程度で止めて置こう。少し勇気が必要である。) <写真8> LCD輝度調整用VR1半固定抵抗を、ちょっと指で倒しておく
<写真9> PICNIC側ICソケットへゼロプレッシャーソケットを重装 4.5.2 プログラム更新済みPICによる動作試験 先の§4.4.5 にてプログラム更新を行ったPICマイコンを用いて、§3.4 動作確認、ならびに§3.5 ブラウザ経由での制御 が、これらの場合と同じ状況で正常に行えるかどうかを確認する。(EEPROMの状態は初期化されているので注意) <写真10> PICNIC側ICソケットへ更新済みPICマイコンICを挿入 ●ファームウェア更新の例更新例1:バージョン番号の変更/更新例2:ファームウェア更新者の表示 4.6.1 更新例1:バージョン番号の変更 ファームウェアv12.asmの47行目ならびに7272行目に、ファームウェアのバージョン番号の定数定義を行っている箇所がある。この値は、それぞれ、書き込み時EEPROMの値、ならびにweb制御時のdefaultロード時の値として、実際のPICマイコンに保存されることとなる。(HEXファイルロード後、PICライタソフトウェアのEEPROMデータエリアならびにプログラムメモリ0x1F00以降の内容を詳しく見てみよ) <変更前> 47行目: DE 1,2,0,0 ; Farmware Version x,x,x,x 7272行目: DT 1,2,0,0 ; Farmware Version x,x,x,x この部分の4ワード目を 0→1 に変更し、バージョン番号の変更を行ってみよう。 <変更後> 47行目: DE 1,2,0,1 ; Farmware Version x,x,x,x 7272行目: DT 1,2,0,1 ; Farmware Version x,x,x,x ※ヒント:この4つの組は最初の2つがメジャーバージョン番号、後ろの2つがマイナーバージョン番号という分け方になっている。従って、ver1.3というメジャーバージョンがリリースされる場合を想定し、ユーザは後ろの2つのバイトだけ変更するようにする。なお、各番号はバイト範囲で値の設定が可能なので、マイナーバージョン番号は 0.0 〜 255.255 まで付けることができる。 これを、v12-0427.asmなどという名前で保存し、MPASMでアセンブル後、PICライタでファームウェアを更新し、PICNIC基板へ更新したPICマイコンを実装し、webブラウザで、バージョン番号が変更されていることを確認しよう。
<図8> バージョン番号更新後のPICNIC リモートI/O webブラウザ画面の例 4.6.2 更新例2:ファームウェア更新者の表示 ファームウェアv12.asmの7255行目、7256行目に、このファームウェアの著作権を表示するための文字列定義を行っている箇所がある。 <変更前> 7255行目: DA "<P><HR>Copyright (c) 2000-2001 by <A
HREF=\"http://www.tristate.ne.jp\">TriState Co.,Ltd.</A>
" ※ヒント1:DB 06,8A を定義することで、HTMLメッセージ出力時に[CR]+[LF]のコードが生成され「改行」が行われる。webブラウザ側としてはHTMLにおける「改行」は表示上、意味がない。 ※ヒント2:DA擬似命令にて文字列定義を行うためのダブルクオテーション "" の内部に、HTMLのアンカータグのためのダブルクオテーションを含める場合、\" としてquoteしておく。これが面倒な人の中では、シングルクオート ’ を用いることもある(基本ワザ) この7255行と7256行目の間に、新たな行を挿入し、7255行目を参考にして、ファームウェア更新者の表示を行ってみよう。例えば、学籍番号 02TA699X Nagano TAROさんの場合は、以下のようになるだろう。 <変更後> 7256行目: DA "<BR>Firmware Modified by <A HREF=\"http://sugsi.jp/\">Nagano TARO (02TA699X)</A> " 7257行目: DB 06,8A ;,13,10 これを、v12-0427.asmなどという名前で保存、アセンブル、PIC書き込みした後、webブラウザで、リモートI/O画面の最下段にて、ファームウェア更新者が表示されていることを確認しよう。
<図9> ファームウェア更新者が表示されている様子 ※ヒント3:この調子で、webブラウザへ送出するHTML形式の部分を増やしていくと、様々な表示が可能となるが、(1)PICマイコン上の使用可能メモリの制限、ならびに(2)TCP/IPの1メッセージ送出毎(ESTAB00〜04の各ステップ)で送出可能なバイト数の制限、のために、無制限にメッセージ量を増やすわけにはいかない。
|
IT技術演習(院)−PICNIC− by Katsumi WASAKI is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 2.1 Japan License.
|