Top
HIDaspx
DownLoad
HIDasp高速化
制作
AVR関係
AVR_Monit
AVR_term
W32_term
HIDmon88
HIDtester
usbRS232
Arduino2313
デジタルテスター
ATmega88生活
KeyBoardマニア
KeyBoardマニアII
Arduino400
PICライター
ARMライター
赤外線リモコン
ARM
STM32ブートローダー
STM8S-Discovery改造
STM8S-OpenOCDライター
LPCXpresso
LPC用ブートローダー
NXP用LPCUSB
NXP用ブートローダー
MARY基板
LPC1114FN28
OpenOCD JTAGアダプター
OpenOCDビルド方法
arm-gccビルド方法
mapleIDEの改造
libmapleで仮想COM
PIC32
PIC32MX
Pinguinoで遊ぼう
ブートローダーを作る
シリアルブートローダー
USB仮想シリアル
USBカスタムデバイス
USB簡易モニター
USBオシロスコープ
USBホスト
PIC32でBluetooth
USBAudio
USBStudy
VGA出力に挑戦
BASICを動かす
WinUSB
勝手に改蔵*PIC32
PIC18F
HIDブートローダー
AVR/PIC両用ライター
ARMライター
usb汎用クラス
usbシリアル変換
usbキーボード変換
sdccを使いこなす
mcc18を使いこなす
HIDmon-2550
HIDmon-14K50
PICmonitor
試行錯誤の記録
UBWを試す
旧HIDboot
PIC18F2550試用記
PIC18F4550試用記
その他マイコン
NEC78K
RX62N
SH2A
H8
FM3
XPからubuntuに乗り換え
Android
Xen-hypervisor
Windows8カスタマイズ
開発日記
2015-04
ノウハウ
AVRUSB_Tips
HIDasp情報
汎用USB-IO
・
リンク
フリースペース
ゲストブック
旧コンテンツ
WinVista
インターフェース考
最新の20件
2022-07-25
2008-10
HIDasp高速化
H8/3048F
AutoTicketLinkName
2021-12-11
FormattingRules
2021-12-08
PukiWiki/1.4/Manual/Plugin/O-R
PukiWiki/1.4/Manual/Plugin/L-N
PukiWiki/1.4/Manual/Plugin/V-Z
PukiWiki/1.4/Manual/Plugin/A-D
PukiWiki/1.4/Manual/Plugin/E-G
PukiWiki/1.4/Manual/Plugin/S-U
PukiWiki/1.4/Manual/Plugin/H-K
2020-02-23
YukiWiki
PHP
PukiWiki
WikiWikiWeb
2018-12-19
SandBox
InterWiki
2015-05-07
2015-04
2015-05-02
MenuBar
編集
差分
hid_blaster の編集
-- 雛形とするページ --
(no template pages)
[[2010-10]] [[pic18blaster]] [[arm_blaster]] [[STM8S(改)OpenOCDライター>stm8s_blaster]] ---- *ATtiny2313(HIDaspxハードウェア)を使ってARM用JTAGアダプター(FlashROMへの書き込み、OpenOCD用デバッガ)を製作する。 [#k091115f] http://psp.dip.jp/web/jpg/wsn216.jpg ((画像は [[wsnak:http://www.wsnak.com/]] 様が販売している [[WSN216基板:http://www.wsnak.com/kit/216/index.htm]] )) ===JTAG CABLE===> http://psp.dip.jp/web/jpg/ARM/STM32.jpg ■ 概要 これは、OpenOCD の DLL ハック(実験)です。 即ち、外部に DLL を置いて、JTAGアダプターのドライバーの分離実装を試みています。 ■ 現在のステータス 低速ですが、とりあえず、ATtiny2313を使用したJTAGアダプターが動いています。 現在、8kBファームの書き込み時間は3.4秒程度にまで高速化しています。 (USB2.0HUBを通した状態での計測です) ■ 特筆すべき点 -[[HIDaspx>HIDaspx]]のファーム差し替えのみで実現しています。((但しAVRチップには3.3Vを供給する必要があります)) -HIDaspx AVRライターとしては、今までどおりに使えます。((ファームウェア容量節約のため、若干の速度低下があります。)) -[[PICライター>PICspx]]として、PIC18Fへブートローダーを書き込む用途に対しても今までどおりに使えます。 ■ 試し方 試行にはWindowsXPを用います。 HIDaspx ハードウェアを用意して、ファームウェアのみ、下記のものに差し替えておきます。 hid_blaster/firmware/main-12.hex http://psp.dip.jp/web/jpg/AVR/sch-2313.png 註:上記回路図は5V駆動になっていますが、実際は3.3Vレギュレータを入れて3.3V駆動する必要があります。 -ATtiny2313を5V駆動にする場合は、sa89a.net様の[[USBブラスターもどき:http://sa89a.net/mp.cgi/ele/ub.htm]]のように抵抗分圧する手法もあります。 結線は、 ATtiny2313 ARM基板 JTAG端子 PB7 ------------- TCK PB6 ------------- TDI PB5 ------------- TDO PB4 ------------- TMS となります。これ以外のnTRSTピンなどはまだサポートしていません。(USB-Blasterと同様) (上記4本の線は直結でも動作しましたが、100Ω程度の直列抵抗を入れてショート事故を防ぐようにする ほうが安全です) ARM側は3.3Vなので、AVR側の電圧に注意してください。(ATtiny2313側も3.3Vにする必要があります) hid_blaster/ ディレクトリの ocd.bat あるいは、 ocd2.bat を起動して、openocd.exeの吐き出すメッセージ を確認することが出来ます。 -ocd.batは書き込みターゲットSTM32マイコン用、ocd2.batは書き込みターゲットLPC2388マイコン用の起動ファイルです。 正常に接続出来ているようでしたら、telnetで localhost:4444 番に接続して、OpenOCDコマンドを実行して みてください。 ■ ディレクトリ構成 hid_blaster-+- ソース. | +--helper\ ヘッダーファイル. +--jtag\ ヘッダーファイル. | +--firmware\ ATtiny2313側のファームウェア (main-12.hexを焼きます) | +--openocd_patch\ openocd本体側作成用の改造点 ■ プログラムの再ビルド方法 WindowsXP上のMinGW-gccコンパイラを用いてmakeしてください。 makeすると、hidblast.dll が作成されます。 -openocd.exe本体を再ビルドする方法は、[[ここ>openocd-build]]を参照してください。 今回の改造部分ソースはopenocd_patch/ ディレクトリに置いています。 Linux上でのビルドオプションは、こんな感じです。 $ ./configure \ --build=i686-pc-linux-gnu \ --host=i586-mingw32msvc \ --enable-maintainer-mode \ --enable-dummy 出来上がった openocd.exe 本体は、ドライバーとして、同一ディレクトリに存在する hidblast.dll を 起動時に呼び出します。(存在しなければ、dummyドライバーのみが組み込まれます) ■ 現状の問題点 まだ遅いです。 HIDmon / HIDaspx の機能を残してはいますが、コードサイズ節約による速度低下があります。 ■ ライセンス OpenOCDの配布ライセンスに準じます。 ■ 展望 -hidblast.dll ファイルを(自力で)差し替えるだけで、これ以外のJTAG自作書き込み器をサポートすることが可能になります。 --OpenOCD本体ソースに変更を加えることなく、自由にドライバー作成できるようになります。 --OpenOCD本体ソースには殆ど手をつけていませんので、今後のOpenOCDの変更点に追従する手間はほとんど要りません。 --(ただしjtag_command_queueの構造が変わった場合はもろに影響を受けますが・・・) -hidblast.dll のエントリーポイントは、 DLL_int get_if_spec(struct jtag_command **q); -だけです。 -引数のstruct jtag_command **qのqには、openocd本体のjtag_command_queueというグローバル変数のアドレスを渡します。 -戻り値は、(intになっていますが) ドライバー記述構造体のアドレスになります。 *ダウンロード(仮) [#abc45486] |[[hid_blaster.zip:http://psp.dip.jp/web/upload.cgi/AVR/hid_blaster.zip]]|WindowsXP,MinGW用ソース、実行ファイル、AVR側ファームウェア、openocd本体改造パッチ| -数日おきに更新していますので、古いと思ったら最新を取得してみてください。 ~ ~ ~ *バッチ実行によるFLASH書き込みログ [#j61b00a4] C:\hid_blaster>openocd.exe -f blaster.cfg -f stm32.cfg -f batch.cfg Open On-Chip Debugger 0.5.0-dev (2010-10-10-20:52) Licensed under GNU GPL v2 For bug reports, read http://openocd.berlios.de/doc/doxygen/bugs.html if load Info : only one transport option; autoselect 'jtag' 10 kHz 1000 kHz adapter_nsrst_delay: 100 jtag_ntrst_delay: 100 =*= dummy_init(void) TARGET DEV_ID=5a Info : clock speed 1000 kHz Debug: 1 0 bitbang.c:439 bang_reset(): reset to: RESET Info : JTAG tap: stm32.cpu tap/device found: 0x3ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x3) Info : JTAG tap: stm32.bs tap/device found: 0x16410041 (mfg: 0x020, part: 0x6410, ver: 0x1) Info : stm32.cpu: hardware has 6 breakpoints, 4 watchpoints TapName Enabled IdCode Expected IrLen IrCap IrMask -- ------------------- -------- ---------- ---------- ----- ----- ------ 0 stm32.cpu Y 0x3ba00477 0x3ba00477 4 0x01 0x0f 1 stm32.bs Y 0x16410041 0x06412041 5 0x01 0x03 0x06410041 0x06410041 0x06410041 0x06410041 Info : JTAG tap: stm32.cpu tap/device found: 0x3ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x3) Info : JTAG tap: stm32.bs tap/device found: 0x16410041 (mfg: 0x020, part: 0x6410, ver: 0x1) Warn : Only resetting the Cortex-M3 core, use a reset-init event handler to reset any peripherals target state: halted target halted due to debug-request, current mode: Thread xPSR: 0x01000000 pc: 0x08000120 msp: 0x20005000 auto erase enabled Info : device id = 0x20016410 Info : flash size = 128kbytes wrote 8192 bytes from file main-0000.hex in 3.421875s (2.338 KiB/s) verified 8016 bytes in 1.140625s (6.863 KiB/s) shutdown command invoked =*= dummy_quit(void) ~ ~ *JTAGコマンドの追加とプロトコルについて [#e2f59006] -hidcmd.h #define HIDASP_JTAG_WRITE 0x34 //JTAG 書き込み. #define HIDASP_JTAG_READ 0x35 //JTAG 読み書き. -が追加されてます。 -HidReportの下りストリーム(PC->AVR) サイズは最大38バイトまでです. +------+------+-------------------+------+-------------------+------+-------------+-----+ | 0x34 | jcmd | data列 | jcmd | data列 | jcmd | data列 | 0x00| +------+------+-------------------+------+-------------------+------+-------------+-----+ --jcmdの1バイトは以下のように定義(その1) bit 7 6 5 4 3 2 1 0 +---+---+---+---+---+---+---+---+ | 0 | b6| JTAG転送bit数(TDIの数)| + JTAG転送bit数分の TDIビット(LSBファースト) +---+---+---+---+---+---+---+---+ --- b6はTDI送出の最終bitでTMSを1にするなら1 しないなら 0 : TMSは最終bit以外は常時0 ~ --jcmdの1バイトは以下のように定義(その2) bit 7 6 5 4 3 2 1 0 +---+---+---+---+---+---+---+---+ | 1 |BITBANG転送回数(後続byte数)| + BITBANG転送回数分(byte数)のデータ +---+---+---+---+---+---+---+---+ --BITBANGデータの1回分は、TCK=LOWのサンプルとTCK=HIGHのサンプルをパックしたデータ。 bit 7 6 5 4 3 2 1 0 +---+---+---+---+---+---+---+---+ |TCK|TDI|TDO|TMS|TCK|TDI|TDO|TMS| (上位4ビットが最初にセットされ、次に下位4ビットがセットされます) +---+---+---+---+---+---+---+---+ --TCKを変化させたくないときは、両方のTCKビットを同じ値にします。 --TDOは入力PINなので出力されるわけではないけれど、ATtiny2313の場合はTDOプルアップ指定(1)になります。 ~ ~ -HidReportの登りストリーム(AVR->PC) サイズは最大38バイトまで. HIDASP_JTAG_READ発行時のみ折り返し返送されます. +----------------------------------------+ | JTAG受信データ(TDOの読み取りビット列) | (最大38バイトまで) +----------------------------------------+ --ビット列はLSBファースト. 送信されたTDIビット列とそのまま対応しています. ---- その他補足 #define HIDASP_JTAG_READ 0x35 //JTAG 読み書き. -を実行するときは、HidReportの下りストリーム(PC->AVR)を単純な形式(1コマンドのみ)にします。 +------+------+-------------------+------+ | 0x35 | jcmd | data列 | 0x00 | +------+------+-------------------+------+ -jcmdがBitBangモードのときは、返答データはありません。JTAG(TDI列)のときのみ(TDO列)を返します。 -JTAGストリームが長い場合(56bit以上のTDIを送ってTDOを受け取る)は、56bit単位に分割転送します。 -その場合、最後のストリームの最終bitのみ、TMSを1にする処理が入ります。(b6=1のパケットを用意します) ~ -ATtiny2313はファームウェアサイズが極端に少なく(2048byte)複雑な処理を入れられないので、TDOの読み取り動作 は常に実行されます。(返答不要な場合も) -また、TDI送出->TDO読み取りの処理も、8bitループと8bit未満端数ループに分離すれば高速化出来ますが、ファームウェアサイズの制限のためそれを行っていません。 ~ -ATtiny2313のファームを再ビルドするときは、gcc3.4ベースのavr-gccを使用してください。 -gcc-4.xベースのavr-gccだとサイズオーバーします。 WinAVR-20060421の入手先は以下を参照してください。 -[[DownLoad]] ~ ~ ~ ---- *OpenOCDの簡単な使い方 [#f0f6b21c] -起動したらまず、localhost:4444番ポートにtelnetで(TeraTermなどを使って)繋いでください。 -TeraTermから、以下のようなコマンドをタイプすると、結果が表示されます。 |OpenOCDコマンド|意味| |scan_chain|接続されているTAPのリストを見る。| |reset halt|ターゲットCPUをHALTさせる| |reg|ターゲットCPUのレジスタを見る| |mdw アドレス カウント|display memory words <addr> [count]メモリーダンプ| |step|CPUをステップ実行させる| |flash write_image erase main.hex|main.hexをFLASH ROMに書き込む(そのまえにCPUをHALTにしておきます)| ~ ~ ~ ---- *参考文献(LINK) [#xc3d2b7c] OpenOCDが動くまで (kimura Lab) -http://www.kimura-lab.net/wiki/index.php/OpenOCD%E3%81%8C%E5%8B%95%E3%81%8F%E3%81%BE%E3%81%A7 OpenOCD (ベストテクノロジーさん) -http://www.besttechnology.co.jp/modules/knowledge/?OpenOCD OpenOCD本家 -http://openocd.berlios.de/web/ ~ ~ ~ ---- *リンク [#x78d1cca] 千秋ゼミ:arm_blaster AVR/news58 -http://www-ice.yamagata-cit.ac.jp/ken/senshu/sitedev/index.php?AVR%2Fnews58 ~ ~ ~ ~ ~ ~
タイムスタンプを変更しない
[[2010-10]] [[pic18blaster]] [[arm_blaster]] [[STM8S(改)OpenOCDライター>stm8s_blaster]] ---- *ATtiny2313(HIDaspxハードウェア)を使ってARM用JTAGアダプター(FlashROMへの書き込み、OpenOCD用デバッガ)を製作する。 [#k091115f] http://psp.dip.jp/web/jpg/wsn216.jpg ((画像は [[wsnak:http://www.wsnak.com/]] 様が販売している [[WSN216基板:http://www.wsnak.com/kit/216/index.htm]] )) ===JTAG CABLE===> http://psp.dip.jp/web/jpg/ARM/STM32.jpg ■ 概要 これは、OpenOCD の DLL ハック(実験)です。 即ち、外部に DLL を置いて、JTAGアダプターのドライバーの分離実装を試みています。 ■ 現在のステータス 低速ですが、とりあえず、ATtiny2313を使用したJTAGアダプターが動いています。 現在、8kBファームの書き込み時間は3.4秒程度にまで高速化しています。 (USB2.0HUBを通した状態での計測です) ■ 特筆すべき点 -[[HIDaspx>HIDaspx]]のファーム差し替えのみで実現しています。((但しAVRチップには3.3Vを供給する必要があります)) -HIDaspx AVRライターとしては、今までどおりに使えます。((ファームウェア容量節約のため、若干の速度低下があります。)) -[[PICライター>PICspx]]として、PIC18Fへブートローダーを書き込む用途に対しても今までどおりに使えます。 ■ 試し方 試行にはWindowsXPを用います。 HIDaspx ハードウェアを用意して、ファームウェアのみ、下記のものに差し替えておきます。 hid_blaster/firmware/main-12.hex http://psp.dip.jp/web/jpg/AVR/sch-2313.png 註:上記回路図は5V駆動になっていますが、実際は3.3Vレギュレータを入れて3.3V駆動する必要があります。 -ATtiny2313を5V駆動にする場合は、sa89a.net様の[[USBブラスターもどき:http://sa89a.net/mp.cgi/ele/ub.htm]]のように抵抗分圧する手法もあります。 結線は、 ATtiny2313 ARM基板 JTAG端子 PB7 ------------- TCK PB6 ------------- TDI PB5 ------------- TDO PB4 ------------- TMS となります。これ以外のnTRSTピンなどはまだサポートしていません。(USB-Blasterと同様) (上記4本の線は直結でも動作しましたが、100Ω程度の直列抵抗を入れてショート事故を防ぐようにする ほうが安全です) ARM側は3.3Vなので、AVR側の電圧に注意してください。(ATtiny2313側も3.3Vにする必要があります) hid_blaster/ ディレクトリの ocd.bat あるいは、 ocd2.bat を起動して、openocd.exeの吐き出すメッセージ を確認することが出来ます。 -ocd.batは書き込みターゲットSTM32マイコン用、ocd2.batは書き込みターゲットLPC2388マイコン用の起動ファイルです。 正常に接続出来ているようでしたら、telnetで localhost:4444 番に接続して、OpenOCDコマンドを実行して みてください。 ■ ディレクトリ構成 hid_blaster-+- ソース. | +--helper\ ヘッダーファイル. +--jtag\ ヘッダーファイル. | +--firmware\ ATtiny2313側のファームウェア (main-12.hexを焼きます) | +--openocd_patch\ openocd本体側作成用の改造点 ■ プログラムの再ビルド方法 WindowsXP上のMinGW-gccコンパイラを用いてmakeしてください。 makeすると、hidblast.dll が作成されます。 -openocd.exe本体を再ビルドする方法は、[[ここ>openocd-build]]を参照してください。 今回の改造部分ソースはopenocd_patch/ ディレクトリに置いています。 Linux上でのビルドオプションは、こんな感じです。 $ ./configure \ --build=i686-pc-linux-gnu \ --host=i586-mingw32msvc \ --enable-maintainer-mode \ --enable-dummy 出来上がった openocd.exe 本体は、ドライバーとして、同一ディレクトリに存在する hidblast.dll を 起動時に呼び出します。(存在しなければ、dummyドライバーのみが組み込まれます) ■ 現状の問題点 まだ遅いです。 HIDmon / HIDaspx の機能を残してはいますが、コードサイズ節約による速度低下があります。 ■ ライセンス OpenOCDの配布ライセンスに準じます。 ■ 展望 -hidblast.dll ファイルを(自力で)差し替えるだけで、これ以外のJTAG自作書き込み器をサポートすることが可能になります。 --OpenOCD本体ソースに変更を加えることなく、自由にドライバー作成できるようになります。 --OpenOCD本体ソースには殆ど手をつけていませんので、今後のOpenOCDの変更点に追従する手間はほとんど要りません。 --(ただしjtag_command_queueの構造が変わった場合はもろに影響を受けますが・・・) -hidblast.dll のエントリーポイントは、 DLL_int get_if_spec(struct jtag_command **q); -だけです。 -引数のstruct jtag_command **qのqには、openocd本体のjtag_command_queueというグローバル変数のアドレスを渡します。 -戻り値は、(intになっていますが) ドライバー記述構造体のアドレスになります。 *ダウンロード(仮) [#abc45486] |[[hid_blaster.zip:http://psp.dip.jp/web/upload.cgi/AVR/hid_blaster.zip]]|WindowsXP,MinGW用ソース、実行ファイル、AVR側ファームウェア、openocd本体改造パッチ| -数日おきに更新していますので、古いと思ったら最新を取得してみてください。 ~ ~ ~ *バッチ実行によるFLASH書き込みログ [#j61b00a4] C:\hid_blaster>openocd.exe -f blaster.cfg -f stm32.cfg -f batch.cfg Open On-Chip Debugger 0.5.0-dev (2010-10-10-20:52) Licensed under GNU GPL v2 For bug reports, read http://openocd.berlios.de/doc/doxygen/bugs.html if load Info : only one transport option; autoselect 'jtag' 10 kHz 1000 kHz adapter_nsrst_delay: 100 jtag_ntrst_delay: 100 =*= dummy_init(void) TARGET DEV_ID=5a Info : clock speed 1000 kHz Debug: 1 0 bitbang.c:439 bang_reset(): reset to: RESET Info : JTAG tap: stm32.cpu tap/device found: 0x3ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x3) Info : JTAG tap: stm32.bs tap/device found: 0x16410041 (mfg: 0x020, part: 0x6410, ver: 0x1) Info : stm32.cpu: hardware has 6 breakpoints, 4 watchpoints TapName Enabled IdCode Expected IrLen IrCap IrMask -- ------------------- -------- ---------- ---------- ----- ----- ------ 0 stm32.cpu Y 0x3ba00477 0x3ba00477 4 0x01 0x0f 1 stm32.bs Y 0x16410041 0x06412041 5 0x01 0x03 0x06410041 0x06410041 0x06410041 0x06410041 Info : JTAG tap: stm32.cpu tap/device found: 0x3ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x3) Info : JTAG tap: stm32.bs tap/device found: 0x16410041 (mfg: 0x020, part: 0x6410, ver: 0x1) Warn : Only resetting the Cortex-M3 core, use a reset-init event handler to reset any peripherals target state: halted target halted due to debug-request, current mode: Thread xPSR: 0x01000000 pc: 0x08000120 msp: 0x20005000 auto erase enabled Info : device id = 0x20016410 Info : flash size = 128kbytes wrote 8192 bytes from file main-0000.hex in 3.421875s (2.338 KiB/s) verified 8016 bytes in 1.140625s (6.863 KiB/s) shutdown command invoked =*= dummy_quit(void) ~ ~ *JTAGコマンドの追加とプロトコルについて [#e2f59006] -hidcmd.h #define HIDASP_JTAG_WRITE 0x34 //JTAG 書き込み. #define HIDASP_JTAG_READ 0x35 //JTAG 読み書き. -が追加されてます。 -HidReportの下りストリーム(PC->AVR) サイズは最大38バイトまでです. +------+------+-------------------+------+-------------------+------+-------------+-----+ | 0x34 | jcmd | data列 | jcmd | data列 | jcmd | data列 | 0x00| +------+------+-------------------+------+-------------------+------+-------------+-----+ --jcmdの1バイトは以下のように定義(その1) bit 7 6 5 4 3 2 1 0 +---+---+---+---+---+---+---+---+ | 0 | b6| JTAG転送bit数(TDIの数)| + JTAG転送bit数分の TDIビット(LSBファースト) +---+---+---+---+---+---+---+---+ --- b6はTDI送出の最終bitでTMSを1にするなら1 しないなら 0 : TMSは最終bit以外は常時0 ~ --jcmdの1バイトは以下のように定義(その2) bit 7 6 5 4 3 2 1 0 +---+---+---+---+---+---+---+---+ | 1 |BITBANG転送回数(後続byte数)| + BITBANG転送回数分(byte数)のデータ +---+---+---+---+---+---+---+---+ --BITBANGデータの1回分は、TCK=LOWのサンプルとTCK=HIGHのサンプルをパックしたデータ。 bit 7 6 5 4 3 2 1 0 +---+---+---+---+---+---+---+---+ |TCK|TDI|TDO|TMS|TCK|TDI|TDO|TMS| (上位4ビットが最初にセットされ、次に下位4ビットがセットされます) +---+---+---+---+---+---+---+---+ --TCKを変化させたくないときは、両方のTCKビットを同じ値にします。 --TDOは入力PINなので出力されるわけではないけれど、ATtiny2313の場合はTDOプルアップ指定(1)になります。 ~ ~ -HidReportの登りストリーム(AVR->PC) サイズは最大38バイトまで. HIDASP_JTAG_READ発行時のみ折り返し返送されます. +----------------------------------------+ | JTAG受信データ(TDOの読み取りビット列) | (最大38バイトまで) +----------------------------------------+ --ビット列はLSBファースト. 送信されたTDIビット列とそのまま対応しています. ---- その他補足 #define HIDASP_JTAG_READ 0x35 //JTAG 読み書き. -を実行するときは、HidReportの下りストリーム(PC->AVR)を単純な形式(1コマンドのみ)にします。 +------+------+-------------------+------+ | 0x35 | jcmd | data列 | 0x00 | +------+------+-------------------+------+ -jcmdがBitBangモードのときは、返答データはありません。JTAG(TDI列)のときのみ(TDO列)を返します。 -JTAGストリームが長い場合(56bit以上のTDIを送ってTDOを受け取る)は、56bit単位に分割転送します。 -その場合、最後のストリームの最終bitのみ、TMSを1にする処理が入ります。(b6=1のパケットを用意します) ~ -ATtiny2313はファームウェアサイズが極端に少なく(2048byte)複雑な処理を入れられないので、TDOの読み取り動作 は常に実行されます。(返答不要な場合も) -また、TDI送出->TDO読み取りの処理も、8bitループと8bit未満端数ループに分離すれば高速化出来ますが、ファームウェアサイズの制限のためそれを行っていません。 ~ -ATtiny2313のファームを再ビルドするときは、gcc3.4ベースのavr-gccを使用してください。 -gcc-4.xベースのavr-gccだとサイズオーバーします。 WinAVR-20060421の入手先は以下を参照してください。 -[[DownLoad]] ~ ~ ~ ---- *OpenOCDの簡単な使い方 [#f0f6b21c] -起動したらまず、localhost:4444番ポートにtelnetで(TeraTermなどを使って)繋いでください。 -TeraTermから、以下のようなコマンドをタイプすると、結果が表示されます。 |OpenOCDコマンド|意味| |scan_chain|接続されているTAPのリストを見る。| |reset halt|ターゲットCPUをHALTさせる| |reg|ターゲットCPUのレジスタを見る| |mdw アドレス カウント|display memory words <addr> [count]メモリーダンプ| |step|CPUをステップ実行させる| |flash write_image erase main.hex|main.hexをFLASH ROMに書き込む(そのまえにCPUをHALTにしておきます)| ~ ~ ~ ---- *参考文献(LINK) [#xc3d2b7c] OpenOCDが動くまで (kimura Lab) -http://www.kimura-lab.net/wiki/index.php/OpenOCD%E3%81%8C%E5%8B%95%E3%81%8F%E3%81%BE%E3%81%A7 OpenOCD (ベストテクノロジーさん) -http://www.besttechnology.co.jp/modules/knowledge/?OpenOCD OpenOCD本家 -http://openocd.berlios.de/web/ ~ ~ ~ ---- *リンク [#x78d1cca] 千秋ゼミ:arm_blaster AVR/news58 -http://www-ice.yamagata-cit.ac.jp/ken/senshu/sitedev/index.php?AVR%2Fnews58 ~ ~ ~ ~ ~ ~
テキスト整形のルールを表示する
ログインまたはアカウント作成