Вот мой вопрос,
Я работаю над приложением, встроенным в доску, которую мы изготовили для космического проекта.
На плате используется процессор LEON2, производный от SPARC v8, и мы также используем RTEMS в качестве ОС.
В этом приложении мы должны сохранить значение по умолчанию для различных таблиц для FS в EEPROM, чтобы пользователь мог изменять их так, как он хочет, без необходимости делать это каждый раз.
Для этого я просто создал новый раздел (.eeprom_data) и разместил его по адресу 0x6007cc40, который находится в EEPROM. Это было сделано с помощью файла спецификации и специального сценария компоновщика, который разместил раздел по правильному адресу и велел компилятору поместить определенные переменные в этот же раздел.
Кажется, в этом отношении все работает нормально.
Вот выдержка из 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);
Операция записи, которая должна записать 0x789A в EEPROM, абсолютно ничего не делает
Операция чтения, однако, работает отлично и корректно возвращает данные, хранящиеся в памяти.
Я действительно не знаю, как решить эту проблему, поэтому я надеюсь, что кто-нибудь может мне помочь.
Спасибо, Лео.