pic18blaster の変更点


[[2010-10]] AVRを使った[[OpenOCDアダプターはこちら>hid_blaster]]

----

*PIC18F2550/14K50を使ってARM用JTAGアダプター(FlashROMへの書き込み、OpenOCD用デバッガ)を製作する。 [#x5535f07]

【Windowsパソコン(OpenOCDホスト)】~
   |~
   |(USBケーブル) ~
   |~
   V~
http://psp.dip.jp/web/jpg/ae18f2550.jpg
===JTAG CABLE===>
http://psp.dip.jp/web/jpg/ARM/STM32.jpg

写真は[[秋月18F2550モジュール:http://www.akizukidenshi.com/catalog/g/gI-02161/]]   と   付録基板 CQ-STARM(STM32 CPU)

18F14K50でも製作可能

http://psp.dip.jp/web/jpg/PIC/14k50.jpg

■ 概要

   これは、OpenOCD の DLL ハック(実験)です。
   即ち、外部に DLL を置いて、JTAGアダプターのドライバーの分離実装を試みています。

■ 現在のステータス

   とりあえず、PIC18F2550/14K50を使用したJTAGアダプターが動いています。


■ 試し方

   WindowsXPを用います。

   PIC18spxファームを焼いたPIC18F14K50(もしくはPIC18F2550)基板と、
   JTAGが使用できる適当なARM基板を以下のような対応でJTAG接続しておきます。

-結線は、
   (PICライター機能の)         ARM基板 JTAG端子
           MCLR  ------------- TMS
           PGM   ------------- TDI
           PGD   ------------- TDO
           PGC   ------------- TCK
-となります。これ以外のnTRSTピンなどはまだサポートしていません。(USB-Blasterと同様)

 ARM側は3.3Vなので、PIC側の電圧に注意してください。(5Vは危険です)
-PIC側にPIC18F2550を用いるときは、電圧変換の必要が生じます。
-参考例としては、USB-Blaster(もどき)の実装における、抵抗分圧を利用する方法と、
-あまりお勧めしませんが、PIC18F2550を3.3V駆動する方法などがあります。(18LF2550を使えば規格内です)

   hidblast/ ディレクトリの ocd.bat あるいは、 ocd2.bat を起動して、openocd.exeの吐き出すメッセージ
   を確認することが出来ます。

   正常に接続出来ているようでしたら、telnetで localhost:4444 番に接続して、OpenOCDコマンドを実行して
   みてください。


■ ディレクトリ構成

 hidblast-+ ソース.
          |
          |.\helper\   ヘッダーファイル.
          |.\jtag\     ヘッダーファイル.
          |.\openocd_patch\  openocd本体側作成用の改造点


■ プログラムの再ビルド方法

   WindowsXP上のMinGW-gccコンパイラを用いてmakeしてください。
   makeすると、hidblast.dll が作成されます。

   openocd.exe本体を再ビルドする方法は、以下のURLを参照してください。

-http://hp.vector.co.jp/authors/VA000177/html/2010-09.html
   
   今回の改造部分ソースはopenocd_patch/ ディレクトリに置いています。

   Linux上でのビルドオプションは、こんな感じです。
   $ ./configure \
       --build=i686-pc-linux-gnu \
       --host=i586-mingw32msvc \
       --enable-dummy

   出来上がった openocd.exe 本体は、ドライバーとして、同一ディレクトリに存在する hidblast.dll を
   起動時に呼び出します。(存在しなければ、dummyドライバーのみが組み込まれます)


■ 現状の問題点

   まだ遅いです。
   不安定です。

■ ライセンス

   OpenOCDの配布ライセンスに準じます。


■ 展望

   hidblast.dll ファイルを(自力で)差し替えるだけで、自作デバイスがサポート可能になります。

   (たとえばATtiny2313を使用したJTAGアダプターなどをサポート出来る可能性があります)

   hidblast.dll のエントリーポイントは、
      DLL_int get_if_spec(struct jtag_command **q);
   だけです。引数のstruct jtag_command **qのqには、openocd本体のjtag_command_queueという
   グローバル変数のアドレスを渡します。
   戻り値は、(intになっていますが) ドライバー記述構造体のアドレスになります。


*ダウンロード(仮) [#abc45486]


|[[pic18blaster.zip:http://psp.dip.jp/web/upload/PIC/pic18blaster.zip]]|WindowsXP,MinGW用ソース、実行ファイル、openocd本体改造パッチ|

-数時間〜半日おきに更新していますので、古いと思ったら最新を取得してみてください。
-数日おきに更新していますので、古いと思ったら最新を取得してみてください。

~
~
~
~
~
~~
~
~
*おまけファイル [#p70fb18a]

-以下のファイルは、sa89a.net様の[[USBブラスターもどき:http://sa89a.net/mp.cgi/ele/ub.htm]]と同一ハードウェアにフィットさせたものです。

|[[hid_blaster.zip:http://psp.dip.jp/web/upload/PIC/hid_blaster.zip]]|WindowsXP,MinGW用ソース、実行ファイル、openocd本体改造パッチ|

-PIC側ファームウェアには、pic18spxのものではなく、hid_blaster/firmware/picmon-18F2550.hex を使用してください。
-上記pic18blaster.zipファイルとの違いは、ファームウェア側のJTAG:TMSの結線がPORTC.6からPORTB.3に変更されているのみです。


-このアーカイブでは高速化は行っていません(8kB書き込みに約30秒かかります)
-高速化するには、上記 [[pic18blaster.zip:http://psp.dip.jp/web/upload/PIC/pic18blaster.zip]] のファームウェアを修正して再ビルドしてください。
 #define	ALTERNATE_PGxPIN_ASSIGN	1	// PGC,PGD,PGMの結線を入れ替えます.
-Makefile の18F14K50を18F2550に変更してビルドします。


~
~
~