Frosted
|
Title: Frosted / Free O.S. for tiny embedded devices
We are glad to present our project called FROSTED, which is an acronym of Free OS for tiny embedded devices.
A few months ago, we decided to start writing an operating system from scratch, that would run on small microcontrollers, such as ARM Cortex-M CPUs.
The status of the project now is very promising: We have a working POSIX interface to interact with the kernel, a real multi-processing environment, a toolchain to compile our applications, TCP/IP networking, a wide range of device drivers, and much, much more.
Frosted is a multi-purpose OS. Our current research is focusing on http-based distributed services (IoT platform) as well as porting interesting open source retro-games (an initial port of the shareware version of DOOM is already working).
At this moment there is hardware support in frosted for STM32F4/F7. There is also support for the LPC17xx family, albeit not properly tested yet. Frosted can also run in QEMU, so also without any hardware it is possible to develop for Frosted.
The goal of this workshop would be to introduce the audience to use the OS and port standard C application to run on it, because this does not require any specific knowledge on embedded devices or operating systems in general.
If there is enough interest from the crowd attending, we could go deeper in the kernel internals, porting strategies and device drivers. After all, system programming is still very exciting and it's not as hard as it's often depicted.
The proposed timeline would be: a short introduction on the purpose of the project (max 20 minutes), then show the various components and repository on github.
A guided toolchain installation for the attendees, then an interactive session where the attendees will be asked to either port their favorite small application to frosted, or to initiate a porting towards their preferred ARM board. While the interactive session is ongoing, introduce kernel and libc currently implemented features starting from audience's questions. The session will terminate with the project guidelines and everything required to contribute.
Proposed time/date: tuesday 07/06/2016 around 19:00, HSBXL
Pre-requisites: some knowledge of the C programming language is the only mandatory requirement. The workshop can be adapted to cover different parts and components of the project. For joining the interactive session, the participant should bring a laptop with the essential gnu-tools to compile executables, and install the arm-frosted-eabi toolchain. If you have an ARM board, please do bring it!
Links: https://github.com/insane-adding-machines/frosted https://github.com/insane-adding-machines/crosstool-ng/releases
The Frosted Team.
Notes
Daniele gave quick introduction into architecture of Frosted
https://github.com/insane-adding-machines/frosted
https://github.com/insane-adding-machines/crosstool-ng/releases
https://github.com/insane-adding-machines/frosted.git
seee also https://github.com/insane-adding-machines/frosted/wiki
DOOM Video: https://owncloud.trexotech.com/index.php/s/ml3NN93XV5oNEij
Jenkins: http://www.trexotech.com:8080
Cortex-M7 kconfig/.config: http://pastebin.com/LPJDRQmM
syscall numbering table:
# pwd /home/ptr/frosted-ws/frosted/kernel # vi syscall_table_gen.py
get a fresh (frosted shell) console :
- stm32f407xG board (early stm discovery)
- enable serial port UART3 (in DeviceDrivers submenu) -- none are selected by default !
- pins Rx Tx : PD8 and PD9 (3.3V !)
- connect with serial adapter, 115200 8N1
# cfr. ps cat /sys/tasks # kill 'idling' process, blinking the leds kill 2
st-flash (compile from source : https://github.com/texane/stlink )
- st-flash write image.bin 0x8000000