問題タブ [flash-memory]

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.

0 投票する
1 に答える
32793 参照

c - mtdブロックデバイスに書き込む

MTDブロックデバイスを使用してNANDフラッシュメモリに書き込もうとしていますが、すべてがわかりません。

私がここで読んだように

  • mtdblockN読み取り専用ブロックデバイスNです
  • mtdN読み取り/書き込み文字デバイスNです
  • mtdNro読み取り専用のcharデバイスNです

しかし、Cのsimpleを使用してパーティションに直接バイトを書き込みたいのですが、writeそれがどのように機能するのかわかりません(最初に書き込みたいセクターを消去する必要があることを読んでいます)。

どのデバイスを使用する必要があり、このデバイスに書き込む方法は?

0 投票する
1 に答える
81 参照

motorola - Razr i: 外部メモリを RAM として使用する

そのため、Androidで外部メモリを実際のフラッシュメモリとして作成することについて少し読んだことがありますが、Razr iでそれを行うことについてはわかりません. 私はハッキングやテクノロジーに詳しくないので、それについてあなたの助けが必要です. デバイスにこの機能があるかどうかを知るにはどうすればよいですか?

データの保存にはあまり使用しません。そのため、より多くのアプリを同時に使用して、高速化するために 32GB microSD を購入することを検討しています。その価値はありますか?RAMとして使用できますか?

0 投票する
3 に答える
3665 参照

arduino - Arduino Mega vs Uno

私たちはドアベル認識システムをプログラミングしており、ほとんどの回路を処理するために Arduino を使用することにしました。私が確信していないことの1つは、Arduino UnoArduino Megaのプログラム容量です。Uno のフラッシュ メモリは約 32 KB しかないことはわかっていますが、私たちのプログラムは 1,000 行のコード (32 KB のしきい値を超えると思います) 以内に収まると予測されています。

プロジェクトを完了するのにあまり時間がないので、すぐに必要なものを処理できない場合に、Uno にメモリを多重化または追加する方法を考え出すのに多くの時間を費やしたくありません。 .

UnoにEEPROMを追加するのはどれほど難しい (そして時間がかかる) でしょうか? メガに固執したほうがいいでしょうか?

また、そもそもArduinoではなく、PC(DAQボードなどを使用)またはRaspberry Piを使用する方が簡単ですか?

私たちが設計しているシステムは、指紋スキャナーからの入力を読み取り、固有のリングをスピーカーに出力するために使用されています。私たちが必要としているのは、システムが物理的にコンパクトであり、家庭内の実際のドアベル システムを置き換えることができるようにすることです (Arduino がそれを達成するのに役立つことを願っています)。

コードが約 1000 行で投影される理由は、ドアのロック/ロック解除などのモバイル アプリケーション通信を実装する可能性があるためです。私のCプログラムのいくつかのサイズ(千行の範囲にあります)は、通常約100 KBです。

基本的に、プログラムが予測サイズよりも大きくなるか、それよりも小さくなる可能性があるポイントまで、それをスケーラブルにする必要があります。1 つで十分な場合でも、複数のボードを購入しなければならなくなりたくありません。

0 投票する
0 に答える
1888 参照

microcontroller - STM32Lシリーズのマイクロコントローラでフラッシュメモリを上書きする方法

既知のパターン (0xFFFFFFFF または 0x00000000) を書き込み済みのフラッシュ メモリに書き込み、プリミティブ ファイル システムの一部を無効にしようとしています。しかし、STM32FシリーズのようにSTM32Lシリーズではうまくいきません。

私は、フラッシュメモリが 0xFFFFFFFF に消去され、0 が書き込まれる STM32F ファミリのマイクロコントローラに慣れています。メモリを消去したいものは何でも書くことができます。

そして、何の上にも 0x00000000 (すべてゼロ) を書き込むことができます

今はSTM32Lファミリー(低消費電力)を使っていますが、フラッシュメモリが全然違います。0x00000000 に消去し、1 を書き込みます。しかし、すべてのものを確実に書く方法がわかりません。たとえば、消去すると、これができます

しかし、私が試してみると

最終的な答えにはBが含まれていることに注意してください。すべてのものではありません。実際、バイト 0x00 から 0xFF を消去したばかりのメモリ ページに書き込み、その上に 0xFFFFFFFFFF を書き込むと、非常にグリッチな結果が得られます。

これが私が使用している疑似コードです (FlashWrite は STM std ペリフ ライブラリのラッパーです)。毎回ビットをシフトする<<1で8回の書き込みのパターンを書き込もうとしましたが、実際に私が望んでいたもの(すべて1)が得られましたが、これが信頼できるかどうかはわかりません。

0 投票する
2 に答える
539 参照

logging - 整数オーバーフローを考慮して、循環バッファ内の最も古いエントリを見つける

一連のログ エントリをフラッシュ メモリ デバイスの循環バッファに保存したいと考えています。

フラッシュ デバイスにはオンボード ウェア レベリングがないため、ロギング コードで処理する必要があります。循環バッファーは実装の一部としてこれを行いますが、整数オーバーフローの問題に悩まされています。

私がやろうとしているのは、フラッシュ領域を次のような領域に分割することです:

Index = 0xFF は「消去」を意味します。したがって、ID の範囲は 0x00 から 0xFE (ゼロから 254) です。つまり、インクリメント ルールは次のとおりです。

フラッシュが始まると、次のようになります (ID のみを表示)。

最初の空のブロック (インデックス ゼロ) を選択し、最初のログ エントリに書き込みます。

これは、エントリが消去されなくなるまで続きます。

番号が最も小さいブロックを選択したら、それを消去して新しいデータで上書きします。

しかし、8 ビット ID がオーバーフローすると、悪いことが起こります。

これは、最初のブロックがすべての書き込みに使用されていることを意味し、回避したい「不均一な書き込み」シナリオに戻ります。私がやりたいことは、この場合は「FB」である最も古いブロックを見つけることです。

これが私が現時点で持っているコードです(Pythonで):

整数オーバーフローのケースを正しく処理するにはどうすればよいですか?

0 投票する
1 に答える
465 参照

linux-kernel - 古いカーネルでの mtd ドライバーの更新

Spansion 64MB NOR フラッシュ (mtd/cfi_cmdset_0002 経由) を使用しており、フラッシュ消去操作に関連する問題に直面しています。

私は Linux カーネル 2.6.10 を使用しており、/drivers/mtd のコードを 2.6.10 と 3.11.1 で比較しています。

/drivers/mtd/chips/cfi_cmdset_0002.c) およびその他の mtd ファイルに対して、ビット トグルのチェック、フラッシュ消去中の遅延の変更、およびフラッシュ操作の VPP の有効化と無効化に関するいくつかの修正が行われました。

drivers/mtd/chips の下のファイルに変更を加えましたが、/mtd ファイル (mtdpart、mtdcore、cmdlinepart など) の変更を確認すると、大量の移植が必要であることがわかり、カーネル自体の移植が必要になる可能性があります。この問題を回避する方法はありますか?カーネルを変更したくないが、mtd ドライバー コードを 2.6.10 自体で可能な限り最高のものにアップグレードしたいからです。

また、2.6.10 から 3.11.1 への mtd コードの変更ログの場所を知りたいと思っていました (場所がわかりませんでした。また、これらのファイルの改訂履歴も変更のために更新されています)。