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