Announcing ELK, An Embedded Little Kernel
Posted: Sun May 03, 2015 6:09 pm
ELK is a run time library that I've been developing to go along with my clang based ELLCC cross development tool chain. The goal of ELK is to provide various levels of bare metal support for a range of processors, but the primary ELK development has been done for ARM so far. ELK (and the entire ELLCC run time) is released under BSD and BSD-like licenses.
One unusual feature of ELK is that it uses the standard Linux libraries supplied by ELLCC (libc++ and the C standard library musl) in both user space and kernel space. This means that ELK is written with POSIX calls like sem_post() and pthread_create(). ELK does this by handling the Linux system calls used by musl directly. Both from user space and kernel space.
ELK is still pretty much in its infancy. As I mentioned most of the development so far has been done for the ARM. Currently implemented:
-Rich
One unusual feature of ELK is that it uses the standard Linux libraries supplied by ELLCC (libc++ and the C standard library musl) in both user space and kernel space. This means that ELK is written with POSIX calls like sem_post() and pthread_create(). ELK does this by handling the Linux system calls used by musl directly. Both from user space and kernel space.
ELK is still pretty much in its infancy. As I mentioned most of the development so far has been done for the ARM. Currently implemented:
- A pretty big subset of Linux systems calls have been either fully or partially implemented.
- Support for running in both MMU and non-MMU environments.
- Virtual file system support with RAM and device file systems supported.
- Initial support for networking using the LwIP networking stack.
-Rich