Hi,
We are porting a C5502 firmware to C5504, and the firmware is using some assembler code in ISR (the ISR itself is written in C). Is there any thing we need to pay attention to.
Thanks,
Yiyuan
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Hi,
We are porting a C5502 firmware to C5504, and the firmware is using some assembler code in ISR (the ISR itself is written in C). Is there any thing we need to pay attention to.
Thanks,
Yiyuan
Hello Yiyuan,
The C5504 has more involved clock gating schemes for the core and peripherals, so you would need to pay attention to that. For example, the MPORTs on the C55x core are clock-gated by default and you would need to enable them before using the DMA. Assembly code for the C5502 will compile and run fine on the C5504 with necessary modifications for memory map and IP module changes.
Regards,
Sunil Kamath
Hi Sunil,
Thanks for the reply.
Would you please explain the modifications for memory and IP module a little bit in detail?
Actually we are experiencing a strange problem. Since our assembly code is called in a ISR, there will be a if statement in the main loop to check wether the task is finished by the ISR. If the if statement is in a function call, the assembly code will not work 100%. But if directly use the if statement rather than in a function call, the assembly code in ISR works OK.
Is that possible a content swiching problem? Is there any difference in content switching or ISR handling between C5502 and C5504?
Thanks,
Yiyuan
Make sure you declare the data as "volatile" being used as the flag between your ISR and other code. This type of issue is relatively common in cases where a flag is being modified outside the view of the compiler.