这是我的问题,
我正在开发嵌入在我们为太空项目制造的电路板中的应用程序。该板使用 LEON2 处理器,它是 SPARC v8 的衍生产品,我们还使用 RTEMS 作为操作系统。
在这个应用程序中,我们必须在 EEPROM 中保存各种 FS 表的默认值,以便用户可以根据需要修改它们,而不必每次都这样做。
为此,我简单地创建了一个新部分 (.eeprom_data),并将其放置在 EEPROM 中的地址 0x6007cc40 处。这是通过使用规范文件和自定义链接描述文件完成的,该脚本将节定位在正确的地址,并告诉编译器将某些变量放在同一节中。
在这方面它似乎工作得很好。这是该部分和一个特定 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 的写操作绝对没有任何作用。然而,读操作完美地工作并正确返回存储在内存中的数据。
我真的不知道如何解决这个问题,所以我希望有人能帮帮我。
谢谢,莱奥。