H8/H8S/H8SX, HEW
embOS for RENESAS H8/H8S/H8SX series was developed for and with Renesas's HEW compiler and supports H8/H8S/H8SX CPUs with all memory models offered by this compiler.
It comes with easy to use start projects for HEW workbench. Software development with Renesas debugger tools is supported.
Resources and performance data
| Memory usage | |
|---|---|
| Kernel size (ROM) | 1582 bytes |
| Kernel RAM usage | 34 bytes |
| RAM usage per task control block | 28 bytes |
| RAM usage per resource semaphore | 14 bytes |
| RAM usage per counting semaphore | 6 bytes |
| RAM usage per mailbox | 14 bytes |
| RAM usage per software timer | 16 bytes |
| RAM usage event | 0 bytes |
| Min. stack-size per task (RAM) | 42 bytes |
| Timing | |
| Context switch time | 402 clock cycles (13.8 µs), independent of number of tasks |
| Interrupt latency time (Fast interrupt) | max. 55 clock cycles (1.9 µs) |
| Kernel CPU usage/TICK | less than .4% 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 timings given above were measured with embOS release build on an H8S2378 CPU running at 29.5 MHz.
embOSView offers system analysis during runtime

Available Emulators
- RENESAS
Additional information
Renesas Web site for additional compiler info / support
- 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: RENESAS ch38 V6.02.10.000 Assembler: RENESAS asm38 V6.01.01.000 Librarian: RENESAS optlnk V9.01.01.000 Workbench: RENESAS HEW V4.07.01.001
New features
Version 3.82e
- Update to latest embOS generic sources V3.82e.
- BSP for RSKH8S2456 added.
Version 3.62a
- OS_STACK_ALIGN implemented
OS_STACK_ALIGN may be defined to ensure a specific task stack alignment during task creation.
To ensure a stack alignment of 8 bytes, OS_STACK_ALIGN has to be defined to 8 in the CPU specific embOS internal header file OS_Priv.h.
Modification of this define requires recompilation of the embOS libraries.
Version 3.62
- OS_TICK_Config() and OS_TICK_HandleEx() implemented
The extended embOS tick handler was modified to handle a runtime configurable tick increment and fractions.
These paramter are setup by the new OS_TICK_Config() function and may be re configured during runtime.
Version 3.60d
- OS_POWER module implemented.
The OS_POWER module may be used to control different power saving modes when entering idle state.
Individual flags for different peripherals may be set whenever a peripheral needs power or clock, and may be reset, when power is not needed.
The state of the power flags may be examined during OS_Idle by a call of OS_POWER_GetMask().
This allows to switch off all of those peripherals which are not needed during idle times.
Version 3.60c
- Update to new embOS generic sources V3.60c.
Version 3.60b
- Update to new embOS generic sources V3.60b.
Version 3.60a
- Update to new embOS generic sources V3.60a.
BSP for H8S2472 (2600 CPU) added. - embOS trial versions may run an unlimited number of tasks.
The embOS trial versions run unlimited as long as only 3 tasks are created.
Since version 3.60a, a time limit is added to the trial version. During the first 15 minutes, an unlimited number of tasks can be created.
If more than three tasks were created during the time limit time, the system stops and calls OS_Error() when the time limit exceeded.
Version 3.60
- OS_AddTickHook() and OS_RemoveTickHook() implemented.
These new functions allow the application to add and remove user function calls (hook functions) to the OS timer tick handler.
Version 3.52c
- OS_SetTaskName() introduced
OS_SetTaskName() allows modification of task names on the fly.
This may be useful if the functionality of a task changes during runtime and the new state should be shown using embOSView or an other task visualisation tool.
Version 3.52
- None
Improvements
Version 3.62
- Internal representation of scheduler states modified.
The states which control panding task switches and show the reason of the task switch are handled in compact structure now.
The previous version used bit fields and definitions which were difficult to understand and which were difficult to handle.
The new definition and structure is easier to handle which results in faster code execution.
Version 3.60e
- OS_ERR_WRONG_STACK error code added.
Some ports of embOS for CPUs with different stack pointers require that the CPU enters main() with a specific stack selected.
These ports of embOS now contain code to examine the stack used in main and call OS_error() with the new error code OS_ERR_WRON_STACK, if the startup code entered main with the wrong stackpointer selected.
Version 3.60c
- OS_ASSERT_INIT_CALLED()
A new assertion is added which checks whether OS_InitKern() was called before tasks are created.
In debug builds, the OS_Error() function will be called, if tasks are created before calling OS_InitKern(). - OS_GetTaskName() modified.
In previous versions, OS_GetTaskName() had to be called with a valid task ID. Now, the NULL pointer may be passed as argument to address the current task.
The function will always return a valid string.
The previous implementation might have returned a NULL pointer, which could cause problems, if the result was not evaluated be the calling function.
Version 3.60b
- OS_ASSERT_ISR_LEVEL()
A new assertion was defined which will call OS_Error() if the CPU runs in interrupt mode but OS_EnterInterrupt() or OS_EnterNestableInterrupt() was not called.
With version 3.60b the assertion is not implemented, it is just defined and usage is prepared. The implementation will be made in future versions of embOS.
Version 3.60
- OS_GetVersion() implemented as function
OS_GetVersion() may be used by the application to retrieve the embOS library version. The result may be used to verify whether the library version matches the embOS header file RTOS.h.
Version 3.52e
- All embOS variables located in one module.
All embOS variables are located in one module now. In previous versions of embOS, some module specific embOS variables were located in the module they were used for.
Version 3.52
- None
Program corrections
Version 3.60a1
- MakeShip batch file corrected. OS_Priv.c was missing in source code shipping.
Version 3.60e
- OS_EVENT_Create() corrected.
OS_EVENT_Create() could call the errorhandler OS_Error() with errorcode OS_ERR_2USE_EVENTOBJ if an Eventobject was created dynamically or as a local obejct in a function.
This happened, if the un-initialized data area of the event object contained one specific byte (id code) of the event object.
The problem existed in all previous embOS versions and is fixed with version 3.60e. - embOSView corrected.
When the update interval of embOSView was set to 200ms or a longer value, the reaction of user input or mouse events was blocked for the same time.
The problem existed since version 3.32 of embOSView and is fixed with version 3.52b.
Version 3.60c
- Extended task context corrected.
Version 3.60b
- Preemptiv task switch from interrupt corrected
Version 3.52b
- OS_SendString() corrected.
When sending an empty string, the calling task was suspended forever.
The problem existed in all previous embOS versions and is fixed with version 3.52b. - embOSView corrected.
When the update interval of embOSView was set to 200ms or a longer value, the reaction of user input or mouse events was blocked for the same time.
The problem existed since version 3.32 of embOSView and is fixed with version 3.52b.
Version 3.52a
- OS_Terminate() for XR-build corrected.
OS_Terminate() in XR-builds might have failed and the system stuck in an endless loop.
All other library modes were not affected.
Version 3.52
- None
Known problems / Limitations
Version 3.52
- None
Release history
| Version | Release date | Short explanation |
| V3.82e | 31. Mar 2010 | Update to latest embOS generic sources V3.82e. BSP for RSKH8S2456 added. |
| V3.62a1 | 03. Aug 2009 | MakeShip batch file corrected. |
| V3.62a | 14. Oct 2008 | Update to new embOS generic sources V3.62a. |
| V3.60e | 26. Aug 2008 | Update to new embOS generic sources V3.60e. |
| V3.60c | 28. Apr 2008 | Update to new embOS generic sources V3.60c. Extended task context corrected. |
| V3.60b | 28. Mar 2008 | Update to new embOS generic sources V3.60b. Preemptiv task switch from interrupt corrected. |
| V3.60a | 12. Mar 2008 | Update to new embOS generic sources V3.60a. BSP for H8S2472 (2600 CPU) added. |
| V3.52 | 23. Aug 2007 | Initial release, based on embOS V3.52 |
Miscellaneous
This document was first released with version 3.52 of the software.
Software released earlier is documented internally.
This information is available at request.
H8/H8S/H8SX, HEW
Head office Germany
US office 
