summaryrefslogtreecommitdiff
path: root/README.md
blob: 62b42ba5b8aed2d2349ff46c097773614944cf8c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
uC-sdk - a lightweight development kit for embedded micro-controllers
=====================================================================

This SDK revolves around FreeRTOS in order to provide basic support for
unix-like environment, in a real time multitasked-enabled fashion.

Currently, the only supported target is the LPX1768 CPU, a Cortex-M3 ARM,
which is available on the mbed board (http://mbed.org/), but I hope in
getting more platforms supported in the future. The next target in line
would be the PIC32, on its development board form.

The main goal is to get the cleanest architecture as possible, providing
the same, clean API to all the supported CPUs.


Architecture / Layout
---------------------

RTOS:

The FreeRTOS directory contains the FreeRTOS source code. The main
modification done there is a few minor bug fixes, and adding the support
to the _impure_ptr switching support for our libc's reent system. The current
memory management is done using the libc's allocator.

Architectures:

The arch directory contains architecture-specific code, including assembly
code, drivers and link scripts.

System:

The os directory contains more generic code, in order to boot the CPU, set up
your binary's environment, provide the necessary glue to libc, and set up
a proper shutdown sequence.

libc:

The current libc implementation is excessively minimal. Even more minimal than
uClibc that is. The goal is to provide bare-metal features while still having
a minimum of portability.

libm:

Right now, libm is Sun's fdlibm, compiled in IEEE mode (ie, no error handling
is being done, unlike a normal libm). Be careful though, as most uC processors
dont contain any FPU. Using any kind of math will greatly increase the code
size, as well as CPU usage while processing.


ARM / Cortex-M3 / mbed
----------------------

The arch directory contains NXP's port of CMSIS for their LPX1768 CPU. Using
their drivers is highly recommended.