Hi,
I recently finished my FreeRTOS port to C2000's C28x core.
Developed and tested on TMS320F28377S (LAUNCHXL-F28377S board) and TMS320F28034. Works with and without FPU.
Available on Github: https://github.com/IvanZuy/freertos_c28x
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,
I recently finished my FreeRTOS port to C2000's C28x core.
Developed and tested on TMS320F28377S (LAUNCHXL-F28377S board) and TMS320F28034. Works with and without FPU.
Available on Github: https://github.com/IvanZuy/freertos_c28x
Hi John,
Thanks for feedback.
Yes, the check for first run is not necessary so I removed it.
I intentionally didn't do context save/restore in assembly to make compiler do most of the job. As I can see half of the registers is being saved while entering into interrupt and the rest by compiler inserted instruction at the beginning of ISR. That's why in assembly I only have to take care of SP and IEF. I do realize that it's possible for future compiler version to change the way how ISR is being compiled. After testing a while I'll switch to assembly version of context manipulation to avoid dependency on compiler.
Hi Ivan,
I did my own port for FreeRTOS 5.1.1. (2009) but in the end we went with OSless solution so it was not thoroughly tested. As a new project coming along might require one I checked if there were any available ports and I found yours. I did a quick comparison, but the ports handle some things differently.
I have a couple of questions/suggestions:
1. Isn't task parameters pointer "pvParameters" passed on XAR4 instead on ACC? The compiler might have changed in this time, but I doubt it.
2. You can handle FPU and non-FPU version in assembler using assembler preprocessor (e.g. ".if .TMS320C2800_FPU32 = 1"), thus having only one .asm file.
3. TI compiler sets FPU rounding mode to nearest (RND32 bit in STF is 1). The way you set task stack you set RND32 to 0. Is this intended?
4. Does your port support configuration without preemption (configUSE_PREEMPTION=0)?
I'll probably dig deeper in the following weeks, so I might have a few follow up posts.