ELK Status Update

I previously mentioned ELK, an Embedded Little (or Linux) Kernel, that can be used to do bare metal development with ELLCC. The goal of ELK is to use the musl Linux C standard run-time library to provide a POSIX environment on bare metal, i.e. in kernel space. I’ve been focused primarily on the ARM version of ELK as a proof of concept prototype, but I plan to port ELK to all the targets supported by ELLCC.

ELK is able to use the musl library compiled for Linux because it traps the Linux system calls and implements their functionality, or at least enough of their functionality to be useful in a bare metal environment.

I put together a status page that shows the progress I’ve been making on emulating the Linux systems calls in ELK. You can find it here. The source for all of this can be found in the ELLCC source repository. In particular, you can look at the glue that helps makes this work for the ARM, the ARM crt1.S file mentioned on the status page.

2 thoughts on “ELK Status Update

  1. Michael

    Hi Rich, Your project is really useful, I was hoping to signup to post in the forum but i never received a registration email. I wanted to ask a question about building the armv4. I made the changes suggested in some forums topics however compiler-rt still builds as armv7 cortex. I think there is a bug somewhere in the Makefile in libecc

    Reply
  2. rich Post author

    Hi Mike,
    You are absolutely right, there is a bug in how libecc is made. Specifically in the build rules for compiler-rt. Currently compiler-rt is built using the default compiler options in libecc/mkscripts/targets//setup.mk. These make scripts are obsolete and should be replaced with an appropriate target configuration from libecc/config. All of the other libraries are built with the right config, but unfortunately compiler-rt has a pretty complicated build script and I haven’t gotten around to figuring out how to fix it. The ELLCC specific compiler-rt build script is in libecc/src/compiler-rt/make/platform/ellcc_linux.mk. I added a bug report.
    -Rich

    Reply

Leave a Reply

Your email address will not be published.