問題タブ [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.

0 投票する
1 に答える
350 参照

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を使用しています

0 投票する
1 に答える
223 参照

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)

0 投票する
4 に答える
2019 参照

c - マクロで # をエスケープする方法

アセンブリをインライン化する必要があるマクロを作成する必要があります

ただし、 # はコンパイルされていません。パラメータとして渡そうとしましたが、それも機能しません。invalid preprocessor token と表示されます。インライン関数を使用することはできますが、レジスタ名を動的に作成することはできません。つまり、名前変数にアクセスできません。マクロ内で # 操作を使用する方法について何か提案はありますか?

#define マクロで # 記号をエスケープする方法を見てきました。、しかし、ここでマクロが必要な理由を明確に説明しました。私のユースケースは異なります。

0 投票する
2 に答える
919 参照

makefile - make を使用して各ソース ファイルに対してアクションを実行する

このようなMakefileを作成しました

問題は、sdcc一度に 1 つのソースしかコンパイルできないことです。SRCSそのため、変数で定義した各ソースに対して foreach のようなものを実行する必要があります。gnu-makeでこれを行う方法は?

0 投票する
0 に答える
70 参照

c - 「プロセッサの不一致」警告を黙らせたり、依存関係のカスタムビルドのコピーを含めたりせずに処理するにはどうすればよいですか?

SDCC 3.6.3 と gputils 1.5.0 を使用してビルドしている PIC の C プロジェクトがあります。どちらもソースからビルドしました。

プロジェクトをリンクすると、gplink から次のエラー メッセージが表示されます。

これらの警告を無効にする特定のフラグ ( -w ) がありますが、プロジェクトのビルド時に警告が表示されるのは好きではありません。いくつかの検索により、この問題に対処する 2007 年からの短い会話につながりました。SDCC に含まれるライブラリは、デフォルトで PIC 18f452 用にビルドされます。私のプロジェクトでは 18f26k22 を使用しているため、これらの警告が表示されます。

上記の会話には、別のターゲット用に pic16 ライブラリを再構築する方法に関する指示が含まれていました。それらは時代遅れでしたが、構成スクリプトを読んで理解しました。次の手順に従って、ライブラリを再コンパイルしました

  1. ファイルを変更しますdevice/lib/pic16/configure。上記のリンクで説明されているように、シェルで ARCH 環境変数を指定することもできることに注意してください。( ARCH=18f26k22 make)

    /li>
  2. 変更した構成ファイルを実行します。./configure
  3. make clean
  4. make
  5. 1 レベル上の lib ディレクトリに移動します。cd ..
  6. 古いビルドが存在する場合は削除します。rm -rf build/pic16
  7. 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 フラグを使用する以外に、これを処理するよりクリーンな方法はありますか?

0 投票する
0 に答える
196 参照

java - Javaプログラミングを使用して端末に書き込む方法

SDCC を使用してコンパイラ IDE を設計しています (SDCC を使用して、8051 および PIC コントローラのコードをコンパイルできます)。8051 用に記述されたコードをコンパイルするには、 コマンドsdcc --debug filename.cを使用し、デバッガーに入るには、 コマンドを使用しますsdcdb filename.cdb。ブレークポイントはデバッガでのみ設定できます。コマンド プロンプトでブレークポイントを設定できますbreak <linenumber>が、IDE を使用してこれを実装するにはどうすればよいですか? IDE を使用しているとき、コマンドを入力してブレークポイントを設定したくありませんが、この機能をボタンに実装したいと考えています。Java Swing を使用して IDE を設計しました。