USB Keybord to X680x0 その2 プログラム

2016年9月23日

その2でございます。今回は PIC32MX のプログラムです。使用する PIC は PIC32MX220F032B です。秋月です。
↓では、ハードウェアとプロトコル考えて見たのですが話は PS2 を変換なので、USB 用にするなら PIC32 用の HOST サンプルが必要と言う話を。
HOST なので PIC18F2550 とか対応していないので使えないわけです。
で、多分 PIC32MX220F032B じゃ入らないだろうなぁ。とか思いつつサンプルのファイルを1つのプロジェクトにコピーしてコンパイルしました。
microchip_solutions_v2013-06-15\USB\Host – HID – Keyboard
これです。まあ使ってほしい用途は組み込みのなにがしにキーボードを使いたい時ですかね。
コンパイルオプションは Free で使える最適化 -O1、リンカは Strip All と -OS(リンカだけはサイズを選べるんですが、殆ど意味なさげ)。


kseg1 Boot-Memory Usage
section                    address  length [bytes]      (dec)  Description
-------                 ----------  -------------------------  -----------
.reset                  0xbfc00000          0x1c4         452  Reset handler
.bev_excpt              0xbfc00380           0x10          16  BEV-Exception
Total kseg1_boot_mem used  :       0x1d4         468  40.1% of 0x490
--------------------------------------------------------------------------
Total Program Memory used  :      0x9174       37236  28.2% of 0x20490
--------------------------------------------------------------------------
kseg1 Data-Memory Usage
section                    address  length [bytes]      (dec)  Description
-------                 ----------  -------------------------  -----------
.sbss                   0xa0000000           0x94         148  Small uninit data
.bss                    0xa0000094           0x30          48  Uninitialized data
.bss                    0xa00000c4           0x88         136  Uninitialized data
.data                   0xa000014c           0x30          48  Initialized data
.bss                    0xa0000180           0x4c          76  Uninitialized data
.bss                    0xa0000200          0x200         512  Uninitialized data
Total kseg1_data_mem used  :       0x3c8         968  3.0% of 0x8000
--------------------------------------------------------------------------
Total Data Memory used  :       0x3c8         968  3.0% of 0x8000
--------------------------------------------------------------------------

Total : 37272byte
PIC32MX250F128B を指定しているので、コンパイルが通ります。
PIC32MX220F032B を指定してコンパイルするとセクションに入りきらないと、エラーが出て全体でどのくらい Flash を使っているのか分かりません。
そういうわけで、Flash が 32k しかない PIC32MX220F032B では無理です。体験期間中に -O3 とか -OS とかやって見たことが有るのですが劇的に減ります。
-OS だけでもゆるしてちょ。みたいな。
XC32 を使ったんですが、C30 でもだめでしょうね。
あとは PIC24 とかの USB 付きでもいいのかもしれませんが、アーキテクチャ変えるとまた面倒くさいのと秋月には売っていないので却下です。
たびたび名前を出しますが「マイクロファン」で PIC32MX250F128B を売っています。¥630- です。まあ、秋月は ¥220- ですから、Flash の量だけ考えれば安いかと。
で、話戻して USB 関係の必要なファイルをサンプルからコピって来ただけで、あとはコンパイル通すのに LCD 使ってる関数とか受け取ったキーを UART2 に流すところをコメントアウトしてコンパイルしたわけですが・・
必要なファイル
X680x0 converter
( ゚д゚)ポカーン
p23mx220F032B.h は参照用です。Initialize と Interrupt は私流にまとめただけなので変わりは有りません。main で Timer4 を密かに使っています。あと必須な LED チカチカすね。
UART2 をコメントアウトした所に、X680x0のシリアル流せばいいのかなと。
ハードウェアも単純だしそっちは速攻出来るでしょう。