MPC 5XX

meyers wrote on Saturday, August 14, 2010:

Hi all
I’m doing some research into RTOS for use in the Freescale MPC5XX line. We experimented a few years ago with uCOS and liked it pretty well. Time has passed and I’m thinking more along the lines of an open source solution.
I’ve a few questions that I could not find the answers for in the documentation.

A little background - the MPC 5XX series have a fair amount of flash but are severely ram limited. For example the MPC565 has 1meg of flash and 36k ram. It is not as bad as it seems, we can run directly from flash and use ram for stack and scratch pad memory.

1. Can FreeRTOS be configured to run within those constraints?
2. Has FreeRTOS been ported to the MPC5XX line?

Should say, all I really need from the rtos is hard scheduling. Everything else, file system support, IO, etc. I already do in code, so while those features would be nice, they could be forgone if needed to fit in the space available.

Thanks in advance, I’m looking forward to learning more and possibly getting involved with this project.

Randy

richard_damon wrote on Sunday, August 15, 2010:

First, I am not familiar with the PFC5xx line, and perhaps someone else can answer about if this is supported by one of the existing ports or how close it is to an existing port.

As to memory, that sounds like  you have plenty for FreeRTOS (as long as your own app doesn’t need 35+k for its own buffers etc.

As to your comment on needing “hard” scheduling. FreeRTOS is a fixed priority scheduler, not a “hard deadline” scheduler. Unless you are really pushing your resources, or have some especially difficult constraints, that is probably good enough.

waveringradiant wrote on Sunday, August 15, 2010:

It’s been quite a while, but I’ve used FreeRTOS on the MPC8xx processors (the ancestor / kindred brother of the MPC5xx) and it works fine.  I forget the internal RAM on the model I used, but most of our buffers were in DRAM (this was a networking app w/ lots of Ethernet DMA).  And I’ve also used FreeRTOS on an ARM7 automotive control application w/ 32K RAM / 256K flash, and that was also fine.

Regarding the scheduling, by “hard scheduling” I assume you mean a priority-based, preemptive kernel?  In order to meet hard realtime deadlines?  If so, you’re in luck.

One other point: I used to use & recommend uC/OS-II to all my customers.  Well, that was years ago.  Between Micrium’s greedier business model, unwillingness to open the source to their new kernel (“buy before you try”), slow support turnaround, attempts at “upselling” into their other products, etc… I now recommend FreeRTOS as a superior alternative.

meyers wrote on Sunday, August 15, 2010:

Thanks all.

Sounds like it is worth it to spend some more time studying the FreeRTOS documentation. I am not familiar with the MPC8XX series so I’ll probably start there. Try to understand the differences between the 8XX and 5XX series. I’m assuming at this point that the 8XX are arranged like most other Moto/Freescale chips, everything besides the core in a separate hardware module.

My application is also automotive control. Up until now we have run the software naked on the processor. As we add more features it would probably be a lot less work to have a rtos.

We procured a limited license a few years ago from Micrium and have maintained a version of of our app using uC/OS-II. Works very well. When it was decided recently to go to a rtos we contacted Micrium about licensing. I was very surprised and unhappy to see how much the terms had changed since we had first contacted them. Not only did I feel that they had an inflated idea of what their product was worth, at least for my application, but they now say that if you change the source code of your own app by more than “5 to 10 percent” you must purchase another license. I would much rather spend my company’s funds on supporting an open source project.

meyers wrote on Monday, August 16, 2010:

to waveringradiant;

Another follow-up; 
What demo did you/would you use for the MPC8XX or more specifically, what demo  would you recommend to get started with the MPC5XX?

Thanks