評価版Keilにはそういう制限があるのですね。非常に参考になります。sdccですか、フリーというのがいいですね。しかし、「以上をもって移植がうまくいきました。」って、またあっさりとやってしまわれますね。
Keilはお高いですからね…
お金のためならがんばります(笑)
すばらしい!sdccへの移植は,私は技術力不足であきらめてました.
今まで,参考になるようなサンプルソースも少なかったので
こちらで勉強させて頂きます.FX2に対応させたいなぁ.
いとも簡単に実装されているようで,羨ましい限りです.
こんにちは、hamaさん。
自分の備忘録程度に書きなぐったものですが、参考になれば幸いです。やはりソフトウェアに制限があるとそれが絡んでくるハードウェアの魅力が半減してしまうと思います。そういうわけでフリーのコンパイラにはとてもがんばって欲しいと思っています←現在某DSPのフリーコンパイラにチャレンジ中。
素晴らしい!4kの壁に泣いて投げ出してしまった自分が恥ずかしいですよ。
また意欲が湧いてきましたので参考にさせていただきます。
bunbunさん、コメントありがとうごさいます。
是非ともチャレンジしてみてください。今度僕の方ではFX2をsdccで使ってみようと思っています
> 今度僕の方ではFX2をsdccで使ってみようと思っています
お久しぶりです.いつも更新を楽しみにしています.
fenrir さんのソースを参考にして,
sdcc 使って FX2 の Keil テンプレートを
コンパイルできるようになりました.
まだ実際に動かしてはいませんが.
新しい基板が届いたようですが,
もう FX2 に対応されましたか?
もしよろしければ参考までにソースを送ります.
hamaさん、こんにちは。
お役に立てたようで幸いです。FX2の方ですが、半導体本体の入手が遅れているためまだ動作確認できていません。ソースの方ですが、興味ありですので、よろしければ送ってくださると助かります。
FX2への移植に参考にさせていただきました。
最初は、keilテンプレートの動作に手間取りました。注意点は、公開されているfx2regs.hのsfr xx xx = xx -> sfr at 0xxx LABELに変更する事と、dscr.asmのデスクリプタ定数を.odd配置する程度です。
FX2も16KBRAMになりましたので、FPGAと組合せて余裕のシステムが構築できるようになり、もっと利用したいチップですね。(趣味でサウンドと画像の相関マッチングをやってます。自前設計基板(PROTEL))
以上お礼かたがたご報告まで。
hangさん、こんにちは。
お役に立てたようで嬉しいです、加えて追加情報ありがとうございます。現在FX2LP(68013A)を試しているところですが、USBまわりにとどまらずFPGA等色々組み合わせて遊んでみたいと思っています。
基板を自作されているのですか。どのようなシステムなのでしょう? 興味ありです!
fenrirさん はじめまして。
えーと、まず前記に間違いがありました。
dscr.asmの定数配置は.evenダイレクティブを使用します。
他に、SDCCコマンドの--data-loc 0x20オプションが無視されてしまうようなので、バンクエリアを不使用とするためにBYTE notuse[32-8];のようなダミー変数を最初の変数宣言にします。大体このような修正で、KEILからSDCC変換でFX2が動いています。さすが、300Mbpsクラスは利用価値が高いですね。
また、EZ-USB Control PanelへのロードはBIXフォーマットが安定してロードできます。HEXは不安定です。
>基板を自作されているのですか。
ほとんど、思いついたらプロテルDXP画面を開いてしまいます。回路を書いて、パターンアートワーク->Pbanというように、やってしまいますので、金のかかる事はハンパじゃないです。
前記のFPGA+FX2基板は、ビデオデコーダチップと大容量高速SRAMが載っているもので、自己相関関数を逐次比較アルゴリズムで演算しパターン認識するものです。
昔は大規模CPUで開発する傾向がありましたが、最近は悟りを開いて、小さなCPUで利用価値のあるものを短時間で開発する事に意義を見出しています。
これからも、あれこれやっていきますので、よろしく。
はじめまして。
私もKeilからSDCCへコード移植を行いました。
しかしながらコンパイル結果が少々悪くスピードがKeilより1割ほど遅かったので最近はKeilに走っていました。
離れた原因は他にもあって、ソースコードが大きくまた複数ファイルになっていくにつれて、動作が全くできなくなるという状態になる。。。。ということがあったのですが、fenrirさんの環境でも一度試してみようかと思います。
バルク転送+GPIFでベンチマーク24MB/sが現在のMAXです。SDCCでこれに匹敵するようなスピードが出せるか挑戦してみようかとww
nobさん、こんにちは。
そうですね、やはりsdccはフリーであるがゆえに、Keilよりもスピードが劣るという話は聞いたことがあります。とりあえずこちらはsdccで今のところ動作不良はおきていません。
今度、Keil vs sdccでスピード競争をしてみようかと思います。スピード競争といえば、gccの8051版ができればまた面白いのですがね。
素人が自分用のキーボードとトラックボールの複合デバイスを作成しようとしています。参考にさせていただいております。オプティマイズさんのMINI EZ-USB(AN2131SC)を利用しています。fenrirさんの記事やファイルを参考にしてcypressのezcomboをSDCCでコンパイルしてみたのですが、
memory overlap near 0x0 for HOME
といった表示が出てきます。ezcombo.hexは作成したみたいです。
もしご教示いただけるのであれば詳しい情報を書かせていただきます。
どうかよろしくお願いいたします。
場違いであれば申し訳ありません。。。
teさん、こんにちは。ここは情報交換の場だと考えておりますので、遠慮なさらずにご質問ください。
問題の件ですが、おそらくどこかのコードの配置が重なってしまっているのだと思います。USBJumpTbl.asmの.orgが0x1A00となっているのを0x1B00としてみてどうでしょうか。なお、0x1B00以上にすると、EZUSBのメモリ容量の関係で動作しなくなりますので、ご注意ください。
fenrirさん 早速のお返事ありがとうございます。
USBJumpTbl.asmの.orgが0x1A00となっているのを0x1B00としてみて、Makefile中で
SRCS_ASM = dscr.asm USBJumpTbl.asm
としてみました。
やはり同じメッセージが出ます。
memory overlap nearの次には
0x0 0x20 0x40 0x60 0x80 0xA0 0xBE 0xDE 0xC1 0xCB 0xEB 0xED 0xF3 0x113 0x117 で始めの6個が for HOME、
次から8個がGSINIT0からGSINIT4、最後がGSFINALとなっています。
私の恥ずかしいサイトからファイルを見ていただけるようにしてみようと思います。
準備できましたらまたコメントさせていただきます(夜になると思います)。
HOMEやGSINIT0でSDCCやcypressのDOCなどを検索してもめぼしいものがでてこないのでたいへん困っていました。
ありがとうございます。
>teさん
リンクの結果を記録したマップファイル(拡張子が.map)が生成されると思いますが、その中にHOMEやGSINIT0等があるかと思います。その配置順序を見る限り、恐らくコードのサイズが大きすぎて問題が発生しているのではないでしょうか。
fenrirさま
時間がかかってしまいましたが、Webにアップしました。
http://members.jcom.home.ne.jp/btron-taichi/ezusb/index.htm
コードのサイズが大きすぎるということは、smallではなくてlargeでコンパイルすればいいのかなと、やって見ます。
ありがとうございます。
(Webページの作成に超漢字というOSと、とあるアプリケーションの設定が悪くてなんだかおかしなファイル名で表示保存されます。気持ち悪いので修正を検討します。また、buildしたフォルダの内容も見ていただけるようにしたほうが情報になるかと思い、これも検討中です)
>teさん
コード拝見いたしました。interrupt番号が僕のものと異なっているような気がします。EZUSB内蔵の8051固有の割り込みとの関係でUSB関連の割り込み番号は13以降です。また、コードサイズについては問題ないかと思います。
>teさん
そちらのサイトから全ソースを落として検討してみましたが、funnykbd.cでBOOLを返す関数のエラー(BYTEに変更すればOK)以外は問題なくコンパイルできました。こちらで生成されたmapファイルをみたところ、正常に配置されている(GSINIT0等のオーバーラップなし)ようです。
結論として、おそらくコンパイラのバグだと思います。僕が使用しているのは
SDCC : mcs51/gbz80/z80/avr/ds390/pic16/pic14/TININative/xa51/ds400/hc08 2.5.0 #1020 (Sep 24 2005) (CYGWIN)
でした。
あと、ご希望でしたらこちらでコンパイルしたソースをお送りします。
fenrirさま
ありがとうございます。
cygwinとSDCCの両方がかかわっているので難しいですね。
SDCCを新しくしたり、fenrirさんのヴァージョンにしてみたり、してみます。
まずは「funnykbd.cでBOOLを返す関数のエラー(BYTEに変更すればOK)」を直しておきます。
また進展があったらご報告させていただこうと思います。
本当にお手数をいただきありがとうございました。
今後ともよろしくお願いいたします。
fenrirさま
ご報告が遅くなりすみません。
結果:うまく動くようになりました。
経緯:cygwin, SDCCともにインストールしなおして、cygwinにawkがインストールされていなかったことに気づきました。パッケージカテゴリのところでinstallにしてもinstallされないものがあるなんてびっくりしました。そういうものを念のためにすべてインストールするように(ヴァージョンが表示されるように)してSDCCをインストールしたところ、無事に動くようになりました。
謝辞:ありがとうございました。このあわて者をお許しください。
>teさん
おめでとうございます、うまく動くようになったのですね!
困ったときはお互い様ということで、今後ともよろしくお願いします。
お世話になります。3年ほど前sdccの情報をこちらで読み、sdccの環境を試してみたことがあります。
an2131をusb-serialアダプタにするfirmwareのソースの在り処をご存じないでしょうか?
ボーレート固定のものはこちらで見付けたのですが...
https://kiidax.wordpress.com/2011/12/11/ezusb/
HIDのファームは見付かるのですが、何故かserialのものが見つりません。
>forester3さん
お返事遅くなりました。探してみたのですが、見つからなかったです。今は8051でUSBだと、完全にC8051に移行してしまいましたので…。お役にたてずすいません。