Загрузчик LPC1114 и пользовательское приложение используют одни и те же прерывания

Дополнительный загрузчик для NXP LPC1114 / 5 Ссылка на приложение NXP, примечание 10995 Необходимо использовать одни и те же прерывания в загрузчике и пользовательском приложении.

Согласно NXP AN10995, вектор int находится только в позиции 0, и нет доступного вектора смещения reg, смещающего другой вектор int. Согласно примечанию к приложению, вторичный загрузчик должен перенаправить процессор на обработчик во флэш-памяти пользовательского приложения.

Проблема / вопрос У меня -флэш-память пользовательского приложения будет перезаписана во время обновления прошивки, поэтому невозможно найти там обработчик. Каков рекомендуемый подход, когда прерывание будет использоваться загрузчиком и пользовательским приложением.

Требуется ли для этого условное перенаправление в зависимости от запущенного приложения (загрузчик / пользовательское приложение), например 1) если загрузчик запущен, перенаправить на обработчик int в области загрузчика, 2) если пользовательское приложение запущено, перенаправить на int. обработчик в пользовательском приложении или 3) использовать общую память между загрузчиком и пользовательским приложением?


person whitedog    schedule 30.06.2014    source источник


Ответы (1)


Я закодировал множество загрузчиков / обновлений прошивки. Если вы не можете изменить векторы прерывания, вам нужно использовать код опроса, т.е.

  1. Скопируйте программу обновления микропрограммы в ОЗУ или убедитесь, что она находится в области флэш-памяти, которая не будет стерта.
  2. Вероятно, что настройка, скажем, UART уже настроена для использования прерываний, вам нужно перенастроить все необходимое оборудование для использования методов опроса, то есть без прерываний.
  3. Отключить прерывания!
  4. Перейти к функции обновления прошивки
  5. Функция обновления прошивки не вернется, она будет опрашивать сообщения через UART и стирать, программировать, проверять раздел флэш-памяти по запросу клиентского приложения. НЕ ВКЛЮЧАЙТЕ ПРЕРЫВАНИЯ!
  6. По завершении вы можете перезагрузить процессор, используя сторожевой таймер, чтобы перезагрузить его и выполнить новый код.
person Tom Knights    schedule 11.07.2014