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

embOSView with ARM7 target CPU


Available Emulators

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

  1. Tool chain used for build
  2. New features
  3. Improvements
  4. Program corrections
  5. Known problems/limitations
  6. Release history
  7. 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

  1. 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

  1. 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.
  2. 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

  1. 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

  1. 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

  1. 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

  1. 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.