Jump to content

    
Sign in to follow this  
Anatoly74

порт Cortex-M4 + IAR

Recommended Posts

Пытаюсь перетащить с 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]. Подскажите, плз., как победить это?

 

Share this post


Link to post
Share on other sites
Напишите R0 вместо %[stack]. Это параметр функции.

Советую вам взять порт IAR для M3, и поправить в нём что потребуется. Там немного.

Большое спасибо за помощь

Share this post


Link to post
Share on other sites

Получился у кого порт для 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

 

и всё пошло!!!

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this