タグ付けされた質問 「embedded」

組み込みシステムは、1つまたはいくつかの専用機能を実行するように設計されたコンピューターシステムで、多くの場合、リアルタイムコンピューティングの制約があります。多くの場合、ハードウェアと機械部品を含む完全なデバイスの一部として埋め込まれます。

7
外部ウォッチドッグタイマーの必要性
マイクロコントローラー用の外部ウォッチドッグタイマーの必要性は何ですか? ほとんどのマイクロコントローラは、内部ウォッチドッグタイマーを使用して設計されています。ただし、一部の回路では、外部ウォッチドッグタイマー(PIC16F1824など)を使用しています。

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

4
工場出荷時設定へのリセットはどのように機能しますか?
すべての組み込みデバイスには、何かがおかしい場合にユーザーが自分のデバイスをリセットできるようにする「工場出荷時リセット」オプションが含まれています。 STM32ボードでファームウェアを開発しています。ファームウェアには、(新しいイメージを含むバイナリファイルを送信することにより)UARTを介してアプリケーションをアップグレードできるブートローダーが含まれており、別の機能を追加したい:ファクトリーリセット。ユーザーがこのオプションを選択すると、ボードは元の画像をロードします。 工場出荷時リセットとは何ですか?バイナリファイル全体をメモリに再度読み込むことですか、それともエンドユーザーによって変更された変数を再初期化する関数を呼び出すだけですか? そうするためのベストプラクティスは何ですか? 元のFWを保存する場所は?内部または外部フラッシュにありますか?

2
SPIは中断しても安全ですか?
ファームウェア内からmicroSDカードに書き込んでいますが、これは優先度が最も低いタスクなので、読み取り/書き込み中に他のタスクによって中断される可能性があります。 ここで、UARTを使用してこのmicroSDカードと通信したとします。読み取り中の問題は、ハードウェアRX FIFOがオーバーフローすることであるため、努力できる最大遅延は(FIFOサイズ×バイト/秒)であり、書き込み中は問題はありません。次の文字を送信します。 SPIを使用している今、これはどのように機能しますか?書き込みの場合は問題ではなく、読み取りの場合はSPI FIFOサイズに依存する状況と同じですか?

6
組み込みシステムでのグローバル変数の使用
私は自分の製品のファームウェアを書き始め、私はここで新人です。グローバル変数またはグローバル関数を使用しないことに関する多くの記事を読みました。8ビットシステムでグローバル変数を使用するための制限はありますか、それとも完全な「No-No」ですか。システムでグローバル変数を使用する方法、またはそれらを完全に回避する必要がありますか? 私のファームウェアをよりコンパクトにするために、このトピックに関して皆さんから貴重なアドバイスを受けたいと思います。
17 c  embedded  firmware 

3
組み込みプロセッサで最初に値を設定してからGPIOの方向を設定する必要があるのはなぜですか?
ファームウェアエンジニアとしてフルタイムの仕事をしています。最近、GPIO構成を確認し、必要に応じて設定を変更するタスクを与えられました。間違って設定されたピンがいくつか見つかったので、当然のことながらそれらを再設定しましたが、間違った順序で行ったと言われました。私が話していることは次のとおりです。 変更前:GPIO1.direction = INPUT; 後:GPIO1.direction = OUTPUT; GPIO1.value = 0; ただし、コードのレビュー中に、初期化の順序を次のように変更する必要があると言われました。 GPIO1.value = 0; GPIO1.direction = OUTPUT; つまり、最初に値を設定してから、ピンの方向を設定します。入力用と出力用に2つのレジスタを使用するため、これが最新のプロセッサ上で必要であると言われましたが、古いプロセッサは1つのレジスタしか使用しないため、操作の順序は重要ではありません。 (注:Modern = ARM Cortex M3以降、Old = Intel 8051) 私は職場でより良い説明を求めましたが、良い答えを得ることができませんでした。それが私がここで尋ねることにした理由です。 だからここに私の質問があります: 新しいプロセッサで初期化の順序が重要なのはなぜですか? 古いプロセッサで初期化の順序が重要でないのはなぜですか? 最新のプロセッサでは、2つのレジスタについて何を語っていますか? 古いプロセッサでどのレジスタについて話しているのですか? 誰かが図のようなものを提供できるなら、それはさらに良いでしょう。
16 embedded  gpio 

1
ビットバンディングとは何ですか?
ARM Cortex M3リファレンスマニュアルを読んでいますが、「ビットバンド」、「ビットバンド領域」、「ビットバンドエイリアス」という概念が表示されます。 ビットバンディングとは何ですか?
16 embedded  arm 

4
埋め込みビデオはどこから始めますか?
上司から最近、かなり低品質のビデオを継続的に録画し、過去数時間を何らかの形で内部メモリに保存できる製品を設計するのはどれほど難しいかと尋ねられました。これまでにビデオを使った開発を行ったことはありません。デザインを始めるのに適した場所はどこですか? MCUについて何か提案はありますか?最近、他の設計にSilicon Labs MCUを使用しています。 プロジェクトをできるだけシンプルに保つために使用するのに最適なカメラタイプは何ですか? ビデオを保存するのに最適な形式は何ですか? ビデオコーデックが必要ですか、それとも再生をサポートするデバイスのみが必要ですか?このデバイスはおそらく、再生のためにビデオをPCに転送できる必要があります。 あなたが提供できる洞察は大歓迎です! 追加: CMOSイメージセンサーのデジキーを探しています。OmniVisionと呼ばれる会社によって作られたものがいくつかあります。これらのデータシートには、「キャプチャしたデータは、標準のパラレルデジタルビデオポート(DVP)またはシングルランドMIPI高速シリアルインターフェイスのいずれかで転送できる」と書かれています。 どちらも聞いたことがない。それをどのように画像ファイルに入れるのですか?Cを使用していますか?
16 video  embedded 

3
一部の論理1でデータ行に奇妙な「ノッチ」が表示されるのはなぜですか?
レトロコンピューティングの楽しみのためにZ80自作コンピューターを構築し、電子設計の基礎を学ぼうとしています。概念実証のために、私は前の週にブレッドボード上に基本的なシステムをすでに組み立てました。 現在のプロトタイプは非常に単純です。Iは、システムクロックとして74HCT04ピアス発振器によって駆動される4 MHzの水晶を用い、透過モード(中の2つの74HCT573ラッチLE16ビットアドレスバスのためのバッファとして高い)により制御反対方向にさらに2 74HCT573 RDとNOT RD双方向データとしてバスバッファ。私は、添付の100nsの AT28C256 EEPROM(のみ16 KiBのがデコードさ)および2つの150ナノ秒のシステムバスに8 KiBのSRAMチップ。74HCT42を使用してCS信号を生成しOE、EEPROMをLow WEからHighにハードワイヤードし、EEPROM を制御するCS信号を1つだけ残しました。 ブレッドボード上のすべてがうるさいですが、すべてのステージを完了した後、システムは完全に動作しているように見えました。今では、EEPROMから命令をフェッチSRAMへ/からデータを読み取り、書き込み、およびそれは別のラッチ74HCT573から作られたシリアルポートを持っている、ことができますD0に接続されているD0、LEある(NOT (IOREQ NAND WR))、出力から出てくるQ1だけで一つの出力ポート、つまり、 adrressデコードロジックなし。CPU / RAMを多用するベンチマークプログラムを作成しましたが、コンピューターは期待どおりの結果を出力できます。Memdumpsは、Z80がEEPROMからすべてのバイトを正しく読み取ることができるため、すべてが機能していることも示しました。 しかしD0、データバスのピンをプローブしようとすると、論理1の出力に奇妙な「ノッチ」が見られました。 そしてCS、EEPROM の信号がアクティブになった直後に、いくつかの論理1で常に表示されるようです。たとえば、青色のEEPROM CS信号に重畳された奇妙なノッチのキャプチャです。 問題を切り分けようとしたので、SRAMのすべてのCSピンをHIGHに固定し、システムから効果的に削除し、メモリアクセスのない単純なテストプログラムを作成しました。 .org 0x00 di xor a loop: out (0x00), a inc a jp loop しかし、問題は依然として変わらず、奇妙な「ノッチ」でいつものために表示されるいくつかの論理1S、直後にMEMRQ(それが今、基本的にワンチップだから)、および/またはCS(青)はローになります。 SRAMのすべてのCSピンはHIGHであるため、システムにはほとんどメモリとしてAT28C256 EEPROMチップ、出力ポートとしてラッチがあります。システムには、DMA要求中にEEPROMをオンザフライで再プログラムするAtmega328pで作られたインシステムプログラマもありますが、プログラマのすべてのデータとアドレス出力をトライステートにしたので、それが原因ではないと思います。プログラマーを追加する前からノッチを見てきました。 そのため、オペコードフェッチサイクル中に「ノッチ」を作成する必要があります。彼らは何ですか? 私にはいくつかの仮説があります: 問題はありません。これはブレッドボードのシグナルインテグリティが悪いために発生したもので、適切に設計され、適切に分離されたPCBでは自動的に消えます。ブレッドボードには、インピーダンス不整合、反射、寄生容量、クロストーク、EMI / RFIなど、あらゆる種類の信号整合性の問題があります。ボード上を走る長いバスワイヤは、問題をある程度悪化させる可能性があります。 もしそうなら、「ノッチ」の性質を説明できますか?この現象はEEに名前がありますか?私は以前に多くのオーバーシュートとリンギングを見ましたが、「ノッチ」を見たことはありません。そして、なぜ私はいくつかの論理レベルでのみそれを見るのですか? タイミング。EEPROM出力または他の論理回路の短い「整定時間」がバスにこの奇妙な効果を引き起こしている可能性はありますか? 扇形に広がります。おそらく長いバスには大量の電流が流れ、静電容量が大きいため、EEPROM出力はバスを高く駆動するのに苦労していましたか?おそらく、オシロスコープのプローブもバスに負荷をかけていますか? バスの競合、または何かがデータバスをプルする原因となった他の論理エラー。ありそうもないと思う?バス上の他のコンポーネントは分離されており、単一のAT28C256 EEPROMまたはラッチがこれを行う方法を確認できませんでした。しかし、配線エラーやブレッドボードの隠れた内部短絡のために、それはまだ可能だと思います。 …

4
ARM Cortex A9にクリティカルセクションを実装する方法
ARM926コアからCortexA9にいくつかのレガシーコードを移植しています。このコードはベアメタルであり、OSまたは標準ライブラリは含まれていません。すべてカスタムです。コードのクリティカルセクショニングによって防止されるべき競合状態に関連すると思われる障害が発生しています。 このCPUにクリティカルセクションが正しく実装されていない可能性があるかどうかを確認するには、アプローチに関するフィードバックが必要です。GCCを使用しています。微妙なエラーがあると思います。 また、ARM用のこれらのタイプのプリミティブを備えたオープンソースライブラリ(または優れた軽量スピンロック/セメフォライブラリ)もありますか? #define ARM_INT_KEY_TYPE unsigned int #define ARM_INT_LOCK(key_) \ asm volatile(\ "mrs %[key], cpsr\n\t"\ "orr r1, %[key], #0xC0\n\t"\ "msr cpsr_c, r1\n\t" : [key]"=r"(key_) :: "r1", "cc" ); #define ARM_INT_UNLOCK(key_) asm volatile ("MSR cpsr_c,%0" : : "r" (key_)) コードは次のように使用されます。 /* lock interrupts */ ARM_INT_KEY_TYPE key; ARM_INT_LOCK(key); <access registers, shared globals, …
15 c  embedded  interrupts 

2
誰かがNuttX RTOSを評価しましたか?
今日Linux User's Journalを読んでいると、NuttX RTOS についてのちょっとした宣伝文句に出会いました。私は彼らのウェブサイトをチェックアウトし、その機能セットと8052にそれを入れる能力にかなり感銘を受けました!POSIXをサポートしていることは興味深いと思います。POSIXは、社内RTOSのクライアントの1人のために取り組んできたものです。これは、社内のRTOSよりももう少し豊富な機能のようです。 他の誰かがNuttXのことを聞いて、試してみましたか?その場合、FreeRTOSなどの他のRTOSと比較してどうですか?
15 embedded  rtos 

1
NANDフラッシュメモリの書き込みはどのように機能しますか?
以下は、NANDフラッシュメモリの動作に対する私の理解の写真です。 NANDフラッシュは、最初に単一ブロック内のすべてのセルを消去し(基本的に「1」に設定する)、次に選択的に0を書き込むことで機能します。私の質問は-ワードラインは単一のページ内のすべてのセル間で共有されているため、NANDコントローラープログラマーはどのようにページ内の特定のセルに0を設定しますか? NORフラッシュの場合、ホットエレクトロン注入(セルに高電圧を印加)を使用して特定のセルをプログラムできることが簡単にわかります。しかし、NANDでは、NANDセルが互いに直列に接続されているため、NANDセルを直列に接続することはできません。また、特定のセルに高電圧を印加することもできません。したがって、NANDで行われるのは量子トンネリングです。ここでは、ワード線に0を書き込むために高電圧が与えられます。 1ページを0にプログラムするための高電圧は、ページ内の他のビットも0にしないでください。
14 embedded  flash 

3
非プリエンプティブOSの利点は何ですか?これらの特典の価格は?
むき出しの金属MCUの場合、バックグラウンドループとタイマー割り込みアーキテクチャを備えた自家製コードと比較して、非プリエンプティブOSの利点は何ですか?これらの利点の中で、プロジェクトがバックグラウンドループアーキテクチャで自家製コードを使用するのではなく、プリエンプティブOSを採用するのに十分魅力的ですか? 。 質問の説明: これらすべてが私の質問に答えてくれたことに本当に感謝しています。答えはもうすぐそこにあると感じています。ここで質問にこの説明を追加します。これは、私自身の考慮事項を示しており、質問を絞り込んだり、より正確にしたりするのに役立ちます。 私がやろうとしているのは、一般的なプロジェクトに最適なRTOSを選択する方法を理解することです。 これを実現するには、すべてのアプリケーションに最適なRTOSが存在しないため、さまざまな種類のRTOSおよび対応する価格からの基本概念と最も魅力的な利点のより良い理解が役立ちます。 数年前にOSに関する本を読みましたが、もう持っていません。ここに質問を投稿する前にインターネットで検索したところ、この情報が最も役立つことがわかりました:http : //www.ustudy.in/node/5456。 さまざまなRTOSのWebサイトでの紹介、プリエンプティブスケジューリングと非プリエンプティブスケジューリングを比較する記事など、他にも多くの役立つ情報があります。 しかし、プリエンプティブではないRTOSを選択する場合、およびタイマー割り込みとバックグラウンドループを使用して独自のコードを作成する方がよい場合について言及したトピックは見つかりませんでした。 確かな答えはあるが、満足していない。 特に業界の実践において、より経験のある人々からの答えや見解を知りたいです。 私のこれまでの理解は 、OSの使用の有無にかかわらず、特定の種類のスケジューリングコードは常に必要です。たとえ次のようなコードの形式であってもです。 in the timer interrupt which occurs every 10ms if(it's 10ms) { call function A / execute task A; } if(it's 50ms) { call function B / execute task B; } 利点1: ノンプリエンプティブOSは、スケジューリングコードの方法/プログラミングスタイルを指定するため、エンジニアが以前に同じプロジェクトにいなくても同じビューを共有できます。次に、コンセプトタスクに関する同じビューを使用して、エンジニアはさまざまなタスクに取り組んでテストし、可能な限り独立してプロファイルを作成できます。 しかし、これから実際にどれだけ得ることができますか?エンジニアが同じプロジェクトで作業している場合、プリエンプティブOSを使用せずに同じビューをうまく共有できます。 あるエンジニアが別のプロジェクトまたは会社の出身である場合、以前にOSを知っていれば、その恩恵を受けることができます。しかし、もし彼がそうしなかったとしても、新しいOSや新しいコードを学ぶことは彼にとって大きな違いにはならないようです。 利点2: …

17
フラッシュとRAMを増やすためにコードを圧縮する方法は?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 2年前に閉店。 私たちの特定の製品の機能の開発に取り組んできました。同じ機能を別の製品に移植する要求がありました。この製品は、伝統的に64Kのフラッシュと2KのRAMを搭載したM16Cマイクロコントローラーに基づいています。 これは成熟した製品であるため、132バイトのフラッシュと2バイトのRAMしか残っていません。 要求された機能を移植するには(機能自体が最適化されています)、1400バイトのフラッシュと〜200バイトのRAMが必要です。 コード圧縮によってこれらのバイトを取得する方法について提案はありますか?既存の作業コードを圧縮しようとするとき、どのような特定の事柄を探しますか? どんなアイデアでも大歓迎です。 ありがとう。
14 embedded 

4
ArduinoとJTAGインターフェースを作成することは可能ですか?
もしそうなら、私はこれを行う方法を教えてくれるサイトに私を向けることができますか?私は方法を見つけたかもしれないと信じていますが、それがまだ機能するかどうかはわかりません(テストするものを見つける必要があります)。 この質問は、ここにある私の以前の質問に関連しています。 より多くの背景情報が必要な場合。
14 arduino  arm  embedded  jtag 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.