Embedded: Доступ к незаписанному содержимому адреса ПЗУ

Я работаю над встроенным устройством, которое использует Aurix TC234. Мое программное обеспечение (AUTOSAR), которое работает на нем, должно выполнять некоторые проверки во время запуска в определенном диапазоне адресов ПЗУ.

Данные, которые должны быть проверены, не записываются во время перепрошивки моего программного шестнадцатеричного файла. Это означает, что диапазон адресов должен быть записан до того, как мое программное обеспечение будет прошито на этом устройстве.

Мой худший сценарий: кто-то забывает прошить этот диапазон адресов. Мое программное обеспечение мигает, и во время запуска осуществляется доступ к этой памяти. В этом случае возникает ловушка.

Мой вопрос: есть ли безопасный способ проверить этот конкретный диапазон адресов ПЗУ, был ли он записан или нет? Можно ли справиться с такой ловушкой?


person Ferhat    schedule 19.05.2016    source источник
comment
есть ли причина не добавлять дополнительный раздел, который будет охватывать требуемый диапазон адресов с флеш-контентом по умолчанию? а потом написать дополнительные данные?   -  person Blueman    schedule 20.05.2016
comment
@Blueman Порядок прошивки фиксирован. Сначала данные должны быть прошиты, а затем программное обеспечение. Содержимое флэш-памяти по умолчанию в моем программном обеспечении перезаписывало бы правильно прошитые дополнительные данные. Я не знаком с исправлениями ECC. Можно ли повлиять на ЭКО? Могу ли я деактивировать его для определенного диапазона адресов в ПЗУ?   -  person Ferhat    schedule 20.05.2016
comment
Я не знаком именно с этой версией микро и напрямую с ловушками не работал, но, насколько я помню, у TC27X и TC29X была возможность корректно выходить из ECC-ловушек и не было возможности отключить ECC на определенном диапазоне или вообще. Трудно предоставить более подробную информацию, так как каждый опубликованный документ Infineon является конфиденциальным, и я имею к нему доступ только в офисе.   -  person Blueman    schedule 20.05.2016
comment
Это звучит интересно. Не могли бы вы дать мне несколько ключевых слов об этом контролируемом выходе? Я поищу их в руководстве в понедельник в офисе.   -  person Ferhat    schedule 20.05.2016


Ответы (2)


После нескольких проверок поток TC29X с ошибкой ECC для ПЗУ можно обработать, как показано ниже:

  • включить сигналы SMU
  • поймать ошибку ECC в ISR от SMU
  • сохранить флаг в области ОЗУ без инициализации
  • Необходимо вызвать SW reset (нет выхода из trap для ECC)
  • при следующем запуске проверить значение флага

Надеюсь, что эта помощь и подобное решение будут доступны на вашем micro.

person Blueman    schedule 23.05.2016
comment
Я дам ему попробовать. Спасибо! - person Ferhat; 23.05.2016

Я не знаком с TC234, но я был бы удивлен, если бы доступ к незаписанной флэш-памяти на любом встроенном устройстве вызвал бы ловушку. Единственная разница между записанной и незаписанной флэш-памятью должна заключаться в том, что в последней должны быть записаны все единицы (при условии, что флэш-память начинает стираться). Вы должны иметь возможность просто проверить свой блок данных на наличие всех байтов, равных 0xFF.

На случай, если у вас может быть флэш-память, которая изначально не была стерта, вы можете добавить контрольное поле в свой блок данных, возможно, содержащее значение CRC для остальной части блока. При запуске проверьте содержимое блоков по полю CRC.

Изменить: если вы действительно получаете ловушку, я ожидаю, что это связано с тем, что ваш код использует данные в блоке без предварительной проверки, что приводит к чему-то вроде использования недопустимого индекса в массиве или неправильного указателя. Ответ отозван. Смотрите комментарии.

person DoxyLover    schedule 19.05.2016
comment
Мое программное обеспечение основано на AUTOSAR. Мне нужно еще раз проверить, кто устроил эту ловушку. Есть ли у вас опыт работы с АВТОСАР? Я использую фиксированный адрес памяти для доступа к памяти, что определенно правильно. - person Ferhat; 19.05.2016
comment
В этом семействе Aurix вся область ОЗУ и ПЗУ защищена ECC, поэтому доступ к неинициализированной области (не прошитой в этом контексте) вызовет ловушку, как описано @Ferhat - person Blueman; 20.05.2016
comment
В таком случае я исправляюсь и отказываюсь от своего ответа. Я вычеркну это, но оставлю, чтобы эти комментарии не потерялись. - person DoxyLover; 20.05.2016
comment
Хороший намек @Blueman. Это может быть причиной. Есть идеи, как правильно обрабатывать эти ловушки ECC? - person Ferhat; 20.05.2016