Вобщем, не понял почему в данном случае у симулятора крыша едет ... если переключить чип (на 2129) при тех же исходниках то стартап оживает ...
Далее, главное в железе запускается.
Ну как и следовало ожидать, ничего сходу не вышло, стал выяснять на каком месте встает.
Успешно проходят функции:
prvSetupHardware();
vStartIntegerMathTasks( tskIDLE_PRIORITY );
vAltStartComTestTasks( mainCOM_TEST_PRIORITY, mainCOM_TEST_BAUD_RATE, mainCOM_TEST_LED );
vStartLEDFlashTasks( mainLED_TASK_PRIORITY );
vStartPolledQueueTasks( mainQUEUE_POLL_PRIORITY );
vStartBlockingQueueTasks( mainBLOCK_Q_PRIORITY );
vStartSemaphoreTasks( mainSEM_TEST_PRIORITY );
vStartDynamicPriorityTasks();
xTaskCreate( vErrorChecks, "Check", configMINIMAL_STACK_SIZE, NULL, mainCHECK_TASK_PRIORITY, NULL );
Далее входит в vTaskStartScheduler() в которой выполняется настройка таймера а после выполняется vPortISRStartFirstTask().
Так вот в это самой vPortISRStartFirstTask выполняется только один макрос (portRESTORE_CONTEXT()):
Цитата
#define portRESTORE_CONTEXT() \
{ \
extern volatile unsigned portLONG ulCriticalNesting; \
extern volatile void * volatile pxCurrentTCB; \
\
__asm{ LDR R1, =pxCurrentTCB };/* Set the LR to the task stack. The location was ... */ \
__asm{ LDR R0, [R1] }; /* ... stored in pxCurrentTCB. */ \
__asm{ LDR LR, [R0] }; \
\
__asm{ LDR R0, =ulCriticalNesting }; /* The critical nesting depth is the first item on ... */ \
__asm{ LDMFD LR!, {R1 } } /* ... the stack. Load it into the ulCriticalNesting var. */ \
__asm{ STR R1, [R0] } \
\
__asm{ LDMFD LR!, {R0} }; /* Get the SPSR from the stack. */ \
__asm{ MSR SPSR_CXSF, R0 }; \
\
__asm{ LDMFD LR, {R0-R14}^ }; /* Restore all system mode registers for the task. */ \
__asm{ NOP }; \
\
__asm{ LDR LR, [LR, #+60] }; /* Restore the return address. */ \
\
/* And return - correcting the offset in the LR to obtain ... */ \
__asm{ SUBS PC, LR, #4 }; /* ... the correct address. */ \
}
Где то здесь все и встает