問題タブ [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 - LPC1769 Cortex M3 の GPIO 割り込みハンドラの作成
ARM Cortex-M3 の簡単な GPIO 割り込みの例はありますか?
私はいくつかのコードを書きましたが、どういうわけか割り込みが発生していないようです:
LPC1769 Cortex M3 の単純な GPIO 割り込みの例をオンライン/GitHub で検索しましたが、結果が得られません。ただし、次のように表示されます。
- 対象の GPIO 割り込みは
EINT_3
. - ユーザーコードで定義されている場合、IRQ ハンドラー
EINT3_IRQHandler
は上書きされます。
なにが問題ですか?
arm - ROMおよびRAMへのARM CM3のプログラミング
現在、余暇のプロジェクトをアップグレードして、Microchip の 8 ビット マイクロの代わりに ARM を使用するようにしています。
しかし、残念ながら私はいくつかの問題に遭遇しました:
プログラミング方法の違いがよくわかりません: - ROM へのプログラミング - RAM へのプログラミング (私の場合は 32K しかありません)
私はすでに、IAR IDE を使用していくつかの「hello world」テストを実行しました。ここでは、コンパイル/プログラミングは、私が心配していなかった特定の構成で行われました。しかし、IAR IDE と IAR コンパイラの 32K 制限が気に入らなかったので、新しい環境をセットアップすることにしました (以下の構成を参照)。
Eclipse 環境をセットアップした後、IAR から提供された例を使用して、ARM を RAM にプログラムすることができました。しかし、ARM を ROM にプログラムしたいと思ったとき、プログラムは何もしないようです。ROM または RAM への何らかのマッピングを行ったと思われる makefile の例を使用しました。
ROMは読み取り専用メモリであり、電源が切断された後も空にならず、RAMの方が高速ですが、毎回プログラムをARMにダウンロードする必要があることを私は知っています.
プログラムを ROM と RAM の部分に分割する必要がありますか、それとも、電源投入時に ARM がコードを RAM に再マップするようにすべてを ROM にプログラムできますか?
現在、次の構成を使用しています。
- Codesourcery GCC
- エクリプス C/C++
- Segger Jlink プログラマー (GDB サーバー)
- CMSIS または LPCOpen ライブラリ (まだ完全には機能していません)
- NXP LPC1766 コーテックス M3
- Windows 8 64 ビット
- LPC1768 および CMSIS の IAR の例
- NXP の例: lpc17xx.cmsis.driver.library
ROMとRAMのさまざまな用途と、ROMとRAMメモリを利用するためにコンパイラ/メイクファイルを設定する方法を理解するのを手伝ってくれませんか。
最後に、毎回再プログラムしなくてもARMの電源をオフにできるように、ARM(私は思う)をROMにプログラムできるようにしたいと考えています。
microcontroller - 問題のあるマイクロコントローラと VCO
あなたの一日がうまくいくことを願っています。AD5791 の出力電圧に依存する特定の周波数を出力するために、AD5791 に信号を送信するように LPC1768 をプログラミングしています。回路図を添付しました。LPC1768 から AD5791 への読み書きができたようです。ただし、VCO をシグナル アナライザに接続すると、AD5791 の電圧出力を「変更」しても、ピーク周波数に変化が見られません。mbedを使ってプログラミングしています。以下は、私が現在使用しているコードです。入力をいただければ幸いです。問題は spi.write の実装方法にあると思います。AD5791 は 20 ビット ワードを必要とし、LPC1768 は最大 16 ビット ワードしか送信できません。また、エンディアンの問題もありますが、期待される順序でAD5791に書き込んだものを読み込んでいるので、解決したと思います。
}`
c - カスタム INF を使用したマイクロコントローラーの USB ドライバーのインストールの問題
私は NXP LPC1788 マイクロコントローラーを使用しており、USB 経由でホスト コンピューターと通信するドライバーをホスト コンピューター上に作成しようとしています。標準の USB 要求を適切に処理するデバイスを取得できたと思います (PC は文字列記述子を適切に読み取ることができます)。
ただし、サンプルの USB ドライバーを作成してデバイスにインストールするのに問題があります。私は Microsoft Visual Studio 2013 を使用しています。私の手順は次のとおりです。
「ドライバー」および「ドライバー パッケージ」プロジェクトを生成する WinUSB アプリケーションの作成。
生成された INF ファイルを変更して、デバイスの VID と PID を使用します。
プロジェクトのビルド - どちらも正常にビルドされます。出力フォルダーには、INF ファイル、カタログ ファイル、および WdfCoinstaller01011.dll が含まれています。
マイクロコントローラーを USB 経由で接続し、 [デバイス マネージャー] → [ドライバー ソフトウェアの更新... ] に移動し、INF ファイルを含むフォルダーを参照して選択します。
これにより、次の画面が表示されます。
- 「このドライバー ソフトウェアをインストールします」を選択します。しばらくすると、次の画面が表示されます。
私のINFファイルは以下のとおりです。
.
setupapi.dev.log ファイルの関連部分をここに示します。次の種類の行がログに複数回表示されました。
以下も登場。
.
USB デバイスに次の記述子を使用します。
embedded - lpc1788 の Hard Fault の原因を突き止める
lpc1788に移植された重い GUI ライブラリを持つファームウェアを開発しています。フォントと画像の処理には 32 MB の SDRAM を使用し、デバイス構成データと共にフォントと bmp のバイナリを格納するために NAND フラッシュを使用しています。
Usage Fault、MemManage フォルト、および Bus Fault を無効にしました。そのため、GUI 機能で何か問題が発生すると、実行がハード フォールトになることがあります。今、私がGUIに使用したライブラリはemWinですまた、ハード フォールトの原因となった機能を知る手段がありません。NAND フラッシュが破損していて、ライブラリが表示するもの (背景画像など) をフェッチしようとすると、ハード フォールトが発生します。このような状況に対処できます。(フラグを使用したコード実装によって) NAND フラッシュが破損していて、バイナリを再プログラムする必要があることが確実にわかっているためです。そうしないと、デバイスが起動するたびにアップすると、ハードフォルトになります。
ただし、他のルーチンによってハード フォールトが発生する場合は、フラッシュ全体を再度プログラムし直す必要はありません。そのため、ハード フォールトの原因がわかっている場合は、ハンドラーを再プログラムする必要があるか、単にいくつかのパラメーターを変更して最後の既知の構成を続行する必要があるかを判断して、それに応じてハンドラーを変更できます。
ハード フォールトの原因となった関数を実行時に特定する方法はありますか? 住所さえあれば十分です。これはできますか?