これが私の質問です。
私は、宇宙プロジェクトのために自社で製造したボードに組み込まれたアプリケーションに取り組んでいます。このボードは、SPARC v8 の派生である LEON2 プロセッサを使用し、OS として RTEMS も使用します。
このアプリケーションでは、FS のさまざまなテーブルのデフォルト値を EEPROM に保存する必要があります。これにより、ユーザーは毎回行う必要なく、好きなように変更できます。
これを実現するために、新しいセクション (.eeprom_data) を作成し、EEPROM 内のアドレス 0x6007cc40 に配置しました。これは、仕様ファイルとカスタム リンカー スクリプトを使用して行われました。このスクリプトは、セクションを正しいアドレスに配置し、特定の変数をこの同じセクションに配置するようコンパイラに指示しました。
この点に関してはうまく機能しているようです。以下は、セクションと 1 つの特定の var の objdump の抜粋です。
6 .eeprom_data 000033c0 6007cc40 6007cc40 00038a80 2**3
CONTENTS, ALLOC, LOAD, DATA
6007fbda g O .eeprom_data 00000002 Downlink_Priority_Vc1_default_value
唯一の問題は、完全に機能していないように見えることです。私のアプリケーションは問題なく正しく動作しますが、このような単純なテストを実行しても部分的にしか機能しません:
Eeprom_ChipEnable(TRUE);
managed_faulty_sectors_default_crc = 0x789A;
tmp = managed_faulty_sectors_default_crc;
Eeprom_ChipEnable(FALSE);
EEPROM に 0x789A を書き込む必要がある書き込み操作はまったく何もしませんが、読み取り操作は完全に機能し、メモリに保存されているデータを正しく返します。
この問題を解決する方法がよくわからないので、誰かが私に手を差し伸べてくれることを願っています。
ありがとう、レオ。