ARM7/9, KEIL MDK
embOS for ARM7 / ARM9 / XScale was developed for and with KEIL MDK, compiler RVCT3.0 and supports all memory models offered by this compiler. It comes with easy to use start projects for the KEIL uVision. Initilization code for various ARM CPUs is included. Software development with uVision simulator or debugger with JTAG tools like J-Link ARM ATMEL SAM-ICE or ULINK is possible.
Resources and performance data
| Memory usage | |
|---|---|
| Kernel size (ROM) | approx. 3000 bytes |
| Kernel RAM usage | 51 bytes |
| RAM usage per task control block | 32 bytes |
| RAM usage per resource semaphore | 8 bytes |
| RAM usage per counting semaphore | 2 bytes |
| RAM usage per mailbox | 20 bytes |
| RAM usage per software timer | 20 bytes |
| RAM usage event | 0 bytes |
| Min. stack-size per task (RAM) | 56 bytes |
| Timing | |
| Context switch time | max. 8 µs, independent of number of tasks |
| Interrupt latency time | zero |
| Kernel CPU usage/TICK | less than .2% of total calculation time at 1000 Interrupts/second (1ms TICK) |
| Basic time unit (TICK) | typ. 1 ms, min. 20 µs (50 kHz interrupt frequency) |
| Features | |
| Max. no. of tasks | Unlimited (by available RAM only) |
| Max. no. of mailboxes | unlimited (by available RAM only) |
| Max. no. of semaphores (resource/binary/counting) | unlimited (by available RAM only) |
| Max. no. of software timers | unlimited (by available RAM only) |
| Max. no. of priorities | 255 |
| Stack size idle task (RAM) | 0(no memory needed) |
| Nested interrupts | permitted |
| Task switches from within ISR | possible |
Absolute values given above were measured with embOS release build.
embOSView offers system analysis during runtime

Available Emulators
- J-Link ARM
- ARM
- KEIL ULINK
Board support packages
embOS comes with lots of ready to go start projects and support packages for various ARM7/9 CPUs and starterboards.
| CPU | Eval board |
|---|---|
| Atmel AT91M55800 | Atmel AT91EB55 |
| Atmel AT91SAM7A3 | Atmel AT91SAM7A3-EK |
| Atmel AT91SAM7S256 | Atmel AT91SAM7S256-EK |
| Atmel AT91SAM7S64 | Atmel AT91SAM7S64-EK |
| NXP LPC2468 | Embedded Artists LPC2468-16 |
| NXP MCB2100 | Keil MCB2100 |
| NXP MCB2300 | Keil MCB2300 |
| ST STR710 | ST STR710 |
Release notes
- Tool chain used for build
- New features
- Improvements
- Program corrections
- Known problems/limitations
- Release history
- Miscellaneous
Tool chain used for build
The following tools have been used:
Compiler: ARM/Thumb C/C++ Compiler armcc, RVCT3.1 [Build 934] for uVision
Assembler: ARM/Thumb Macro Assembler armasm, RVCT3.1 [Build 934] for uVision
Librarian: ARM Archiver armar, RVCT3.1 [Build 934] for uVision
Workbench: KEIL uVision3 Version 3.34
New features
Version 3.60d1
- LPC2378 supported
embOS for KEIL MDK now comes with a board support package for the NXP LPC 2378 device.
It runs on an KEIL MCB2300 eval board, but may be used with other hardware as well.
Version 3.60d
- LPC2468 supported
embOS for KEIL MDK now comes with a board support package for the NXP LPC2468 device.
It runs on an embedded Artists eval board, but may be used with other hardware as well. - New embOS sources version 3.60d
embOS version 3.60d offers several new features which are described in the embOS generic manual.
Version 3.52a
- AT91M55800 supported
embOS for KEIL MDK now comes with a board support package for the ATMEL AT91EB55 eval board which may also be used for other target boards with the AT91M55800 CPU.
Debugging in RAM, Flash and simulator is supported.
Version 3.32f
- All features of generic 3.32f kernel supported.
Improvements
Version 3.60d1
- RAM.ini files for RAM targets improved
The debugger does not automatically set the CPU into its initial reset state after downloading an application into the target.
The new RAM.ini files disables IRQ and FIQ and switches the CPU into supervisor mode after download.
Without this improvement, the RAM target might run into uninitialized interrupt handlers if an application in Flash or RAM was activated before the debug session and peripherial interrupts were enabled.
Version 3.52c
- embOS interrupt handler source file RTOSVECT.s eliminated.
Because the embOS primary interrupt handler is generic for all ARM cores and not target CPU specific, there was no need to place the interrupt handler function into a separate source file.
The embOS interrupt handler is now included in the embOS libraries. The start projects are therfore simplified and the embOS interrupt handler is always included in the project.
Program corrections
Version 3.52c
- Task switch from interrupt corrected.
The previous version failed when a preemptive task switch from interrupt should be performed.
The debug libraries called the error handler OS_Error() with error code 0xff, the release version might have crashed, if another interrupt occured during the task switch.
The problem existed in Version 3.52a only and is fixed with version 3.52c.
Known problems/limitations
Version 3.60d
- None.
Release history
| Version | Release date | Short explanation |
|---|---|---|
| V3.60d1 | 24. Jul 2008 | LPC2378 supported |
| V3.60d | 01. Jul 2008 | New embOS sources V3.60d |
| V3.52c | 26. Oct 2007 | Corrected version. |
| V3.52a | 28. Sep 2007 | Update to embOS version 3.52a. AT91M55800 supported. |
| V3.32f | 18. Dec 2006 | First version with release history |
Miscellaneous
This document was first released with version 3.32f of the software.
Software released earlier is documented internally. This information is available at request.
ARM7/9, KEIL MDK
