問題タブ [eeprom]
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.
java - USB通信ポート
PIC18F4550 から EEPROM にデータを送信したいと考えています。PIC は、(USB ポート通信) を使用して PC から PIC にデータを送信したい開発キットにあります。*シリアルではありません*
C または Java 言語を使用してこの操作を実行する方法について、適切なコード例またはチュートリアルを探しています。
c - C18: 未使用のライブラリ関数は EPROM のスペースを消費しますか?
Library.h
main.c
多くの関数定義を含むライブラリ ファイルがあります。未使用のライブラリ関数により、生成されるマシン コードのサイズは増加しますか? それとも、コンパイラは未使用の関数を無視してコードを最適化しますか?
IDE: MPLAB 8.43
コンパイラ: MCC18 3.34
PIC: 18F2550
assembly - PIC16F84 - eeprom 読み書き
PIC16F84 マイクロコントローラー用の eeprom 読み取り/書き込みサブルーチンを作成するタスクがあります。私はそのようなコードを書きました:
そうですか?EEProm_Read に問題があります。うまくいかないようです。
pic18 - PIC18F4550を搭載したEEPROM 24lc256
私は pic18f4550 を i2c EEPROM と接続する必要がある大学のプロジェクトに取り組んでいます。
プロテウスシミュレーターを使って以下の回路を実装しました。私のつながりで以下
実際にインターフェイスを実装したとき、PIC が eeprom から読み取るときに問題に直面しました。中断されているため、読み取り操作が正しく実行されたかどうかを確認できませんでした。
何が問題なのですか?
arduino - マイクロコントローラのEEPROMウェアレベリングの一般的なアルゴリズムはありますか?
私はAVRのEEPROMの寿命を最大化するArduinoライブラリに取り組んでいます。保存する変数の数を取得し、残りを実行します。これは私の試みですが、すべての場合に機能するとは限りません。
背景情報
Atmelによると、各メモリセルの定格は100,000回の書き込み/消去サイクルです。また、ウェアレベリングの実行方法を説明するアプリケーションノートも提供します。アプリケーションノートの概要は次のとおりです。
2つのメモリアドレス間で書き込みを交互に行うことにより、消去/書き込みを200,000サイクルに増やすことができます。3つのメモリアドレスにより、300,000回の消去/書き込みサイクルなどが可能になります。このプロセスを自動化するために、ステータスバッファを使用して、次の書き込みがどこにあるべきかを追跡します。ステータスバッファもパラメータバッファと同じ長さである必要があります。これは、ウェアレベリングも実行する必要があるためです。次の書き込みのインデックスを保存できないため、対応するインデックスをステータスバッファにインクリメントします。
これが例です。
次の書き込みが発生する場所を決定するために、要素間の違いを調べます。前の要素+1が次の要素と等しくない場合、次の書き込みが発生する場所です。例えば:
上記の例は、1つの変数のEEPROMの寿命を延ばす方法を示しています。複数の変数の場合、EEPROMを同じデータ構造で、バッファが小さい複数のセグメントにセグメント化することを想像してください。
問題
私は上で説明したもののための作業コードを持っています。私の問題は、バッファ長が256以上の場合にアルゴリズムが機能しないことです。これが何が起こるかです。
質問
上記の問題をどのように解決できますか?次の要素をどこに書くべきかを追跡するためのより良い方法はありますか?
android - PN544 NFC チップのユーザー マニュアルまたは eeprom 命令セットを探しています
Galaxy Nexus フォンでmfoc ライブラリを使用したいのですが、NFC Android API にいくつかのメソッドがありません。そのため、それらのメソッドを実装して、独自の ROM を構築したいと考えています。
NFC pn512 チップでは、ManualRCVReg レジスタの ParityDisable ビットを使用して自動パリティ生成をオフにすることができました。ユーザー マニュアルには、すべての PN12 レジスタ アドレスが記載されています。
pn533 では、eeprom を介してチップを構成することも可能でした。一部のアドレス/データはユーザー マニュアルに記載されています。
Android ソースの libnfc-xp のコードでは、pn544 チップも device/samsung/tuna/nfc/nfc_hw.c のいくつかの eeprom 設定で構成されていることがわかりますが、すべての PN544 レジスタ アドレスといくつかを見つけることができません。 nfc_hw.c のコメントが不明確または欠落しています)。
では、PN544 チップのパリティ処理をその eeprom 設定で構成することは可能だと思いますか? 書き込む必要があるアドレス/データを知っていますか?
可能な eeprom 設定のリストまたは PN544 チップのユーザー マニュアルがあると便利です。
linux - Linux USB カーネル ドライバーは、USB Wi-Fi カード内の EEPROM とどのようにやり取りしますか?
RTL8187 Wi-Fi チップを使用して Wi-Fi カードに関連付けられている Linux ドライバーのソース コードを理解しようとしています。具体的には、Linux と ALFA AWUS036H USB Wi-Fi カードの USB プロトコル層でのやり取りを追跡しようとしています。私はこれまで、2 つの方法を使用してこれを行ってきました。ソース コードにステートメントを1)
配置し、. これらの 2 つの方法を使用すると、低レベルで何が起こっているかを追跡できますが、高レベルで何が起こっているのかを理解することはできません。 printk()
2)
usbmon
この時点で特に気になったのは、rtl8187 ドライバーが最初に行うことの 1 つは、USB デバイス内の EEPROM に対する読み取り/書き込みの全負荷であるように見えることです。 EEPROM が USB デバイスの内部 (または外部) でどのように機能するか。一例として/usr/src/linux/drivers/net/wireless/rtl818x/rtl8187/dev.c
、USB Wi-Fi カードから MAC アドレスを読み取っていると思われるコード行の周りに print ステートメントを配置しました。
今、私はこのようなものがほんの数個の USB 制御メッセージを生成するかもしれないと予想していましたがprintk()
、 のサブルーチン内にある他のステートメントはeeprom_83cx6_multiread()
、この単純な操作が 60 以上の USB 制御メッセージの読み取りとおそらく同じ数の USB 制御のオーダーで生成することを示唆しています書いています。
USB デバイス内の USB と EEPROM の間の相互作用を説明する高度なチュートリアルはどこかにありますか? どこから情報を探し始めたらよいのか途方に暮れています。私は常に、EEPROM のようなものが USB プログラマーから離れて抽象化され、デバイスが EEPROM で発生する必要のあるものに変換する単純な USB メッセージを使用すると想定していました。USB ドライバー コードをさらに掘り下げると、EEPROM に高パルスと低パルスが送信されているように見えますが、操作間に特定の (説明的ではありませんが) タイミング遅延があり、そのような抽象化が存在しないことを意味しているようです。すべての要素がどのように連携しているかを理解するには、どこに行けばよいのか本当にわかりません。
c - PIC32MX の IC2 を介した EEPROM への書き込みの失敗
写真: PIC32MX564F128L
EEPROM: 24AA16
I2C経由で外部EEPROMを読み書きするために、CでPICのコードをいくつかまとめました。これらの方法を使用して 1 バイトを書き込み、検証のために再度読み取ると、機能します。書き込み場所を変更すると機能するため、アドレス指定が機能していると推測され、読み戻したバイトは書き込みと一致するため、それも機能しているように見えます。これまでのところすべて順調です!
次に、同じルーチンを 100 回使用するようにコードを拡張し、隣接する場所に異なるバイトを書き込みました。IE は、位置 x から x + 99 に 0 から 99 の値を書き込みます。次に、100 の位置を読み戻して書き込みを確認しましたが、ここで問題が発生しました。
さまざまなテストから、読み取りメソッドは最初の場所から最後の値 (99) を取得し、他の場所からは何も (0xFF) を取得しないため、書き込みメソッドはすべての書き込みを同じ場所で実行するように見えます!
スコープは、クロックが良好であること、および単一の書き込みが機能することを期待していたデータ ラインのトグルを示しています。
PIC のデバッグは、メソッドによって使用されているアドレスが連続していることを示しているため、すべての書き込みが同じ場所で実行されている理由について少し困惑しています! この場所は変更できますが、常にすべての値に最初のバイトが使用されます。
誰が何が間違っている可能性があるか知っていますか?
私のコードはここにあり、エントリ ポイントは testEeprom() です。
c++ - 特定のアドレス ブロックでの I²C EEPROM 読み取りエラー
Arduino のI²Cバスを Microchip PICDEM 2ボードの I²C バスに接続して、32K バイトの EEPROM をプログラムしています。以下のコードには読み取りの問題があります。具体的には、EEPROM 全体に 16 ビットのカウント パターンを書き込み、すべてのデータが正しいことを確認しました。
次のコードは、PC 上の Java プログラムによって駆動されます。16 バイトのページを読み書きしています。PC からのアドレスを監視しましたが、すべて正しいです。戻ってくるデータは、 のアドレスの 256 バイト ブロックを除いて、すべて正しいもの0x0AXX
です。読み取ったデータは の行のようになります0x9F0
。エラーが発生する理由を理解できませんでした。
PC が受信したデータは、次のブロックを除いてすべて正しいです。
このブロックの前後はすべて問題ありませんが、0x0A00 ~ 0x0AFF は 0x09F0 行からのデータを繰り返します。次のコードを使用して、すべてのカウント パターンを記述および検証しました。
私は何日もこれに苦労してきました。どんな洞察も大歓迎です。
c - avrdude で EEPROM 以外のすべてを消去するにはどうすればよいですか?
私は2つのメインファイルを持っています。1 つは EEPROM に書き込み、もう 1 つは EEPROM から読み取ります。私は次のことをしたい:
- フラッシュ main.hex (EEPROM に書き込むもの)
- EEPROM の内容以外をすべて消去する
- フラッシュ main.hex (EEPROM から読み取るもの)
Windows 7でJTAG ICE mkIIを使用してAT90CAN128を使用しています。次の方法
で avrdude を実行します。