Here's an open source project I've spent dark winter nights putting together... a window manager with overlapped windows for small-ish embedded systems with a touch screen. It works well with ARM Cortex M3 and above driving a QVGA screen. It's completely open source and non-commercial. The license is unrestrictive (MIT) so anyone can do what they want with it, & its website is advert free (apart from a link to the hosting company WIX, I don't pay for the hosting so that's inevitable). I gain nothing from it other than the crack of doing it. Rather then describing it in detail here I'll link to the project's website...
https://miniwinwm.wixsite.com/miniwinwm
https://miniwinwm.wixsite.com/miniwinwm
It's written in standard C99 and builds easily with GCC derived compilers, although as there's nothing GCC specific it will build for other compilers. The hardware abstraction layer is separated out and minimized as much as possible. Sample projects are included for Atollic TrueStudio as that's free. It can be built and run straight out of the zip file for the ST dev board STM32F529I DISC1. It can also be built using AtollicTS to run in Microsoft Windows for a quick trial, although debugging for this platform, while possible, is a bit clunky.
This project uses no dynamic memory, requires no display shadow buffer, uses minimal RAM and doesn't need an OS to support it. On the other hand, as it uses co-operative multi-tasking it requires a certain coding discipline for the user interface to remain responsive. However, it's all explained in the documentation.
In case anyone asks, it won't run on 8 bit PICs, there's just not enough flash space or processing oomph on them. The target audience for this project is probably not complete beginners to embedded programming. Getting going with the dev board/IDE mentioned above will be quick, but to port to any other board or LCD screen you will need to write (or obtain) a LCD dsiplay driver, a touchscreen driver and a few other simpler ones like a timer and non-volatile storage.
https://miniwinwm.wixsite.com/miniwinwm
https://miniwinwm.wixsite.com/miniwinwm
It's written in standard C99 and builds easily with GCC derived compilers, although as there's nothing GCC specific it will build for other compilers. The hardware abstraction layer is separated out and minimized as much as possible. Sample projects are included for Atollic TrueStudio as that's free. It can be built and run straight out of the zip file for the ST dev board STM32F529I DISC1. It can also be built using AtollicTS to run in Microsoft Windows for a quick trial, although debugging for this platform, while possible, is a bit clunky.
This project uses no dynamic memory, requires no display shadow buffer, uses minimal RAM and doesn't need an OS to support it. On the other hand, as it uses co-operative multi-tasking it requires a certain coding discipline for the user interface to remain responsive. However, it's all explained in the documentation.
In case anyone asks, it won't run on 8 bit PICs, there's just not enough flash space or processing oomph on them. The target audience for this project is probably not complete beginners to embedded programming. Getting going with the dev board/IDE mentioned above will be quick, but to port to any other board or LCD screen you will need to write (or obtain) a LCD dsiplay driver, a touchscreen driver and a few other simpler ones like a timer and non-volatile storage.