Спасибо за ответы!
Проблема несколько модифицировалась, но не буду создавать отдельной темы.
Итак: перенес основное ПО в верхние адреса, перенес туда же вектора прерываний (временно убрав полностью использование прерываний: только ResetVector и начальное значение SP). Если в начальных адресах ставлю такие же значения для ResetVector и SP, как в векторах прерываний - все отлично работает.
Но если - в ResetVector - указать адрес функции, где стоит тупо
Код
asm("B ххх")
(где xxx - тот же адрес, что и в ResetVector) - ничего не работает.
Скажу по-другому:
Изначально ПО и вектора прерываний - лежат в 0x0800'0000. Переношу ПО и вектора в 0x0800'8000, а в 0x0800'0000 - ставлю константами те же значения, что и в 0x0800'8000 - 8 байт (SP и указатель Reset-а = 0x0800'8E41). Все работает.
Добавляю функцию в 0x0800'0100, которая состоит из одной команды "
Код
B 0x0800'8E41
". Заменяю указатель Reset-а - на 0x0800'0100. Ничего не работает.
В чем дело? Я ведь добавил-то только безусловный переход...
P.S. Да, оказывается у меня Cortex-M3 и соответственно VTOR - есть. Только от этого пока не легче.