I am working on what QNX calls a “deeply embedded” project with my own
hardware design based on the Motorola Lite5200 BSP. I have built my own
IPL, built my own startup code, built my OS image, and have run some simple
test applications on my custom built hardware.
Up to this point in my project, I have been primarly concerned with just the
basics, getting the hardware booted up and twiddling the right register bits
to get things configured properly. The test programs I have written hardly
use OS calls at all except to memory map my hardware devices.
Now, that I have the hardware under control, it is time to get the real time
software going and I need some help achitecting the software. I expect to
have multiple processes running such as CAN driver(s), dual port driver, and
a couple of independent application programs that use both the CAN drivers
and the dual port. What I need is information on how to get all those
processes to cooperate with each other. I have read the tiny little book
that came with my QNX license and it provides some hints, but its subject
matter is so wide that it is necessarily shallow.
Briefly, my background is this. I am an experienced C programmer. I am
experienced with embedded systems. I am experienced with other non-POSIX
RTOS’s (both using and some kernel development.) I have academic training
in hardware and software design. My experience with UNIX-like systems is
limited to a user. I have no experience in programming UNIX/POSIX/Linux
systems. I have some experience programming for MS-Windows.
Where do I go from here? Should I bone up on POSIX or do I need to focus on
QNX? Are POSIX materials too general for the QNX world? Any suggested
reading for architecting sofware under POSIX (or QNX)?
The QNX documentation seems to do a reasonably good job of describing all
the calls, but I’m looking for something one level higher that gives some
ideas on how to put everything together. Basically, I’m trying to avoid
being a hack. I’m sure I could hack something together, but I’d rather have
something a little more elegant.
Any suggestions for reading materials would be appreciated.