問題タブ [sdcc]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
crc - NRF24L01+はCRC有効時に受信不可
2 つの STM8s105 MCU と 2 つの NRF24L01+ モジュールがあります。1 つを送信者として設定します。
8 ビット CRC が有効で ESB が無効な受信機としての 1 つ:
受信者はパケットを受信できません。
ただし、CRC を無効にすると、正常に動作します。
助けてください、ありがとう!
ところで、NRF24L01+ モジュールが統合された STC89C52 MCU ボードがあります。このボード(CRC 有効)は問題なくパケットを受信できます。したがって、問題は受信側にあると確信しています。
ところで2、私はsdcc 3.4.0、stm8flash、およびSTM8S_StdPeriph_Driverを使用しています
sdcc - SDCC 有効なデバイス リストにデバイスがありません
古いシステムでの事故の後、sdcc コンパイラを再構築しています。pic18F4410 でビルドできましたが、新しいセットアップの有効なデバイス リストに含まれていません。それが有効と呼んでいるデバイスリストは非常に小さいようです。
このデバイス リストがどこから取得されているのかわかりません。以前に(正確なコンパイル行を使用して)一度動作させたので、解決策がどこかにあると確信しています...
サポートされているほとんどすべての PIC18 デバイスでそのリストを更新したいと思います。
SDCC バージョン: SDCC : mcs51/gbz80/z80/avr/ds390/pic16/pic14/TININative/xa51/ds400/hc08 2.5.6 #1249 (2015 年 9 月 2 日) (UNIX)
c - マクロで # をエスケープする方法
アセンブリをインライン化する必要があるマクロを作成する必要があります
ただし、 # はコンパイルされていません。パラメータとして渡そうとしましたが、それも機能しません。invalid preprocessor token と表示されます。インライン関数を使用することはできますが、レジスタ名を動的に作成することはできません。つまり、名前変数にアクセスできません。マクロ内で # 操作を使用する方法について何か提案はありますか?
#define マクロで # 記号をエスケープする方法を見てきました。、しかし、ここでマクロが必要な理由を明確に説明しました。私のユースケースは異なります。
makefile - make を使用して各ソース ファイルに対してアクションを実行する
このようなMakefileを作成しました
問題は、sdcc
一度に 1 つのソースしかコンパイルできないことです。SRCS
そのため、変数で定義した各ソースに対して foreach のようなものを実行する必要があります。gnu-makeでこれを行う方法は?
c - 「プロセッサの不一致」警告を黙らせたり、依存関係のカスタムビルドのコピーを含めたりせずに処理するにはどうすればよいですか?
SDCC 3.6.3 と gputils 1.5.0 を使用してビルドしている PIC の C プロジェクトがあります。どちらもソースからビルドしました。
プロジェクトをリンクすると、gplink から次のエラー メッセージが表示されます。
これらの警告を無効にする特定のフラグ ( -w ) がありますが、プロジェクトのビルド時に警告が表示されるのは好きではありません。いくつかの検索により、この問題に対処する 2007 年からの短い会話につながりました。SDCC に含まれるライブラリは、デフォルトで PIC 18f452 用にビルドされます。私のプロジェクトでは 18f26k22 を使用しているため、これらの警告が表示されます。
上記の会話には、別のターゲット用に pic16 ライブラリを再構築する方法に関する指示が含まれていました。それらは時代遅れでしたが、構成スクリプトを読んで理解しました。次の手順に従って、ライブラリを再コンパイルしました。
ファイルを変更します
/li>device/lib/pic16/configure
。上記のリンクで説明されているように、シェルで ARCH 環境変数を指定することもできることに注意してください。(ARCH=18f26k22 make
)- 変更した構成ファイルを実行します。
./configure
make clean
make
- 1 レベル上の lib ディレクトリに移動します。
cd ..
- 古いビルドが存在する場合は削除します。
rm -rf build/pic16
make
不自由なコードを使用する場合は、これを繰り返す必要があるかもしれません。に住んでいdevice/non-free/lib/pic16
ます。
ビルドしたら、gplink パラメーターを変更して、-I フラグがビルドしたばかりのライブラリを含むビルド ディレクトリを指すようにします。元:-I/home/username/sdcc/device/lib/build/pic16 -I/home/username/sdcc/device/non-free/lib/build/pic16
残念ながら、gplink は最初に見つけたライブラリを使用します。これは、使用するすべての pic のライブラリを構築して、それらをすべて異なるパスに保持し、それぞれに -I パスを設定することはできないことを意味します。gplink は、プロセッサの不一致エラーを生成しない他の -I パスに他のバージョンがある場合でも、最初のものを選択してそれを使用します。
さらに、make install
特定のチップ用にビルドされたライブラリを /usr/local/sdcc にコピーするために実行しても、複数のチップ用に開発している場合は役に立ちません。
私のプロジェクトが必要とするすべてのカスタムビルドのコピーを含めるか、-w フラグを使用する以外に、これを処理するよりクリーンな方法はありますか?
java - Javaプログラミングを使用して端末に書き込む方法
SDCC を使用してコンパイラ IDE を設計しています (SDCC を使用して、8051 および PIC コントローラのコードをコンパイルできます)。8051 用に記述されたコードをコンパイルするには、 コマンドsdcc --debug filename.c
を使用し、デバッガーに入るには、 コマンドを使用しますsdcdb filename.cdb
。ブレークポイントはデバッガでのみ設定できます。コマンド プロンプトでブレークポイントを設定できますbreak <linenumber>
が、IDE を使用してこれを実装するにはどうすればよいですか? IDE を使用しているとき、コマンドを入力してブレークポイントを設定したくありませんが、この機能をボタンに実装したいと考えています。Java Swing を使用して IDE を設計しました。