問題タブ [lpc]
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.
c - LPC1788 マイクロコントローラのアトミック テスト アンド セット
NXP LPC1788 マイクロコントローラーを使用しており、C でマルチスレッド アプリケーションを開発しています。アプリケーションの一部で、カスタム リンク リスト データ構造を定義しています。特定のリストへの同時アクセスが原因で、以前はプログラムに問題がありましたが、リスト自体にアクセスする前にスレッドが呼び出すことができるリストの「ロック取得」メソッドと「ロック解放」メソッドを実装することで解決したようです。
リスト構造体に「sema」データメンバーを追加することでこれを行いました:
私の「ロック取得」方法を以下に示します。
私の「ロック解除」方法を以下に示します。
私のアプリケーションでは、このように 1 秒間に何千回もアイテムをリストに追加および削除する必要があり、それ以来、同時アクセスに関連するバグに気付いていないため、通常、これは問題なく動作するようです。
ただし、これが機能することをより確実にするために、テストと設定のアプローチを実装する方法があるかどうか疑問に思っていました. LPC1788 は、Cortex-M3 マイクロコントローラに固有の Thumb 命令セットのバージョンに依存しています。これは、こちらまたはユーザー マニュアルの918 ページ以降にあります。
しかし、調べてみると、テスト・アンド・セット命令のようなものは見つかりません。見過ごしてるだけかも。
理想的には、次のようなものが欲しいです。
編集
Nemoの回答に基づいて、次のことを試みました。
参考になれば、これは対応するアセンブリ コードです。
同時アクセスの問題を再現するのに問題があるため (同時実行の問題であると仮定して)、これが機能するかどうかはわかりません。
c - フィボナッチ数列が間違っている
このプログラムは、フィボナッチ数列の最初の 50 個の数字を出力する必要があります。しかし、最初の 47 個の印刷のみが正しく、最後の 3 個の印刷は正しくありません。
出力は次のとおりです。
c - インターフェースの問題 LPC1769 と MPU6050
LPC1769 と MPU6050 を接続しようとしています。mcb1700.code.bundle.lpc1769.lpcxpressoライブラリを使用しています。また、IDE として LpcXpresso を使用しています。
読み取りシーケンス用にコーディングした MPU6050 データシートで指定されているように、最初にのみ機能し、2 回目に読み取ろうとするとゼロ値が返されます。(つまり、リセット後に一度だけ動作します)
考えられる多くの方法を試しましたが、結果はありません。この問題を解決するための解決策を教えてください。
編集.. 以下に示したコード。read と burstRead の両方のコードが 1 回だけ機能する
i2c.c
MPU6050の機能
c - UART0の送受信割り込みの書き方
uC LPC2478 を使用しています。関数UART0に取り組んでいます。しかし、関数 UART0 を作成する必要があります。割り込みの使い方がわからない!
長い文字列を送信し、長い文字列を受信する必要があります。しかし、うまくいきません。しかし、関数 __irq void isr_UART0 (void) に書き込む必要がありますか?
c - uart0 LPC24xx を介して受信中に単語を送信する方法
KEIL のコード例があります。正常に動作しています。しかし、私の問題は、LPC24xx で受信中に文字ではなく単語を送信する必要があることです。
ここに例があります:
そしてターミナルでは次のように表示されます:
文字列を送信するには、何を変更する必要がありますか? キャラだけじゃない!
gdb - OpenOCD でのセカンダリ コアの構成
OpenOCD を使用して LPC4357 マイクロコントローラーをプログラムおよびデバッグするのに問題があります。このチップには、Cortex M4 コアとセカンダリ Cortex M0 コアがあります。これは私が使用しているOpenOCD構成です:
GDB のloadコマンドを使用して内部フラッシュに何かを書き込もうとすると、次のエラーが発生します。
問題は、フラッシュに書き込む前に M0 コアを停止する必要があると OpenOCD が判断し、M0 コアが停止要求に応答していないことだと思います。
これは、M0 コアが実行されておらず、停止できないためです。そのリセット信号とクロック信号は M4 コアによって制御され、ブート シーケンスの後半でのみ有効になります。
M0コアがM4ファームウェアによって有効になるまで利用できないことをOpenOCDに伝える方法はありますか?