問題タブ [cortex-m3]
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.
arm - ARM Cortex-M3 コア上の .NET Micro Framework
Luminary MicroのRDK-IDMを持っています。このボードには、32 ビット ARM® Cortex™-M3 コアが搭載されています。そのようなデバイスで .NET Micro Framework アプリケーションを実行しようとした人はいますか?
gcc - Ubuntu: STM32 (Cortex-M3) のクロスコンパイル時に使用する gcc は?
私は STM32 (Cortex-M3) を使い始めようとしています。私の計画は、これを Ubuntu (9.04 / AMD64) から機能させることです。
まず、Olimex stm32-h103ヘッダー ボードとOlimex ARM-USB-OCD jtagを入手しました。その上で、おそらく OpenOCD、gcc、および Eclipse を使用します。
しかし、現在、使用する gcc のバージョンと、コードをクロスコンパイルできるように設定する方法を検討しています。
そこにはいくつかの腕のプロジェクトがあるようですが、何から始めるべきかわかりません。誰かが私を正しい方向に押してくれますか?
ありがとうヨハン
更新: codesourceryから欲しいものがほとんどあるようですが、AMD64 ではなく IA32 に焦点を当てているようです。
ただし、サポートされているデバイスでは、Cortex-M3 を見つけました
- ARM EABI、ARM M プロファイル シミュレータ -mcpu=cortex-m3 -mthumb
更新:AMD64にIA32をインストールする可能性があるため、マークされた回答はすでに廃止されている可能性があります。
更新: Cortex-M3 のクロスコンパイルに関するこのリンクを見つけました。
xcode - XCode3.2にカスタムコンパイラを追加します
ARMCortex-m3用の動作するgcc4.3.3ツールチェーンがあり、それをXCodeに統合したいと思います。
組み込みのGCC4.2の代わりにこのgccツールチェーンを使用するようにXCode(3.2)を設定する方法はありますか?
これまでに試したこと:の変更されたコピーを追加しGCC 4.2.xcplugin
、名前、バージョン、および実行可能パスを変更しました。XCodeに表示されますが、「C /C++コンパイラバージョン」をカスタムコンパイラに設定すると失敗します。
GCC_VERSIONの値「4.3.3」が無効です
GCC 4.2.xcplugin
元のを削除しても値は有効なままであるため、有効なバージョン番号は別の場所にハードコーディングされているよう4.2
です(ただし、[C / C ++コンパイラバージョン]ドロップダウンには表示されなくなります)。
embedded - Cortex-M3の割り込みハンドラ間でパラメータを渡す
Cortex-M3用のライトカーネルを構築しています。
優先度の高い割り込みから、優先度の低い割り込みで実行するコードを呼び出して、いくつかのパラメーターを渡したいと思います。
優先度の低い割り込みに作業をポストするためにキューを使用したくありません。
渡すバッファとサイズがあります。
プロラミングマニュアルでは、SVC割り込みハンドラーは同期的であると記載されています。これは、SVCのハンドラーよりも優先度の低い割り込みから呼び出すと、すぐに呼び出されることを意味します(これの結果は、パラメーターを渡すことができるかのようになります。これは関数呼び出しでした(MS-DOSのBIOS呼び出しに少し似ています))。
別の方法でやりたいのですが、優先度の高い割り込みから優先度の低い割り込みにパラメーターを渡します(現時点では、パラメーターをメモリー内の固定位置に残して行っています)。
これを行うための最良の方法は何ですか(可能であれば)?
ありがとう、
embedded - 汎用作業に使用できる Cortex-M3 割り込みはどれですか?
特定の割り込みが発生した結果として実行する必要があるコードがいくつかあります。
割り込み自体のコンテキストで実行したくありませんが、スレッドモードで実行したくありません。
実行を促進した高レベルの割り込みよりも低い優先度で実行したいと思いますが、スレッドレベルよりも高い優先度(および他のいくつかの割り込みも同様)で実行したいと思います。
他の割り込みハンドラのいずれかを使用する必要があると思います。
使用するのに最適なものはどれで、それらを呼び出す最良の方法は何ですか?
現時点では、使用していない周辺機器の割り込みハンドラーを使用し、NVIC を介して直接ビットを設定することでそれらを呼び出すことを計画していますが、より良い、より公式な方法があることを望んでいました。
ありがとう、
embedded - ARM皮質:ビットバンディングを使用したミューテックス
それを考えると、ARM Cortex M3では、次のことができます。
- 1ビットをアトミックに読み取る
- 1ビットをアトミックに設定
- 1ビットをアトミックにクリア
これらを組み合わせてミューテックススタイルの操作セットを作成するにはどうすればよいですか。
アトミックではない2つの操作が必要になるようtry_lock
です。take_lock
これを達成するために、より多くの制御が必要ですか?グローバル割り込みを無効にすることでそれが可能になりますが、より外科的なアプローチが必要なようです。
embedded - Keil の µVision を使用して C/C++ コードで Cortex-M3 の MSP および PSP レジスタにアクセスする
Cortex-M3 プロセッサの MSP および PSP レジスタ (メインおよびプロセス スタック レジスタ) にアクセスする必要があります。
私はC/C++で書いています。
µVision および関連するコンパイラでは、この Thumb-2 専用コアのインライン アセンブリを実行できません (とにかく、それが良いアイデアかどうかはわかりません)。
これを行う必要があるのは、svc 命令がスレッド モードで実行されたか、ハンドラー モードで実行されたかに関係なく、svc 命令の即時値を抽出できるようにするためです。
ありがとう、
c - Zeroconf 名前解決
ウェブサーバーが組み込まれた制御デバイスを開発しています。Web サーバーは、(Windows ブラウザー、Mac ブラウザー、iPhone android などから) それを要求するすべての Web ブラウザーに制御インターフェイスを提供します。
私が抱えている問題は、デバイスへのアクセス方法を一般的に知る一般的な方法にあります。つまり、Web ブラウザに入力するアドレスです。
固定 IP はユーザーにとって技術的すぎて、デバイスが多くの異なるローカル ネットワークに接続される可能性があるため、うまくいかない可能性があります。uPnp サービス ディスカバリを使用するには、一部のプラットフォームのクライアントでソフトウェアを実行する必要があり、単に Web アドレスを入力するほど自然ではありません。名前解決を実装したい。
私の現在の実装では、netbios プロトコルを使用しています。したがって、Windows ブラウザーから //controller/ と入力すると機能しますが、Mac やスマートフォンでは機能しません。さらに、Apple の mDnsresponder を実装して、Mac と iPhone を快適にプレイできるようにすることもできます (ただし、//controller.local/ に限定されると思います)。Android、Symbian などにも同様のものが存在する可能性がありますが、1 つのネットワーク名を作成するためのより普遍的な解決策はありませんか?
プラットフォームは現在、TI Cortex M3 プロセッサと lwIP に基づいています。
解決策を見つける方法についてのヘルプや提案は大歓迎です。
敬具、
ボブ
arm - Cortex M3 (ARM) Embedded のデバッグ - xPSR.ISR から実行されている ISR をどのように確認しますか?
arm ファミリの CPU (Cortex M3) でファームウェアの一部をデバッグしています。
デバッガーは、「ISR」と呼ばれるサブフィールドを含む「xPSR」と呼ばれるものを含む CPU レジスターを表示します。CPUレジスタのモードは「Mode = Handler」です。これは、m3 CPUが「スレッド」モードではなく割り込みハンドラーであることを意味します。これは私が知っていることです。
フィールド xPSR.ISR = 15 の値が表示されます。16 進数の 15 (12 月 21 日) に違いないと思います。そして、ISR ベクタ テーブルのコメントを見て、これは「システム タイマー ティック 0B」割り込みであると推測しています。実際、私は今、それが 10 進数の 15 であると推測しています。これは、私が見ている SysTick タイマー割り込みハンドラーです。 、誰が ISR を呼び出したのかをコードから判断するのは困難です。)
しかし、私は Cortex M3 チップについてかなりの初心者であり、ARM7TDMI についての知識は、それを使用しないことで薄れてしまい、思い出せません。そして、これはドキュメントのどこにも見つかりません。
誰かがこれを理解する方法を教えてもらえますか?
debugging - Cortex-M3 CPUのprintfを介した出力デバッグ、BKPT命令でのストール+JTAGおよびswポートに関する混乱
ボード上のJTAGコネクタにKeilULINK2USBエミュレータボックスが接続されています。これは、オンボードのCortex-M3 CPU(TI / Stellaris / LuminaryMicro LM3Sシリーズ)で正常に動作します。JTAGポートとSWJ-DPポートの両方が、これらのCPUで同じピン(したがって、ボード上のコネクタ)を共有しているようです。1つにはITM(printf)機能がないように見えますが、もう1つにはあります。
以前のファームウェアの人々は常にstdiotoUART(シリアルポート)を使用していましたが、デバッグメッセージがシリアルポートとの間で送受信される他のデータに干渉しないように、シリアルポートを解放する必要があります。したがって、トレースメッセージが必要です。他の場所に行きます。残念ながら、このボードにはシリアルポートが1つしかありません。このCPUのITM(トレース)機能は、デバッグprintfメッセージをデバッガー/ IDE(Keil uVision)に直接送信できることを意味すると思いました。TI / Stellaris CPUのドキュメントでは、この機能を「シリアルワイヤJTAGデバッグポート(SWJ-DP)」と呼んでいます。このサポートは、私が読んだところ、間違いなくKeiluVisionIDEに実装されている機能です。
コードにprintfメッセージを追加すると、デバッグを開始したときにコードがロックされます。ロックアップは、私のアプリケーションにリンクされているRTLライブラリの関数_sys_openのBKPT命令にあるようです。
上記は、によって呼び出されるコードの一部のよう__rt_lib_init_stdio_1
です。
何が起こっている?BKPTが何をするのかわかりません。ソフトウェアブレークポイントが発生し、デバッガーで処理する必要があると思いますか?Keil / ARM ULINK2ソフトウェアとハードウェアは、このためにすでに構成されているべきではありませんか?デバッグprintfをKeilJTAG/ swポートで動作させるためのトリックはありますか?
swポートとJTAGポートの違いがわかりません。swは正確には、ボード上のJTAG物理コネクタの2つの可能なモードの1つを指していると思います。ここで、JTAGはクラシックですが、トレースサポートのないより制限されたモードであり、swモードはJTAGにピンを追加せずにトレースサポートを追加します。コネクタのレイアウト?しかし、これは組み込みシステムであり、不可解であることが標準です。私はCortex-M3開発に不慣れであり、このようなものの多くは、古いARM7TDMIの時代から私にとって新しいものです。しかし、Keil uVisionは、「ITMはSWポートでのみ機能し、JTAGでは機能しません」というメッセージを出力します。SWは、ボード上で設計する必要のある別の物理ポートですか?(私は、開発スターターボードではなく、カスタム設計のアプリケーションボードを使用しています。)
[グーグルで調べてみると、このパズルには_sys_open
いくつかのプラグマ__use_no_semihosting_swi
やその他のものが密接に関係しているという事実がわかります。ROM内のBRKPT命令は、SWI(「ソフトウェア割り込み」)ARM命令のARMバリアントである可能性があります。]