Переносить на другие мк?
Если работает - не трогать))
Я просто смотрел свои блокнот с вопросами с собеседований, и меня спросили - умею ли я работать с этой таблицей
Её, бывает, отправляют на другой адрес. Чтобы обеспечить переносимость кода. По умолчанию она лежит по определённому адресу. И прошивка будет по этим адресам располагать свои хандлеры. Но если нужно динамически переключиться на другую собранную прошивку, которая ничего не знает о том, что она лежит в памяти не с нуля, то в ней на старте нужно передвинуть таблицу так, чтобы всё работало как было. Насколько я помню, стартап код в arm gcc сразу это делает. Передвигает таблицу относительно вектора reset . Одной командой с передачей адреса делается.
Таблица векторов прерываний в случае ошибок никогда не смещается и всегда лежит в начале?
Я не разбирал подробно то, что там в стартапк коде. Там вроде всё тупо. Началась прошивка - взять адрес ResetVector, отсчитать от него сколько-то слов и положить это в VTOR. Но гипотетически, если вы пишете обновление прошивки, то вам нужно чексамы там проверить перед тем, как переходить на новую прошивку. Тут логично. А что будет, если в VTOR записать какую-нибудь дичь, я не проверял. Наверное, ничего хорошего).
Обсуждают сегодня