во первых там в таблице лежат адресса обработчиков а не собственно обработчики.
главный стек тоже инициализируется с этой таблицы, поэтому можно обойтись просто так
__attribute__ ((section(".isr_vector")))
void (* const g_pfnVectors[])(void) =
{
(void (*)(void))((unsigned long)pulStack + sizeof(pulStack)),
// The initial stack pointer
ResetISR, // The reset handler
NmiSR, // The NMI handler
FaultISR, // The hard fault handler
FaultISR, // The MPU fault handler
FaultISR, // The bus fault handler
FaultISR, // The usage fault handler
0, // Reserved
0, // Reserved
0, // Reserved
0, // Reserved
IntDefaultHandler, // SVCall handler
IntDefaultHandler, // Debug monitor handler
0, // Reserved
PendSV_ISR, // The PendSV handler
SysTickTimer_ISR, // The SysTick handler
нужно еще в ResetISR скопировать данные в RAM, тоже вполне реализуемо на С
еще на каждый перефирийный девайс в Cortex M3 отдельное прерывание.
это я так понял пока отличия между архитектурами
запускаете установку ХР прямо с рабочей Windows со специальными параметрами
устастановщик копирует все файлы во временную папку на винте и делает его загрузочным
вставляете его на другой компьютер и фокус удался
делал так не раз поточу что с приводами был напряг
есть два стека SP_main и SP_process
SP_main используется всегда в режиме обработчика прерываний, туда же сохраняются вложенные прерывания такого наверно в ARM7TDMI нет.
SP_process может использоватся (а может и нет) в обычном режиме
msr psp, r0
главный стек тоже инициализируется с этой таблицы, поэтому можно обойтись просто так
__attribute__ ((section(".isr_vector")))
void (* const g_pfnVectors[])(void) =
{
(void (*)(void))((unsigned long)pulStack + sizeof(pulStack)),
// The initial stack pointer
ResetISR, // The reset handler
NmiSR, // The NMI handler
FaultISR, // The hard fault handler
FaultISR, // The MPU fault handler
FaultISR, // The bus fault handler
FaultISR, // The usage fault handler
0, // Reserved
0, // Reserved
0, // Reserved
0, // Reserved
IntDefaultHandler, // SVCall handler
IntDefaultHandler, // Debug monitor handler
0, // Reserved
PendSV_ISR, // The PendSV handler
SysTickTimer_ISR, // The SysTick handler
нужно еще в ResetISR скопировать данные в RAM, тоже вполне реализуемо на С
еще на каждый перефирийный девайс в Cortex M3 отдельное прерывание.
это я так понял пока отличия между архитектурами
если кому интерестно то современный ARM Cortex M3 инициализируется проще и на С
устастановщик копирует все файлы во временную папку на винте и делает его загрузочным
вставляете его на другой компьютер и фокус удался
делал так не раз поточу что с приводами был напряг
если сами собирать кросскомпилятор не умеете то
www.codesourcery.com/
и здесь есть собранный только я его не пробовал
www.hitex.com/
скрин с моего ноута, правда под виндой но все тоже можно организовать на линуксе
а для Windows все собирается двумя командами
не легкая коробочка
не подскажите телефон таможни в киеве?