SDCCでコンパイルする場合

評価版のKeilはプログラムサイズ4KBの制限があり、超える場合は別のコンパイラを使わなければなりません。幸いキーボードのプログラムは4KB以内に収まりましたが。
下記は、USBキーボードのプログラムをフリーのコンパイラSDCC用へ移行する手順です。

移植の手順

fenrirさんのページから移植版の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キーボードの製作へ戻る


お名前: コメント:

トップ メニュー

This web page is described in Japanese, but you can read in English by translation site.

  • リンクに許可は不要です。
  • コメント欄は改行せず一行で入れてください。
  • スパム判定ではじかれた場合は、その後に「書込みました」旨のみのコメント等何らかの書き込み成功していただけると早く対応できます。
  • 非日本語対応ブラウザからは書き込みできません。