Anatoly74 0 10 марта, 2015 Опубликовано 10 марта, 2015 · Жалоба Знатоки, поделитесь, плз, портом Cortex-M4 для IAR. Будет ли работать для М4 порт IAR Cortex-M3? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 14 11 марта, 2015 Опубликовано 11 марта, 2015 · Жалоба Будет ли работать для М4 порт IAR Cortex-M3? Будет, если компилировать для M3. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Anatoly74 0 31 марта, 2015 Опубликовано 31 марта, 2015 · Жалоба Пытаюсь перетащить с GCC на IAR порт Cortex-M4. В файле OS_Target_cpp.cpp, в подпрограмме os_start(stack_item_t *sp) есть такой код: asm volatile ( #if (defined __SOFTFP__) // code without FPU " LDR R4, [%[stack], #(4 * 14)] \n" // Load process entry point into R4 " ADD %[stack], #(4 * 16) \n" // emulate context restore #else " LDR R4, [%[stack], #(4 * 15)] \n" // Load process entry point into R4 " ADD %[stack], #(4 * 17) \n" // emulate context restore #endif IAR ругается на %[stack]. Подскажите, плз., как победить это? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 14 31 марта, 2015 Опубликовано 31 марта, 2015 · Жалоба Напишите R0 вместо %[stack]. Это параметр функции. Советую вам взять порт IAR для M3, и поправить в нём что потребуется. Там немного. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Anatoly74 0 31 марта, 2015 Опубликовано 31 марта, 2015 · Жалоба Напишите R0 вместо %[stack]. Это параметр функции. Советую вам взять порт IAR для M3, и поправить в нём что потребуется. Там немного. Большое спасибо за помощь Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prgjz 0 8 августа, 2016 Опубликовано 8 августа, 2016 · Жалоба Получился у кого порт для IAR M4? У меня для LPC1769 без проблем... А вот LPC4087 только без FPU работает. Посмотрел в scmRTOS\port\cortex\mx-gcc\ и сделал изменеимя в os_target_asm.s os_start ...... #if __ARMVFP__ LDR R4, [R0, #(4 * 15)] // Load process entry point into R4 ADD R0, R0, #(4 * 17) // emulate context restore #else LDR R4, [R0, #(4 * 14)] // Load process entry point into R4 ADD R0, R0, #(4 * 16) // emulate context restore #endif вообще не стартует. Если LDR R4, [R0, #(4 * 14)] и ADD R0, R0, #(4 * 16) оставить то TProc1::exec() вызывается правильно но PendSV_Handler при первом вызове в конце в летит и переключение не происходит. Моя ошибка - не доглядел... Изменил в os_target.cpp #ifdef __ARMVFP__ StackPointer -= 6; // emulate "push LR,R12,R3,R2,R1,R0" *(--StackPointer) = 0xFFFFFFFDUL; // exc_return: Return to Thread mode, floating-point context inactive, execution uses PSP after return. StackPointer -= 8; // emulate "push R4-R11" #else StackPointer -= 14; // emulate "push R14,R12,R3,R2,R1,R0,R11-R4" #endif и всё пошло!!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться