評価版の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キーボードの製作へ戻る ---- {{comment}}