ARM7/9, ARM ADS toolkit
embOS for ARM7 / ARM9 / XScale was developed for and with ARMs ADS toolkit 1.2 and supports all memory models offered by this compiler. It comes with easy to use start projects.
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. 7.2 µ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 | 256 |
| 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 on an LH79531 CPU running at 48MHz.
embOSView offers system analysis during runtime

Target CPU specific information
SHARP's LH79531 System-On-Chip (SOC) device now supported by embOS
Available Emulators
- ARM
- Lauterbach
Release notes
Last update:
2005-09-26 [AW] V3.28i
- Tool chain used for build
- New features
- Improvements
- Program corrections
- Known problems
- Release history
- Miscellaneous
Tool chain used for build
The following tools have been used:
Compiler: ARM C Compiler, ADS1.2 [Build 848] Thumb C Compiler, ADS1.2 [Build 848] Assembler: ARM/Thumb Macro Assembler, ADS1.2 [Build 848] Librarian: ARM Archiver, ADS1.2 [Build 848] Workbench: CodeWarrior IDE version 4.2.5.764
New features
Version 3.28i
- OS_DeleteRSema()
New resource semaphore handling function allows to delete resource semaphores during runtime.
Version 3.28h
- Additional error checks in debug builds of embOS
OS_CreateRSema() now generates an error, when the addressed resource semaphore was already created before.
OS_CreateCSema() now generates an error, when the addressed counting semaphore was already created before.
OS_CreateMB() now generates an error, when the mailbox was already created before.
OS_CreateTimer() now generates an error, when the software timer was already created before.
OS_MEMF_Create() now generates an error, when the addressed fixed size memory pool was already created before.
Version 3.28g
- OS_GetSuspendCnt()
New info function to examine suspension state and count of a task.
Version 3.26
- OS_Terminate() modified
Task may be terminated anytime, regardless of task state.
All resources claimed by the terminated task are automatically released.
Version 3.22a
- OS_PutMailFront() / OS_PutMailFront1
New mailbox functions to enable LIFO behavior of mailboxes. - OS_PutMailFrontCond() / OS_PutMailFrontCond1()
New conditional mailbox functions to enable LIFO behavior of mailboxes.
Version 3.20
- OS_Suspend() / OS_Resume() implemented
New functions to suspend and resume tasks unconditionally. - Fixed size memory blocks implemented
New functions to allocate fixed size memory blocks from embOS. - Dynamic memory allocation supported by embOS
Thread safe dynamic memory allocation functions implemented.
Version 3.10l
- 1st version for ARM using ADS
Improvements
Version 3.28g
- embOS scheduling simplified
Task activation and deactivation on "waitable objects" as mailboxes, semaphores, events, fixed size memory blocks now all use the same scheduling method.
This modification saves ROM and RAM and makes scheduler easier to understand and to maintain.
Applications which accessed internal data structures of waitable objects directly have to be modified.
Version 3.10l
- 1st version for ARM using ADS1.2
Program corrections
Version 3.28g
- OS_WakeTask() for trace build corrected
OS_WakeTask() in trace build disabled task switches.
This problem existed since version 3.24 and is fixed with version 3.28g. - OS_WaitCSemaTimed() corrected
Semaphore handling was changed with embOS sources version 3.26.
Unfortunately,during call of OS_WaitCSemaTimed() an internal control counter was decremented twice, which resulted in wrong control state of semaphore. Overflow of this counter caused, that the calling task remained suspended until the timeout expired, even though, the semaphore was signaled.
This problem existed in version 3.26 only and is fixed with version 3.28g. - OS_GetMailTimed() / mailbox handling corrected
During call of OS_GetMailTimed, interrupts were re-enabled too early. If a mail was just put into a mailbox and the timeout occurred at the same time, a mailbox internal control variables which managed waiting tasks was set to a wrong value.
This resulted in wrong mailbox handling and caused task waiting for mail kept suspended, even though, mail was available. This problem existed in all previous versions of embOS and is fixed with version 3.28g.
Version 3.26a
- OS_MEMF_Release() corrected
OS_MEMF_Release() might have failed according to absolute address of memory block.
The problem occurred because address calculation was done with 16bit integer value.
Calculation was modified to use 32bit values to fix the problem.
Version 3.20c
- OS_GetMailTimed() corrected
OS_GetMailTimed() did not retrieve a mail after 256 calls, the waiting task remained suspended. Corrected with version 3.20c of embOS.
This problem exists in all previous embOS versions and is fixed with version 3.20c.
Version 3.10q
- OS_GetMail
OS_GetMail functions corrected (interrupts disabled before call of _GetMail). - OS_Terminate problem with RR
OS_Terminate problem with RR tasks corrected. TimerTick could set RR/PP pending between UNMARKTASK and OS_Switch. OS_Switch will then call OS_DoRR, which could append OS_pCurrentTask (the one you want to terminate if e.g. OS_Terminate(NULL)).
Version 3.10m
- Sample interrupt handler
For embOS it is not legal to call OS_EnterInterrupt again after final OS_LeaveInterrupt has been already called. In the sample OS_irq_handler shipped with embOS, there was a possible call of OS_EnterInterrupt after OS_LeaveInterrupt. The sample OS_irq_handler implementation has been corrected.
Version 3.06f
- 1st version for ARM using ARM Tools
Known problems
Version 3.20f
- NONE
Release history
| Version | Release date | Short explanation |
|---|---|---|
| V3.28i | 26. Sept 2005 | New embOS sources 3.28i with additional error check and new function OS_DeleteRSema() |
| V3.28g | 07. Jul 2005 | Official release with new embOS sources 3.28 |
| V3.28 - 3.28f | Internal versions, not distributed | |
| V3.26 | 16. Feb 2005 | New embOS libraries V3.26 |
| V3.20f | 01. Jun 2004 | New embOS libraries V3.20 |
| V3.10l | 12. Feb 2003 | 1st version for ARM using ADS |
Miscellaneous
This document was first released with version 3.06f of the software.
Software released earlier is documented internally.
This information is available at request.
ARM7/9, ARM ADS toolkit
