SDCCでコンパイルする場合の変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
評価版の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}}