After designing the first hardware revision of Screvle I started to create the software platform that would run on top of it. When another idea or project arises, the goal is to start working on the actual application from day one and not waste time writing drivers or other building blocks.
One challenge was having a flexible code tree that allowed me to quickly create a new project and keep older projects up to date with new revisions of generic code. This resulted in a directory tree where all software modules are stored in a separate directory and a project consists of a configuration file defining which modules to include. More details about how this works exactly will be explained in a later project log.
The initial firmware of Screvle roughly consists of the following components:
- microR2k Real Time Kernel
- microGraphics Framework (GUI)
- Settings Framework (stores settings on the filesystem)
- Peripheral Framework (makes using peripherals as easy as open/read/write)
- FatFs ( http://elm-chan.org/fsw/ff/00index_e.html )
- lwIP TCP/IP Stack ( http://savannah.nongnu.org/projects/lwip/ )
- generic utilities ( string manipulation, button debouncing, circular buffers,... )
- peripheral drivers
- board specific configuration/initialization