タグ付けされた質問 「cortex-m3」

7
Linux on ARM Cortex-M3シリーズ
私はARMが初めてで、すべての異なるシリーズと少し混同しています。 低電力のゲートウェイ(イーサネット、wifi ...)を構築する必要があるため、cortex-Mまたはcortex-Rが出発点として適していると思います。しかし、Linuxをサポートするcortex-m3(非常に人気が高いようです)などの開発ボードは見つかりませんでした。 linuxM3の可能性があるので、たとえば、mbedやLPCXpressoの周りにLinuxプロジェクトがないのはなぜだろうか。 誰も私が探している開発ボードを教えてもらえますか、または「cortex m」+ linuxがより多くの答えを出せない理由を説明できますか?
29 arm  linux  cortex-m3 

5
Cortex-m3ツールチェーン
私は、ARM cortex-m3(lpc1343)マイクロコントローラー用の開発を可能にするLinux(Ubuntu)用の無料の(自由な)ツールチェーンを探しています。そのようなツールチェーンはどこにありますか?チュートリアルはありますか?
22 cortex-m3  arm  linux 

6
最小の組み込みLinuxディストリビューション?
私はそこにいる専門家に尋ねるのが好きです。 フラッシュメモリ〜700Kb ラム〜256Kb プロセッサ:ハイエンドアーム皮質M3(STM32ファミリなど) 必要なモジュール:-カーネルコア-基本ドライバーセット:USB /ネットワーク(WiFi用-APなし、クライアントのみ、セキュリティなし)/ SPI / Uart / I2C これは可能ですか、それとも夢を見ていますか? アイデアは、5ドルのハイエンドCortexM3を使用し、外部メモリを使用しないことです。これにより、SDIO / WiFiなどの準備が整ったドライバーを楽しむことができます。 WiFiに関する説明を追加して質問を更新しました。Wi-Fiは、単純で、ミルクライアントの実行であるという意味で。派手なものは何もありません。おそらく私がそれに合うなら泣きます。 別の更新:uCLinuxはどうですか?

5
Cortex(ARM)マイクロコントローラーでのWFI(割り込み待機)の最適なパターン
EFM Gekkoコントローラー(http://energymicro.com/)を使用したバッテリー駆動ソフトウェアの開発を検討しており、実行するのに役立つものがない場合はコントローラーをスリープ状態にしたいと考えています。この目的には、WFI(割り込み待ち)命令が使用されます。割り込みが発生するまでプロセッサをスリープ状態にします。 何かをどこかに格納することでスリープが行われた場合、ロード専用/ストア専用操作を使用して次のようなことができます。 //何かが起こるとdont_sleepに2がロードされます //メインループを少なくとも1回繰り返します。割り込みの場合 //次のステートメント中に2にリセットされる原因となります。 //割り込みはその後に発生したかのように振る舞います。 store_exclusive(load_exclusive(dont_sleep)>> 1); while(!dont_sleep) { //次のステートメントとstore_exclusiveの間に割り込みが発生した場合、スリープしない load_exclusive(SLEEP_TRIGGER); if(!dont_sleep) store_exclusive(SLEEP_TRIGGER); } load_exclusive操作とstore_exclusive操作の間に割り込みが発生すると、store_exclusiveをスキップし、システムがもう一度ループを実行するようになります(割り込みがdont_sleepを設定したかどうかを確認します)。残念ながら、Gekkoはスリープモードをトリガーするために書き込みアドレスではなくWFI命令を使用します。のようなコードを書く if(!dont_sleep) WFI(); 「if」と「wfi」の間に割り込みが発生し、dont_sleepを設定するリスクが発生しますが、wfiは先に進み、とにかく実行されます。それを防ぐための最良のパターンは何ですか?PRIMASKを1に設定して、WFIを実行する直前に割り込みがプロセッサに割り込まないようにし、すぐにクリアしますか?または、より良いトリックがありますか? 編集 私はイベントビットについて疑問に思っています。一般的な説明では、マルチプロセッサのサポートを目的としているようですが、次のようなものが機能するかどうか疑問に思っていました。 if(dont_sleep) SEV(); / *次のWFEはイベントフラグをクリアしますが、スリープはしません* / WFE(); don't_sleepを設定するすべての割り込みもSEV命令を実行する必要があるため、「if」テストの後に割り込みが発生すると、WFEはイベントフラグをクリアしますが、スリープ状態にはなりません。それは良いパラダイムのように聞こえますか?
18 arm  cortex-m3  sleep 

5
最新のCPU(ARMなど)を使用したサイクルカウント
多くのアプリケーションでは、命令実行が予想される入力刺激と既知のタイミング関係にあるCPUは、関係が不明である場合にはるかに高速なCPUを必要とするタスクを処理できます。たとえば、PSOCを使用してビデオを生成したプロジェクトでは、コードを使用して16 CPUクロックごとに1バイトのビデオデータを出力しました。SPIデバイスの準備ができており、分岐していない場合、IIRCは13クロックかかり、出力データへのロードとストアには11時間がかかるため、バイト間のデバイスの準備をテストする方法はありませんでした。代わりに、最初のバイトの後、各バイトに対して正確に16サイクルのコードをプロセッサに実行させるように単純に調整しました(実際のインデックス付きロード、ダミーインデックス付きロード、およびストアを使用したと思います)。ビデオの開始前に各行の最初のSPI書き込みが行われたため、後続の書き込みごとに、バッファオーバーランまたはアンダーランなしで書き込みが発生する可能性のある16サイクルのウィンドウがありました。分岐ループは不確実性の13サイクルウィンドウを生成しましたが、予測可能な16サイクルの実行により、後続のすべてのバイトの不確実性が同じ13サイクルウィンドウに収まることを意味しました(書き込みが許容できる16サイクルウィンドウ内に収まります)起こる)。 古いCPUの場合、命令のタイミング情報は明確で、利用可能で、明確でした。新しいARMの場合、タイミング情報ははるかに曖昧に見えます。コードがフラッシュから実行されている場合、キャッシュ動作により物事を予測するのがはるかに難しくなるため、サイクルカウントされたコードはすべてRAMから実行されると予想されます。ただし、RAMからコードを実行する場合でも、仕様は少しあいまいに見えます。サイクルカウントされたコードの使用はまだ良い考えですか?もしそうなら、それを確実に動作させるための最良のテクニックは何ですか?チップベンダーが、特定の場合に特定の命令の実行サイクルを削る「新しく改善された」チップを静かにすり抜けることはないと、どの程度安全に想定できますか? 次のループが単語の境界で開始すると仮定すると、仕様に基づいて正確にどれくらい時間がかかるかをどのように決定しますか? マイループ: mov r0、r0; より多くの命令をプリフェッチできるようにする短い単純な命令 mov r0、r0; より多くの命令をプリフェッチできるようにする短い単純な命令 mov r0、r0; より多くの命令をプリフェッチできるようにする短い単純な命令 mov r0、r0; より多くの命令をプリフェッチできるようにする短い単純な命令 mov r0、r0; より多くの命令をプリフェッチできるようにする短い単純な命令 mov r0、r0; より多くの命令をプリフェッチできるようにする短い単純な命令 r2、r1、#0x12000000を追加します。2ワード命令 ; 異なるオペランドを使用して、以下を繰り返します ; キャリーが発生するまで値を追加し続けます itcc addedcc r2、r2、#0x12000000; 2ワード命令、およびitccの追加の「ワード」 itcc addedcc r2、r2、#0x12000000; 2ワード命令、およびitccの追加の「ワード」 itcc addedcc r2、r2、#0x12000000; 2ワード命令、およびitccの追加の「ワード」 itcc addedcc r2、r2、#0x12000000; 2ワード命令、およびitccの追加の「ワード」 ; ... etc、より条件付きの2ワード命令 サブr8、r8、#1 bpl myloop …

3
WiFiが統合されたARMベースのマイクロコントローラー [閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Electric Engineering Stack Exchangeで話題になるようにします。 5年前に閉鎖されました。 私は統合されたWiFiを備えたARMベースの低コストSoCを探していますが、さまざまな検索エンジンを試しましたが、まだ検索エンジンを見つけることができませんでした。 外部アンテナのみを必要とする統合WiFiコントローラーを備えたデバイスを知っている人がいるかどうかを知りたいです。 ARM以外のアーキテクチャを選択することもできますが、SWの開発環境が既に機能しているCPUアーキテクチャのままにしておきます。 ---- 7月27日更新----- ARM Cortex M3とWiFiインターフェースを備えたデバイスを発見しました。名前はImpで、ICを備えた小さなブレークアウトボードをここで販売しています http://smartmaker.com/en/home/602-electric-imp-002.html これに関する問題は、そのデバイスとのすべての通信がサーバーを経由しなければならないことです。さて、問題は、Imp!のような閉じたインターフェースではなく、オープンなインターフェースを備えた製品を持っている他の企業があるかどうかです。 Update 2 REALTEKはこれに最適な低コストモジュールを作成したようで、このモジュールは次のようにe-bayとAliExpressで広く利用可能です。 http://fr.aliexpress.com/item/RTL8710-WiFi-Wireless-Transceiver-Module-SOC/32666025289.html モジュールは、数量と出荷に応じて2ドルから4ドルで販売されます。RTL8710はCortex M3に基づいており、512k〜2Mのメモリが使用可能です。 HackadayのRTL8710に関する非常によく書かれたページがあります。 http://hackaday.com/2016/07/28/new-chip-alert-rtl8710-a-cheaper-esp8266-competitor

1
組み込みデバイスのメモリに安全なキーを保存する
私は、データを送受信し、それらを暗号文モード(暗号化モード)で保存する組み込みデバイスに取り組んでいます。キーを保存するための最善の方法は何ですか(私はARM CORTEX MシリーズMCUを使用しました)? 1-SRAMメモリと各起動シーケンスでキーを保存し、組み込みMCUにキーを挿入してSRAMメモリに保存します。MCUが侵入を検知すると(タンパーセンサーまたは...を使用して)、SRAMをすばやく消去してリセットすることができると私が考える最良の方法です。短所:攻撃者が改ざんを通過してデバイスにアクセスできた場合、SRAMメモリは(コードマイニングに対して)安全です。MCUでこのメモリのセキュリティ機能を見つけることができません。 2キーを生成し、プログラミングMCUのフラッシュメモリに保存します。MCUフラッシュメモリのサポートCRP(コード読み取り保護)は、コードマイニングを防ぎ、内部AESエンジンとRNG(乱数生成)エンジンの助けを借りて、ランダムキーを作成し、フラッシュメモリを暗号化して、OTPにそのランダムキーを保存します(ワンタイムプログラマブルメモリ-128ビット暗号化メモリ)、次にコード実行でRNGキーを使用してフラッシュメモリをデコードし、初期キーとコードにアクセスします。短所:不揮発性メモリに格納されたキー、改ざんは役に立たず、攻撃者はキーをマイニングするために多くの時間を費やします。 EEPROMメモリに3つ格納されたキー、上記の2つのアプローチの組み合わせ、キーは不揮発性メモリに格納されますが、改ざんが感知された場合、EEPROMは消去可能です。 LPC18S57FBD208(1 MBのフラッシュメモリ、180 MHz、136 KBのSRAM、16 KBのEEPROM、および7インチのTFT LCDおよびAES 128ビットの暗号化エンジンを駆動する必要があるTFT LCDコントローラーを備えたcortex m3)を検討します。
10 arm  cortex-m3  lpc 

4
Cortex M3 .bss領域の初期化用のベアメタルスタートアップコード
ここから着想を得て、腕皮質M3のベアメタルスタートアップコードを開発しました。ただし、次の問題が発生します。main.cでunsigned char型など、初期化されていないグローバル変数を宣言するとします。 #include ... unsigned char var; ... int main() { ... } これにより、STM32 f103の.bss領域は、_BSS_START = 0x20000000で始まり、_BSS_END = 0x20000001で終わります。さて、スタートアップコード unsigned int * bss_start_p = &_BSS_START; unsigned int * bss_end_p = &_BSS_END; while(bss_start_p != bss_end_p) { *bss_start_p = 0; bss_start_p++; } .bss領域全体をゼロに初期化しようとします。ただし、そのwhileループ内では、ポインターは4バイトで増加します。したがって、1ステップ後にbss_start_p = 0x20000004なので、無限ループなどにつながるbss_end_pとは常に異なります。 これに対する標準的な解決策はありますか?どういうわけか、.bss領域の次元を4の倍数に「強制」すると思いますか?または、unsigned charへのポインターを使用して.bss領域をウォークスルーする必要がありますか?おそらく次のようなものです: unsigned char * bss_start_p = …

3
Cortex-M3の重要なセクション
タイミングの制約や同時実行の問題のために例外が許可されないCortex-M3に重要なコードセクションを実装することについて少し疑問に思っています。 私の場合、LPC1758を実行しており、TI CC2500トランシーバーを搭載しています。CC2500には、RXバッファー内のデータおよびTXバッファー内の空き領域の割り込みラインとして使用できるピンがあります。 例として、MCUのSRAMにTXバッファーを配置し、トランシーバーのTXバッファーに空き領域がある場合、そこにこのデータを書き込みます。しかし、SRAMバッファーにデータを配置するルーチンは、TXの空き領域割り込みによって割り込みできないことは明らかです。だから私がしたいのは、このバッファを埋めるこの手順を実行している間、一時的に割り込みを無効にしますが、この手順中に発生した割り込みは、それが終了した後に実行します。 Cortex-M3でこれをどのように行うのが最適ですか?

4
LPC1343で回路を構築する
LPC1343 Cortex-M3チップを使っている人はいますか? 以前にPICマイクロコントローラーでいくつかの小さな回路を構築しましたが、今はLPC1243 Cortex-3 / ARMを使用しています。LPCXpressoプロトタイプボードを使用してきましたが、これは非常にうまく機能していますが、今は自分の回路用に適切なPCBを構築したいと考えています。私はこのチップをPICよりもソフトウェアで操作する方がずっといいと思っています(私も好きです!) PICを使用して、ハードウェアを構築するときに何かを忘れるのは簡単だという経験がありました。たとえば、一部の写真で低電圧プログラミングを無効にするためにピンをLowに引き下げる必要があるか、チップをプログラムできませんでした。 私の回路は、USB HIDインターフェイスを介して接続されたPCから入力を取得する、チップに接続された18x2ラインLCDモジュールです。プロトタイプボード/ブレッドボードですべて作業しています。 LPC1343で接続を計画しています 電源およびデカップリングコンデンサへの電源ピン 12 MHZクリスタルとコンデンサ。 ハードウェア(LCDモジュール)を駆動するために必要な6つのI / Oピン 抵抗器とプルアップ抵抗器を介してUSBポートにUSBピン リセットピンと内部USBブートローダーを有効にするピンのスイッチ そして、それだけです。私の質問は、接続する必要がある他のピンはありますか?チップを使った最初の「趣味」プロジェクトなので、これをできるだけシンプルに保つことが重要です。そして、率直に言って、余分な複雑さを追加せずにはんだ付けするのは十分難しいでしょう(しかし、私はそれができると確信しています!)。 回路図を実際に投稿するべきだと思いますが、明らかなものを逃しましたか?

3
CMSISに代わるBSDスタイルのオープンソース?
CMSISのライセンスはオープンソースに関しては不明確であるため、GPLまたはBSDスタイルのライセンスを使用しているかどうかに関係なく、オープンソースプロジェクトにCMSISを含めることはおそらく違反です。 Cortex MベースのMCU用のCMSISの代替品はありますか?BSDまたはApache2.0ライセンスと互換性がありますか? または、オープンソースプロジェクトにCMSISを含めてもよいかどうか誰かが知っていますか ありがとう
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.