ARM7/9, ARM RVDS 3.0
embOS for ARM7 / ARM9 / XScale devices was developed for and with ARM RVDS 3.0.
It comes with easy to use start projects and embOSView.
Debugging with J-Link is supported.
Resources and performance data
| Memory usage | |
|---|---|
| Kernel size (ROM) | approx. 2000 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 | 255 |
| Stack size idle task (RAM) | 0(no memory needed) |
| Nested interrupts | permitted |
| Task switches from within ISR | possible |
embOSView offers system analysis during runtime

Target CPU specific information
embOS comes with lots of ready to go start projects and support packages for various ARM CPUs and starter boards.
- ATMEL AT91M40xxx devices supported by embOS ARM RVDS
- ATMEL AT91SAM7A3 devices supported by embOS ARM RVDS
- ATMEL AT91SAM7S devices supported by embOS ARM RVDS
- ST STR7xx devices supported by embOS ARM RVDS
Available Emulators
- J-Link ARM
- Real View ICE USB (ARM)
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, RVCT3.0 [Build 586]
Assembler: ARM/Thumb Macro Assembler, RVCT3.0 [Build 586]
Librarian: ARM Archiver, RVCT3.0 [Build 586]
Workbench: CodeWarrior for RVDS, Version 5.7 1815
New features
Version 3.60d
- Update to new embOS sources V3.60d
embOS for ARM and RVDS 3.0 was updated to the new embOS sources V3.60d.
All new features, improvements and modifications are described in the generic embOS release notes.
Version 3.32m
- OS_TimerEx, Extended timer implemented
Extended timers are software timers which call a user defined callback function when the timer expires.
In comparison to normal embOS timers, a parameter is passed to the timer callback function.
The parameter value is initialized during timer creation.
Version 3.32k
- NEC SoCLite+ series supported
embOS for ARM RVDS now comes with a start project for NEC SoCLitePlus starter kit.
The project is prepared for debugging in Flash or SDRAM using J-Link RDI.
Version 3.32j
- STR71x series supported
embOS for ARM RVDS now comes with a start project for ST STR71x CPUs. - OS_CSemaRequest implemented
May be used to decrement a counting semaphore, if a signal is available.
The function never blocks the calling task and delivers a result which indicates whether the semaphore was available.
Version 3.32f
- OS_INIT_SYS_LOCKS() implemented
May be used to include initialization code for thread safe system libraries.
If defined, this new function is called from OS_InitKern().
Version 3.32d
- OS_Q_GetPtrTimed() implemented
New queue retrieval function which waits for a message with specified timeout.
Version 3.32c
- All features of generic 3.32c kernel supported.
Improvements
Version 3.32i
- Task switch to OS_Idle() modified.
The call of OS_Idle() from OS_ChangeTask can be overwritten (inhibited) by defining the macro OS_IDLE() which is normally defined as OS_Idle().
This allows task switching via an exception for specific CPU/compiler versions.
Version 3.32g
- Pointer comparison improved for fixed size memory pools (OS_MEMF module).
Some compiler produced wrong pointer comparison code in far memory model.
For specific CPU/compiler versions, the new OS_POINTER_TO_VALUE() function was introduced to deliver correct results in pointer comparison.
Version 3.32c
- First version. None.
Program corrections
Version 3.32l
- OS_EVENT_Delete() corrected
OS_EVENT_Delete() did not work correctly. OS_LeaveRegion() was called inside the function without calling OS_EnterRegion() before.
In debug builds of embOS, the error handler OS_Error() was called with error 151 (OS_ERR_LEAVEREGION_BEFORE_ENTERREGION).
In release builds the system was blocked because the underflow of region count inhibits all further task switches, or system crashes, because incrementing the region count the next time allows task switches instead of blocking them. The problem existed in all previous versions and is fixed with version 3.32l. - Round-robin task switching corrected.
Round robin task switching did not work correctly in previous version. A task which was blocked for some reason could be activated. The system crashed during task switch.
The problem existed since version 3.32j and is fixed with version 3.32l.
Version 3.32k
- Handler function _OS_OnTx() for serial communication to embOSView corrected.
The transmission handler for communication with embOSView might have sent incorrect data to embOSView, because internal control state was updated after sending the data.
The problem occurred on a new embOS port for a specific CPU only and is fixed with version 3.32k.
Version 3.32h
- OS_Error() was required in release build when resource semaphores were used.
When using release build libraries and resource semaphores, the embOS error handler OS_Error() was required and the file OS_Error.c had to be compiled and linked in a project.
The problem existed since version 3.28i of embOS and is fixed with version 3.32h.
Version 3.32e
- OS_GetMessageCnt() corrected.
The type of the return value of OS_GetMessageCnt() was an unsigned integer in release builds, but an integer in debug builds.
This was corrected to return an unsigned integer in all builds.
The problem existed in all previous versions of embOS end is fixed with version 3.32e.
Version 3.32c
- First version. None.
Known problems/limitations
Version 3.32c
- First version. None.
Release history
| Version | Release date | Short explanation |
|---|---|---|
| V3.60d | 21. Jul 2008 | Updated version |
| V3.32m | 05. Apr 2007 | Updated version |
| V3.32j | 22. Feb 2007 | Updated version |
| V3.32c | 20. Oct 2006 | First version with release history |
Miscellaneous
This document was first released with version 3.32c of the software.
Software released earlier is documented internally. This information is available at request.
ARM7/9, ARM RVDS 3.0
