uartflash32 の変更点
[[2013-12]]
関連リンク [[PIC32MX]] [[Pinguinoで遊ぼう>Pinguino]] [[ブートローダーを作る>HIDBootX]] [[USB仮想シリアル>PIC32MX_USBCDC]] [[USBカスタムデバイス>USB_CUSTOM]] [[USBホスト>USB_HOST]] [[2013-02]] [[2013-03]]
---------
*ブートローダーって、何? [#oa7509f7]
[[ブートローダーを作る>HIDBootX]]を参照のこと。
http://psp.dip.jp/web/jpg/pic32mx220.jpg
//----------
//*目次 [#a98e83e8]
//#contents
//----------
//*今、何故シリアルローダーなのか。 [#o63681cf]
*ブートローダーのための開発環境を用意する。 [#m1817a49]
Pinguino Rev4 easyPackだけで完結します。(MicrochipのIDE環境やCygwinなどは不要です。)
***[[Pinguino4.X:http://wiki.pinguino.cc/index.php/Main_Page/ja]] [#d99406dc]
-ダウンロード: http://wiki.pinguino.cc/index.php/Category:IDE_Downloads
//http://code.google.com/p/pinguino32/downloads/list
--アーカイブを入手して、 7zアーカイバーで(D:\などに)展開します。
D:\x4-easy-rev999\
~
-Windows側のプログラムのビルドには MinGW32 を使用します。 (www.mingw.org)
~
*ブートローダーのソースを入手する。 [#a043b2b4]
-''ダウンロード:''[[uartboot.zip:http://psp.dip.jp/web/upload/PIC/uartboot.zip]]
-2014-0927: PIC32MX250 (128kB Flash) 対応しています。
--追記:2014-0927: PIC32MX250 (128kB Flash) 対応しました。
~
*ブートローダーをコンパイルしてみる。 [#rae953fb]
-上記アーカイブはすでにPinguino用gccでビルド出来るようにしています。
-Pinguino用gccに実行パスを通します。(setenv.bat)
PATH D:\x4-easy-rev999\win32\p32\bin;%PATH%
~
*ブートローダーをチップに書き込む。 [#e03f1892]
-\uartboot\ ディレクトリでmakeした後、w.batを実行。
~
~
*ブートローダーを使ってPIC32MXの中を覗いてみる。 [#s8b9a3dc]
-uartboot のファームウェアにはPIC32MXのメモリーを読み書きするコマンドが含まれています。
-これを利用すると、PIC32MXの中を簡単に覗くことができます。
-やってみましょう。
-uartboot/hostpc/uartmon32.exe を起動します。
MIPS> d a0000000
a0000000 00 00 00 00 01 00 00 00 04 03 09 04 e4 16 00 9d
a0000010 20 04 00 a0 30 04 00 a0 00 00 00 a0 00 00 db 13
a0000020 01 01 00 00 ff ff ff ff 00 80 00 1d 20 00 00 00
a0000030 38 00 00 a0 00 00 00 00 01 01 07 05 01 03 40 00
a0000040 00 00 00 00 20 00 00 00 00 01 00 00 10 04 00 a0
a0000050 38 04 00 a0 01 00 00 00 01 00 00 00 01 00 00 00
a0000060 00 00 00 00 20 04 00 a0 00 00 00 00 08 04 00 a0
a0000070 00 00 00 00 00 00 00 00 80 06 00 02 00 00 29 00
a0000080 00 00 02 00 00 04 00 a0 01 00 00 00 00 00 00 00
a0000090 14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
a00000a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
a00000b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
a00000c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
a00000d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
a00000e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
a00000f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
MIPS> l bfc00000
bfc00000 3c1a9fc0 lui k0,0x9fc0
bfc00004 275a0010 addiu k0,k0,16
bfc00008 03400008 jr k0
bfc0000c 00000000 nop
bfc00010 401a6000 mfc0 k0,$12
bfc00014 7f5a04c0 ext k0,k0,0x13,0x1
bfc00018 13400002 beqz k0,$bfc00024
bfc0001c 00000000 nop
bfc00020 00000000 nop
bfc00024 3c1da000 lui sp,0xa000
bfc00028 27bd2000 addiu sp,sp,8192
bfc0002c 3c1ca001 lui gp,0xa001
bfc00030 279c8000 addiu gp,gp,-32768
bfc00034 40096002 mfc0 t1,$12,2
bfc00038 01205820 add t3,t1,zero
bfc0003c 7d2a1e80 ext t2,t1,0x1a,0x4
bfc00040 7d494984 ins t1,t2,0x6,0x4
bfc00044 40896002 mtc0 t1,$12,2
bfc00048 41dce000 wrpgpr gp,gp
bfc0004c 408b6002 mtc0 t3,$12,2
MIPS> p
TRISA(0xbf886010) 0x0000001f 00000000_00000000_00000000_00011111
PORTA(0xbf886020) 0x00000010 00000000_00000000_00000000_00010000
LATA(0xbf886030) 0x00000008 00000000_00000000_00000000_00001000
TRISB(0xbf886110) 0x00002fbf 00000000_00000000_00101111_10111111
PORTB(0xbf886120) 0x000001b0 00000000_00000000_00000001_10110000
LATB(0xbf886130) 0x00008b16 00000000_00000000_10001011_00010110
MIPS>q
-逆アセンブル、メモリーダンプ、ポートの状態監視が出来ます。
- mips16の命令列を逆アセンブルしたい場合は、l(エル)コマンドの引数に与える開始番地のLSBを立ててください。(奇数番地にします)-- ARM<->Thumbと同様です。
-ポートアドレスをポート名から知りたいときは、その名称の途中までをタイプすると教えてくれます。
MIPS> p port
PORTA(0xbf886020)
PORTACLR(0xbf886024)
PORTASET(0xbf886028)
PORTAINV(0xbf88602c)
PORTB(0xbf886120)
PORTBCLR(0xbf886124)
PORTBSET(0xbf886128)
PORTBINV(0xbf88612c)
-ポートアドレスの全一覧は、
MIPS> p ?
-ポート内容一覧は、
MIPS> p *
-という具合です。
----------
*Pinguinoのブートローダーとして使うには [#b640c82c]
-mphidflash.exe の代わりに uartflash32.exe を呼び出すようにしてください。
-(もっとも単純な手段としては、exeファイルを上書きすることです。)
~
~
~
~
----------
*参考リンク [#wb895f1e]
以下のリンクは両方とも熟読すること。でないとMIPSとかさわっちゃだめ。
***とても参考になる。 [#u989c5ea]
『はじめて読む MIPS(リローデッド)』 by 中森章 - CQ出版社
-www.cqpub.co.jp/interface/TechI/Vol39/app/mips_asm.pdf
PIC32ファミリ リファレンスマニュアル CPU(日本語)
-http://ww1.microchip.com/downloads/jp/DeviceDoc/61113D_JP.pdf