I need some beginner's advice. I am planning to develop a system using a SOM from Emcraft based on the K61 chip. The application is fairly real time critical. I need to be able to scan a bank of memory mapped input pins and respond rapidly (i.e. in 1ms, including all the processing I have to do) to any changes in the state of the pins. I may also need some high resolution timers, and to respond to a couple of interrupt pins preferably in under 1 us. I need a TCP/IP stack, and I need to be able to store files on an SD card.
As I understand it I can use uCLinux or MQX as the basis of my application. I need some advice to help me decide. Some questions:
1. If I start with one or the other, and later discover I was wrong, how difficult is it to convert to the other one?
2. From what I've said above, is the choice obvious?
3. Do uCLinux and MQX work together? How does this work?
4. What do I consider, in what order, to make the choice beetween uCLInux and MQX?
Thanks - Rowan
I think that the most obvious consideration is that MQX is an RTOS and uclinux is based on linux for non MMU processors and it is not real time OS.
I would select MQX, you have RTCS (TCP/IP) and MFS (file sytem) included in MQX.
1) Some MQX driver uses POSIX standard, but in general the porting wil not be easy in general terms.
3) The real time OS nature of MQX against non RT linux.
I hope this helps.
Thanks for your input. I keep hearing though that Linux can achieve very respectable real time performance nowadays. I just don't know how to judge whether it can do what I want, or whether (as you suggest) I am better going straight to MQX. Nor do I know whether this type of real time performance can be achieved on the Kinetis processor with the distributed uCLinux, or whether achieving this requires lots of kernel hacking (which I just don't have the knowledge or experience to do).
Thanks - Rowan
Yes, I agree. If you need a particular fast response to interrupts, you can use MQX kernel interrupts in a much easier way that using Linux. If you project specifications would include the need of support of particular TCP/IP protocols, support for other files system types (ext2, ext3,..), uclinux could be the solution even you need to hack the uclinux kernel. But in your case, where MQX can fit in the project specifications, in my opinion, is a much better solution. But of course, it depends on the use case.
Let me explore a little further what I can do if I use MQX. Can I run a web server under MQX? So (for example) I can use a web page to configure my application? Can I run am FTP server so that I can copy data files to the device, and read back log files?
If I can't do this with MQX, can I run both uCLinux and MQX on it, so that I can use the web server and FTP server as suggested above, then switch to MQX mode for the real time stuff, and when it's finished switch back to Linux?
Thanks - Rowan
Yes, you can run a webserver in MQX and you can use CGI to send and read data to/from the MQX application.
You can also run a ftp server/client.
I suggest you to install MQX 4.1 and explore the doc folder. C:\Freescale\Freescale_MQX_4_1\doc
And no, you can't switch from Linux to MQX at run time.