- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
評価版のKeilはプログラムサイズ4KBの制限があり、超える場合は別のコンパイラを使わなければなりません。幸いキーボードのプログラムは4KB以内に収まりましたが。
下記は、USBキーボードのプログラムをフリーのコンパイラSDCC用へ移行する手順です。
!!移植の手順
[fenrir|http://fenrir.naruoka.org/archives/000438.html]さんのページから移植版のbulkloopとライブラリを入手。
Keil版とSDCC版のファイルの対応
,keil,SDCC
,bulkloop.c,periph.c
,fw.c,fw.c
,dscr.a51,dscr.asm
,USBJmpTb.a51,USBJmpTb.asm
下記のディレクトリ構成例で、
C:\Cypress
C:\program files\sdcc
C:\usr\bulkloop
C:\usr\inc
C:\usr\lib
unixエミュレーションソフト+makeでなくてもWindowsコマンドプロンプトから以下のコマンドラインでコンパイル可能。
#コンパイル(.c > .rel)
sdcc -c -V --debug --opt-code-speed --model-small -I"c:\program files\sdcc\include" -I"c:\usr\inc" -o periph.rel periph.c
sdcc -c -V --debug --opt-code-speed --model-small -I"c:\program files\sdcc\include" -I"c:\usr\inc" -o fw.rel fw.c
#アセンブル(.asm > .rel)
asx8051 -plosgff USBJmpTb.asm
asx8051 -plosgff dscr.asm
#リンク(.rel > .hex)
sdcc -V --debug --model-small --xram-loc 0xe000 --xram-size 0x200 --iram-size 0x100 -I"c:\program files\sdcc\include" -I"c\usr\inc" -o periph.hex -L c:\usr\lib -l ezusb fw.rel periph.rel dscr.rel USBJmpTb.rel
#iic作成(.hex > .iic)
C:\Cypress\USB\Bin\Hex2bix.exe -i -f 0xC2 -o periph.iic periph.hex
このサンプルperiph.cをベースにキーボード用に修正しますが、修正したプログラムは、さらに以下の変更が必要でした。
*dscr.asm の修正は書き方が違うので、周りの記述を良く見て書き換える。
*xdata等のオプションには先頭に__が付く。
*追加したデスクリプタのポインタはfw.cのGlobal Variablesのところに定義し、periph.cからはexternで使う。
USBキーボードの製作へ戻る
{{banner gmobb}}
----
{{comment}}