Assuming a memory mapped device, I'm thinking a user space driver with a custiom ui (ie myopen(), myread(), mywrite() instead of using open(), read(), write() etc) will be easier and faster than linking to the kernel. My questions are:
1) If it's a user space driver does that mean it does not have to be recompiled for a different version of Linux?
2) Am I correct in assuming a user space program can in fact do memory mapping to absolute bus addresses?
3) This project is allegedly real-time, but for the first iteration I'm thinking of using named pipes inside wrapper functions for the IPC, suggestions for more efficient (ie faster) IPC would be appreciated.
I've worked on many real-time and/or embedded kernels, and written many device drivers, but this will be be my first Linux project.