dandumit wrote:Just that I have seen the image of EMC2 on Raspberry Pi it's fantastic.
I am far to weak to help you in this endeavor but I will be your first tester !
I thought I would just make an update of thoughts as I have really done very little more about getting real time linuxcnc running.
You may think that as the axis front end for emc2 (I think I should be refering to it as linuxcnc now
) is working there will soon be a working cnc controller available. Unfortunatly I think you are probably wrong
The compilation I made was only of the simulator without real time kernel hooks, this was a fairly simple job only requiring a little research of apt-get install packages, and a short wrapper c file for emc2 headers and modification of 2 headers in /usr/include/
GETTING REAL TIME LINUX WORKING AND HAVING SUFFICIENTLY SMALL LATENCY AND JITTER COULD BE A HUGE PROBLEM!
I do not really have any low level real time kernel programming experience and I also have better things to do, when I was a young student maybe I would have dived in and spent many long evenings try to hack and debug things, unfortunately I cannot afford to now.
I think this would be a good project for a ee or compsci student to take up and would look very impressive on their resume, I hope someone will be interested enough to take up where I have left off.
As far as I can see the best way to go would be the raspbian 2.6 kernel and apply the i-pipe patches and use xenomai with the RTAI skin.
Unfortunatly I have become confused by the other options such as the RT_LINUX patches, but after looking into all options I still think 2.6 kernel and xenomai will be the quickest route(though really 3.2 kernel will be the future).
Unfortunatly I have seen that 3.1 kernels onward have a different scheduling system that xenomai and i-pipe do not yet support??? (apparently there are patches for the linux3.0 kernel for xenomai but I see no schedule for 3.1 or 3.2 kernel implementation)
It seems whatever the case there are things that need to be waited for, so I have stopped looking at this project, I will probably make a kernel compilation with ipipe patch once there is a reasonably stable release of the raspbian 2.6 kernel.
The general scheme I imagine would be to compile the default raspbian 2.6 kernel tree, apply the i-pipe patches, do the same for the i.MX3 realtime kernel tree from denx.de then make a diff between the important files and see how they differ, then use this information if necessary to modify the code for raspbian kernel.
Once a real time kernel is compiled there will probably be much testing and benchmarking required and then xenomai and RTAI skin need to be looked at.
So I guess what I am saying is the same as I said from the start, I doubt I will be the person that will get this working, but I hope others can find what I have done useful.
If anyone wants to see in more detail the very basic work I have done please let me know, I will try to make it available(though most is already posted on this thread).
Unfortunately I am not a real time kernel expert so I think this could take me far far longer than someone that already knows this stuff, I imagine that a xenomai expert maybe could do this in a couple of weeks hard work??
Would anyone be interested in starting a crowd source fund raiser to put some sort of price on getting this task done, maybe an expert would agree to undertake this for a few thousand?
I really don't like dealing with people so am not going to do it myself, but asking around on the relevant mailing lists maybe would get some experts interested?
I hope this will eventually all become reality with real time working flawlessly with low latency and jitter for linuxcnc on the RPI, but at present I am still unsure what the eventual outcome will be. Maybe the work required will be too grreat and we will have to wait for the next gen RPI??
Next gen RPI makes me think, would it be possible for the next broadcom ARM chip to have a few arduino AVR cores on the die with some sort of shared memory and multiplexing (transputer) and more IO pins, possible some additional very cheap custom support chip like mcp23017 i2c with DAC and ADC that can be plugged in an out of a DIL socket if its blown??.
I would have thought multiple additional AVR or PIC core would be very cheap and take tiny realestate compared with ARM cores, and could make handling real world interfacing without extra context switching and interupts easier(but if shared memory make it simple for the ARM to take over processing if necessary). I sort of see the way computers should be going as handling realtime real world interfacing (robots) and I think this needs large numbers of IO subsystems with fast inter system comms(I'm sure saying this last paragraph is pointless as I am no expert and others have a far better understanding of where things should be heading).
Anyways, I hope the future is a better place, but thats probably only true for the young