I've been searching the interweb to determine the best approach to add a graphic LCD to an embedded Linux system, but have so far turned up short. Perhaps someone here can shed some light on the subject.
First, a description of the system. I'm writing the firmware for a commercial audio processor based on the Atmel AT91SAM9260 ARM9 processor. We've recently decided to add a 240x64-pixel monochrome graphic LCD to the front panel of the product. Because of design constraints, we're limited to a specific LCD from Densitron, which is based on the Sitronix ST7529 controller. We've been unable to find any other LCD modules which meet our specs, primarily that it must be at least 64 pixels high and fit in a 1RU enclosure, so we are stuck with this module. Also, we're fairly far into the design process, so using a different processor with a built-in controller is not an option. The LCD module is connected to the data bus on chip select 0.
Okay, so what I really want to know is, what is the best approach to implement a graphic LCD in an embedded Linux system? Also, note that "best" in this case does not necessarily mean absolute easiest. This is a commercial product which must be maintained in the future, so "best" will likely be a trade-off between ease-of-implementation and "correctness". There is no ST7529 driver available, so I'll have to write that myself, but there are a number of options.
I could write a very simple driver to talk to the device and do most of the work in userspace. This seems like the easiest solution at first, but then I would have to write the font library and graphics routines myself, which seems like a considerable amount of work.
The other option, I think, is to write a framebuffer driver and put a graphics library, like MiniGUI or SVGALib, on top of that. I'm not exactly sure what this entails, however, and useful information on the topic is hard to sort out when I'm new to the subject. A little bit of guidance would be greatly appreciated. Would this require that I write two drivers, one to talk to the hardware and the other to interface to the framebuffer?
Are there any other solutions that I'm unaware of? As many products as I see that run Linux and have graphic LCDs, I know that I'm not the first person to come across this problem. Information on the topic is scarce, however. I've read various books on embedded Linux (Linux Device Drivers, Embedded Linux Primer, Linux Kernel Development), but none of them have touched on the topic of graphics for embedded systems. I've noticed that Embedded Linux System Design and Development has a chapter on embedded graphics, but haven't had a chance to look through the book. Has anyone read this book? If so, was it helpful, and is the graphics chapter any good?
Hopefully someone out there can provide me with a little bit of architectural guidance for this situation.
Thanks in advance, Alex