8. MicroC/OS-II Real-Time Operating System



Similar documents
A. Using the Nios II Integrated Development Environment

949 Crestview Circle Weston, FL U.S.A. The Real-Time kernel V2.90. Release Notes. Copyright 2010, Micriµm All Rights reserved

Using the NicheStack TCP/IP Stack - Nios II Edition Tutorial

快 速 porting μc/os-ii 及 driver 解 說

The Real-Time Operating System ucos-ii

Nios II Software Developer s Handbook

1. Overview of Nios II Embedded Development

1. Overview of Nios II Embedded Development

Nios II Classic Software Developer s Handbook

MQX Lite Real-Time Operating System User Guide

2. Developing Nios II Software

Nios II IDE Help System

INtime 4.0 Software September 2009

Notes and terms of conditions. Vendor shall note the following terms and conditions/ information before they submit their quote.

EE8205: Embedded Computer System Electrical and Computer Engineering, Ryerson University. Multitasking ARM-Applications with uvision and RTX

Digitale Signalverarbeitung mit FPGA (DSF) Soft Core Prozessor NIOS II Stand Mai Jens Onno Krah

Real-Time Systems Prof. Dr. Rajib Mall Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur

the high-performance embedded kernel User Guide Version 5.0 Express Logic, Inc Toll Free 888.THREADX FAX

Guidelines for Developing a Nios II HAL Device Driver

Q N X S O F T W A R E D E V E L O P M E N T P L A T F O R M v Steps to Developing a QNX Program Quickstart Guide

Design and Development of ARM Processor Based Web Server

Nios II-Based Intellectual Property Camera Design

Embedded Software development Process and Tools:

Performance Comparison of RTOS

10 STEPS TO YOUR FIRST QNX PROGRAM. QUICKSTART GUIDE Second Edition

Why Threads Are A Bad Idea (for most purposes)

8. Exception Handling

Using the TASKING Software Platform for AURIX

RTOS Debugger for ecos

What is best for embedded development? Do most embedded projects still need an RTOS?

System Software Integration: An Expansive View. Overview

Interfacing an HTML Form to the ez80f91 MCU

Mobile Operating Systems. Week I

SYSTEM ecos Embedded Configurable Operating System

CS222: Systems Programming

Comparing RTOS to Infinite Loop Designs

Embedded C Programming, Linux, and Vxworks. Synopsis

Soft processors for microcontroller programming education

An Easier Way for Cross-Platform Data Acquisition Application Development

Linux Driver Devices. Why, When, Which, How?

Embedded Systems. 6. Real-Time Operating Systems

REAL TIME OPERATING SYSTEM PROGRAMMING-II: II: Windows CE, OSEK and Real time Linux. Lesson-12: Real Time Linux

A Comparative Study on Vega-HTTP & Popular Open-source Web-servers

Code Sharing using C++ between Desktop Applications and Real-time Embedded Platforms

Linux 2.4. Linux. Windows

Operating System Manual. Realtime Communication System for netx. Kernel API Function Reference.

REAL TIME OPERATING SYSTEMS. Lesson-3:

Freescale MQX Software Solutions

Eddy Integrated Development Environment, LemonIDE for Embedded Software System Development

Operating Systems. 05. Threads. Paul Krzyzanowski. Rutgers University. Spring 2015

Freescale Semiconductor, I

How To Port A Program To Dynamic C (C) (C-Based) (Program) (For A Non Portable Program) (Un Portable) (Permanent) (Non Portable) C-Based (Programs) (Powerpoint)

Design and Implementation of Remote/Short-range Smart Home Monitoring System Based on ZigBee and STM32

13. Publishing Component Information to Embedded Software

Master of Engineering Thesis. Evaluation and Implementation of the RTOS ecos

Embedded Network Firewall on FPGA

How to design and implement firmware for embedded systems

Lecture 25 Symbian OS

Last Class: OS and Computer Architecture. Last Class: OS and Computer Architecture

CS 377: Operating Systems. Outline. A review of what you ve learned, and how it applies to a real operating system. Lecture 25 - Linux Case Study

Chapter 12. Development Tools for Microcontroller Applications

Remote Configuration Over Ethernet with the Nios II Processor

DE4 NetFPGA Packet Generator Design User Guide

Programación de Sistemas Empotrados y Móviles (PSEM)

Embedded Programming in C/C++: Lesson-1: Programming Elements and Programming in C

Application Note: AN00141 xcore-xa - Application Development

Chapter 6, The Operating System Machine Level

CHAPTER 15: Operating Systems: An Overview

Developing an Application on Core8051s IP-Based Embedded Processor System Using Firmware Catalog Drivers. User s Guide

Option nv, Gaston Geenslaan 14, B-3001 Leuven Tel Fax Page 1 of 14

AC : A SIMPLE MULTITASKING LIBRARY FOR STUDENT PROJECTS AND INTRODUCING EMBEDDED OPERATING SYSTEMS PRINCIPLES

Network Scanning: A New Feature for Digital Copiers

Real Time Programming: Concepts

Chapter 14 Virtual Machines

DS-5 ARM. Using the Debugger. Version Copyright ARM. All rights reserved. ARM DUI 0446M (ID120712)

The Lagopus SDN Software Switch. 3.1 SDN and OpenFlow. 3. Cloud Computing Technology

Nios II Development Kit Version 5.1 SP1 Release Notes

Real Time Operating Systems. Tajana Simunic Rosing Department of Computer Science and Engineering University of California, San Diego.

theguard! ApplicationManager System Windows Data Collector

Building Applications Using Micro Focus COBOL

GIVE WINGS TO YOUR IDEAS TOOLS MANUAL

Operating Systems and Networks

Special FEATURE. By Heinrich Munz

OPERATING SYSTEM SERVICES

MPLAB Harmony System Service Libraries Help

Parallel Debugging with DDT

System Structures. Services Interface Structure

Intel DPDK Boosts Server Appliance Performance White Paper

How To Write A Windows Operating System (Windows) (For Linux) (Windows 2) (Programming) (Operating System) (Permanent) (Powerbook) (Unix) (Amd64) (Win2) (X

Japan Communication India Skill Development Center

NIOS II Based Embedded Web Server Development for Networking Applications

Price: see your VeriFone sales representative. Per student, Excluding VAT.

Page 1 of 5. IS 335: Information Technology in Business Lecture Outline Operating Systems

UG103.8 APPLICATION DEVELOPMENT FUNDAMENTALS: TOOLS

Course Development of Programming for General-Purpose Multicore Processors

SOFTUNE REALOS CONFIGURATOR MANUAL

Kernel comparison of OpenSolaris, Windows Vista and. Linux 2.6

MatrixSSL Porting Guide

Cloud Networking Disruption with Software Defined Network Virtualization. Ali Khayam

REAL TIME OPERATING SYSTEMS. Lesson-10:

Transcription:

8. MicroC/OS-II Real-Time Operating System NII52008-7.0.0 Introduction Overview This chapter describes the MicroC/OS-II real-time kernel for the Nios II processor. MicroC/OS-II is a popular real-time kernel produced by Micrium Inc., and is documented in the book MicroC/OS-II - The Real Time Kernel by Jean J. Labrosse (CMP Books). The book describes MicroC/OS-II as a portable, ROMable, scalable, preemptive, real-time, multitasking kernel. MicroC/OS-II has been used in hundreds of commercial applications since its release in 1992, and has been ported to over 40 different processor architectures in addition to the Nios II processor. MicroC/OS-II provides the following services: Tasks (threads) Event flags Message passing Memory management Semaphores Time management The MicroC/OS-II kernel operates on top of the hardware abstraction layer (HAL) system library for the Nios II processor. Because of the HAL, programs based on MicroC/OS-II are more portable to other Nios II hardware systems, and are resistant to changes in the underlying hardware. Furthermore, MicroC/OS-II programs have access to all HAL services, and can call the familiar HAL advanced programming interface (API) functions. Further Information This chapter discusses the details of how to use MicroC/OS-II for the Nios II processor only. For complete reference of MicroC/OS-II features and usage, refer to MicroC/OS-II - The Real-Time Kernel. Further information is also available on the Micrium website, www.micrium.com. Altera Corporation 8 1 March 2007

Other RTOS Providers Licensing Altera distributes MicroC/OS-II in the Nios II Embedded Design Suite (EDS) for evaluation purposes only. If you plan to use MicroC/OS-II in a commercial product, you must contact Micrium to obtain a license at Licensing@Micrium.com or http://www.micrium.com 1 Micrium offers free licensing for universities and students. Contact Micrium for details. Other RTOS Providers f Altera distributes MicroC/OS-II to provide you with immediate access to an easy-to-use real-time operating system (RTOS). In addition to MicroC/OS-II, many other RTOSs are available from third-party vendors. For a complete list of RTOSs that support the Nios II processor, visit the Nios II homepage at www.altera.com/nios2. The Altera Port of MicroC/OS-II Altera ported MicroC/OS-II to the Nios II processor. Altera distributes MicroC/OS-II in the Nios II EDS, and supports the Nios II port of the MicroC/OS-II kernel. Ready-made, working examples of MicroC/OS-II programs are installed with the Nios II EDS. In fact, Nios development boards are pre-programmed with a web server reference design based on MicroC/OS-II and the Lightweight IP TCP/IP stack. The Altera port of MicroC/OS-II is designed to be easy-to-use from within the Nios II IDE. Using the Nios II IDE, you can control the configuration for all the RTOS s modules. You need not modify source files directly to enable or disable kernel features. Nonetheless, Altera provides the Nios II processor-specific source code if you ever wish to examine it. The code is provided in directory <Nios II EDS install path>/components/altera_nios/ucosii. The processor-independent code resides in <Nios II EDS install path>/components/micrium_uc_osii. The MicroC/OS-II software component behaves like the drivers for SOPC Builder hardware components: When MicroC/OS-II is included in a Nios II integrated development environment (IDE) project, the header and source files from components/micrium_uc_osii are included in the project path, causing the MicroC/OS-II kernel to compile and link into the project. MicroC/OS-II Architecture The Altera port of MicroC/OS-II for the Nios II processor is essentially a superset of the HAL. It is the HAL environment extended by the inclusion of the MicroC/OS-II scheduler and the associated MicroC/OS-II API. The complete HAL API is available from within MicroC/OS-II projects. 8 2 Altera Corporation Nios II Software Developer s Handbook March 2007

MicroC/OS-II Real-Time Operating System Figure 8 1 shows the architecture of a program based on MicroC/OS-II and the relationship to the HAL. Figure 8 1. Architecture of MicroC/OS-II Programs User Program C Standard Library MicroC/OS-II API HAL API Device Driver Device Driver... Device Driver Nios II Processor System Hardware The multi-threaded environment affects certain HAL functions. f For details of the consequences of calling a particular HAL function within a multi-threaded environment, see the HAL API Reference chapter of the Nios II Software Developer s Handbook. MicroC/OS-II Thread-Aware Debugging When debugging a MicroC/OS-II application, the debugger can display the current state of all threads within the application, including backtraces and register values. You cannot use the debugger to change the current thread, so it is not possible to use the debugger to change threads or to single step a different thread. 1 Thread-aware debugging does not change the behavior of the target application in any way. MicroC/OS-II Device Drivers Each peripheral (i.e., an SOPC Builder component) can provide include files and source files within the inc and src subdirectories of the component s HAL directory. f For more information, refer to the Developing Device Drivers for the HAL chapter of the Nios II Software Developer s Handbook. Altera Corporation 8 3 March 2007 Nios II Software Developer s Handbook

The Altera Port of MicroC/OS-II In addition to the HAL directory, a component may elect to provide a UCOSII directory that contains code specific to the MicroC/OS-II environment. Similar to the HAL directory, the UCOSII directory contains inc and src subdirectories. These directories are automatically added to the source and include search paths when building MicroC/OS- II projects in the Nios II IDE. You can use the UCOSII directory to provide code that is used only in a multi-threaded environment. Other than these additional search directories, the mechanism for providing MicroC/OS-II device drivers is identical to the process described in the Developing Device Drivers for the HAL chapter of the Nios II Software Developer s Handbook. The HAL system initialization process calls the MicroC/OS-II function OSInit()before alt_sys_init(), which instantiates and initializes each device in the system. Therefore, the complete MicroC/OS-II API is available to device drivers, although the system is still running in singlethreaded mode until the program calls OSStart() from within main(). Thread-Safe HAL Drivers To allow the same driver to be portable across the HAL and MicroC/OS-II environments, Altera defines a set of OS-independent macros that provide access to operating system facilities. When compiled for a MicroC/OS-II project, the macros expand to a MicroC/OS-II API call. When compiled for a single-threaded HAL project, the macros expand to benign empty implementations. These macros are used in Alteraprovided device driver code, and you can use them if you need to write a device drivers with similar portability. Table 8 1 lists the available macros and their function. f For more information on the functionality in the MicroC/OS-II environment, see MicroC/OS-II The Real-Time Kernel. 8 4 Altera Corporation Nios II Software Developer s Handbook March 2007

MicroC/OS-II Real-Time Operating System The path listed for the header file is relative to the <Nios II EDS install path>/components/micrium_uc_osii/ucosii/inc directory. Table 8 1. OS-Independent Macros for Thread-Safe HAL Drivers (Part 1 of 2) Macro Defined in Header MicroC/OS-II Implementation ALT_FLAG_GRP(group) os/alt_flag.h Create a pointer to a flag group with the name group. ALT_EXTERN_FLAG_GRP(group) os/alt_flag.h Create an external reference to a pointer to a flag group with name group. ALT_STATIC_FLAG_GRP(group) os/alt_flag.h Create a static pointer to a flag group with the name group. ALT_FLAG_CREATE(group, flags) ALT_FLAG_PEND(group, flags, wait_type, timeout) ALT_FLAG_POST(group, flags, opt) os/alt_flag.h os/alt_flag.h os/alt_flag.h Call OSFlagCreate() to initialize the flag group pointer, group, with the flags value flags. The error code is the return value of the macro. Call OSFlagPend() with the first four input arguments set to group, flags, wait_type, and timeout respectively. The error code is the return value of the macro. Call OSFlagPost() with the first three input arguments set to group, flags, and opt respectively. The error code is the return value of the macro. ALT_SEM(sem) os/alt_sem.h Create an OS_EVENT pointer with the name sem. ALT_EXTERN_SEM(sem) os/alt_sem.h Create an external reference to an OS_EVENT pointer with the name sem. ALT_STATIC_SEM(sem) os/alt_sem.h Create a static OS_EVENT pointer with the name sem. Single-Threaded HAL Implementation Empty statement. Empty statement. Empty statement. Return 0 (success). Return 0 (success). Return 0 (success). Empty statement. Empty statement. Empty statement. Altera Corporation 8 5 March 2007 Nios II Software Developer s Handbook

The Altera Port of MicroC/OS-II Table 8 1. OS-Independent Macros for Thread-Safe HAL Drivers (Part 2 of 2) Macro Defined in Header MicroC/OS-II Implementation ALT_SEM_CREATE(sem, value) os/alt_sem.h Call OSSemCreate() with the argument value to initialize the OS_EVENT pointer sem. The return value is zero upon success, or negative otherwise. ALT_SEM_PEND(sem, timeout) os/alt_sem.h Call OSSemPend() with the first two argument set to sem and timeout respectively. The error code is the return value of the macro. ALT_SEM_POST(sem) os/alt_sem.h Call OSSemPost() with the input argument sem. Single-Threaded HAL Implementation Return 0 (success). Return 0 (success). Return 0 (success). The Newlib ANSI C Standard Library Programs based on MicroC/OS-II can also call the ANSI C standard library functions. Some consideration is necessary in a multi-threaded environment to ensure that the C standard library functions are thread safe. The newlib C library stores all global variables within a single structure referenced through the pointer _impure_ptr. However, the Altera MicroC/OS-II port creates a new instance of the structure for each task. Upon a context switch, the value of _impure_ptr is updated to point to the current task s version of this structure. In this way, the contents of the structure pointed to by _impure_ptr are treated as thread local. For example, through this mechanism each task has its own version of errno. This thread-local data is allocated at the top of the task s stack. Therefore, you need to make allowance when allocating memory for stacks. In general, the _reent structure consumes approximately 900 bytes of data for the normal C library, or 90 bytes for the reduced-footprint C library. f For further details on the contents of the _reent structure, refer to the newlib documentation. On the Windows Start menu, click Programs, Altera, Nios II <version>, Nios II Documentation. In addition, the MicroC/OS-II port provides appropriate task locking to ensure that heap accesses, i.e., calls to malloc() and free() are also thread safe. 8 6 Altera Corporation Nios II Software Developer s Handbook March 2007

MicroC/OS-II Real-Time Operating System Implementing MicroC/OS-II Projects in the Nios II IDE To create a program based on MicroC/OS-II, you must first set the properties for the system library to a MicroC/OS-II project. From there, the Nios II IDE offers RTOS options that allow you to control the configuration of the MicroC/OS-II kernel. Traditionally, you had to configure MicroC/OS-II using #define directives in the file OS_CFG.h. Instead, the Nios II IDE provides a GUI that allows you to configure each option. Therefore, you do not need to edit header files or source code to configure the MicroC/OS-II features. The GUI settings are reflected in the system library s system.h file; OS_CFG.h simply includes system.h. The following sections define the MicroC/OS-II settings available from the Nios II IDE. The meaning of each setting is defined fully in the MicroC/OS-II The Real-Timer Kernel chapter of the MicroC/OS-II Configuration Manual. f For step-by-step instructions on how to create a MicroC/OS-II project in the Nios II IDE, refer to Using the MicroC/OS-II RTOS with the Nios II Processor Tutorial. MicroC/OS-II General Options Table 8 2 shows the general options. Table 8 2. General Options (Part 1 of 2) Option Maximum number of tasks Maps onto the #define OS_MAX_TASKS. Must be at least 2 Lowest assignable priority Maps on the #define OS_LOWEST_PRIO. Maximum allowable value is 63. Enable code generation for event flags Enable code generation for mutex semaphores Enable code generation for semaphores Enable code generation for mailboxes Maps onto the #define OS_FLAG_EN. When disabled, event flag settings are also disabled. See Event Flags s on page 8 8. Maps onto the #define OS_MUTEX_EN. When disabled, mutual exclusion semaphore settings are also disabled. See Mutex s on page 8 8 Maps onto the #define OS_SEM_EN. When disabled, semaphore settings are also disabled. See Semaphores s on page 8 9. Maps onto the #define OS_MBOX_EN. When disabled, mailbox settings are also disabled. See Mailboxes s on page 8 9. Altera Corporation 8 7 March 2007 Nios II Software Developer s Handbook

Implementing MicroC/OS-II Projects in the Nios II IDE Table 8 2. General Options (Part 2 of 2) Option Enable code generation for queues Enable code generation for memory management Maps onto the #define OS_Q_EN. When disabled, queue settings are also disabled. See Queues s on page 8 9. Maps onto the #define OS_MEM_EN. When disabled, memory management settings are also disabled. See Memory Management s on page 8 10. Event Flags s Table 8 3 shows the event flag settings. Table 8 3. Event Flags s wait on clear event flags OSFlagAccept() OSFlagDel() OSFlagQuery() Maximum number of event flag groups Size of name of event flags group Maps on #define OS_FLAG_WAIT_CLR_EN. Maps on #define OS_FLAG_ACCEPT_EN. Maps on #define OS_FLAG_DEL_EN. Maps onto the #define OS_FLAG_QUERY_EN. Maps onto the #define OS_MAX_FLAGS. Maps onto the #define OS_FLAG_NAME_SIZE. Mutex s Table 8 4 shows the mutex settings. Table 8 4. Mutex s OSMutexAccept() OSMutexDel() OSMutexQuery() Maps onto the #define OS_MUTEX_ACCEPT_EN. Maps onto the #define OS_MUTEX_DEL_EN. Maps onto the #define OS_MUTEX_QUERY_EN. 8 8 Altera Corporation Nios II Software Developer s Handbook March 2007

MicroC/OS-II Real-Time Operating System Semaphores s Table 8 5 shows the semaphores settings. Table 8 5. Semaphores s OSSemAccept() OSSemSet() OSSemDel() OSSemQuery() Maps onto the #define OS_SEM_ACCEPT_EN. Maps onto the #define OS_SEM_SET_EN. Maps onto the #define OS_SEM_DEL_EN. Maps onto the #define OS_SEM_QUERY_EN. Mailboxes s Table 8 6 shows the mailbox settings. Table 8 6. Mailboxes s OSMboxAccept() OSMBoxDel() OSMboxPost() OSMboxPostOpt() Include code fro OSMBoxQuery() Maps onto #define OS_MBOX_ACCEPT_EN. Maps onto #define OS_MBOX_DEL_EN. Maps onto #define OS_MBOX_POST_EN. Maps onto #define OS_MBOX_POST_OPT_EN. Maps onto #define OS_MBOX_QUERY_EN. Queues s Table 8 7 shows the queues settings. Table 8 7. Queues s (Part 1 of 2) OSQAccept() OSQDel() OSQFlush() OSQPost() OSQPostFront() OSQPostOpt() Maps onto #define OS_Q_ACCEPT_EN. Maps onto #define OS_Q_DEL_EN. Maps onto #define OS_Q_FLUSH_EN. Maps onto #define OS_Q_POST_EN. Maps onto #define OS_Q_POST_FRONT_EN. Maps onto #define OS_Q_POST_OPT_EN. Altera Corporation 8 9 March 2007 Nios II Software Developer s Handbook

Implementing MicroC/OS-II Projects in the Nios II IDE Table 8 7. Queues s (Part 2 of 2) OSQQuery() Maximum number of Queue Control blocks Maps onto #define OS_Q_QUERY_EN. Maps onto #define OS_MAX_QS. Memory Management s Table 8 8 shows the memory management settings. Table 8 8. Memory Management s OSMemQuery() Maximum number of memory partitions Size of memory partition name Maps onto #define OS_MEM_QUERY_EN. Maps onto #define OS_MAX_MEM_PART. Maps onto #define OS_MEM_NAME_SIZE. Miscellaneous s Table 8 9 shows the miscellaneous settings. Table 8 9. Miscellaneous s (Part 1 of 2) Enable argument checking Enable ucos-ii hooks Enable debug variables OSSchedLock() and OSSchedUnlock() Enable tick stepping feature for ucos-view Enable statistics task Check task stacks from statistics task Statistics task stack size Idle task stack size Maps onto #define OS_ARG_CHK_EN. Maps onto #define OS_CPU_HOOKS_EN. Maps onto #define OS_DEBUG_EN. Maps onto #define OS_SCHED_LOCK_EN. Maps onto #define OS_TICK_STEP_EN. Maps onto #define OS_TASK_STAT_EN. Maps onto #define OS_TASK_STAT_STK_CHK_EN. Maps onto #define OS_TASK_STAT_STK_SIZE. Maps onto #define OS_TASK_IDLE_STK_SIZE. 8 10 Altera Corporation Nios II Software Developer s Handbook March 2007

MicroC/OS-II Real-Time Operating System Table 8 9. Miscellaneous s (Part 2 of 2) Maximum number of event control blocks Size of semaphore, mutex, mailbox, or queue name Maps onto #define OS_MAX_EVENTS 60. Maps onto #define OS_EVENT_NAME_SIZE. Task Management s Table 8 10 shows the task management settings. Table 8 10. Task Management s OSTaskChangePrio() OSTaskCreate() OSTaskCreateExt() OSTaskDel() Include variables in OS_TCB for profiling OSTaskQuery() OSTaskSuspend() and OSTaskResume() OSTaskSwHook() Size of task name Maps onto #define OS_TASK_CHANGE_PRIO_EN. Maps onto #define OS_TASK_CREATE_EN. Maps onto #define OS_TASK_CREATE_EXT_EN. Maps onto #define OS_TASK_DEL_EN. Maps onto #define OS_TASK_PROFILE_EN. Maps onto #define OS_TASK_QUERY_EN. Maps onto #define OS_TASK_SUSPEND_EN. Maps onto #define OS_TASK_SW_HOOK_EN. Maps onto #define OS_TASK_NAME_SIZE. Time Management s Table 8 11 shows the time management settings. Table 8 11. Time Management s (Part 1 of 2) OSTimeDlyHMSM() Include code OSTimeDlyResume() Maps onto #define OS_TIME_DLY_HMSM_EN. Maps onto #define OS_TIME_DLY_RESUME_EN. Altera Corporation 8 11 March 2007 Nios II Software Developer s Handbook

Document Revision History Table 8 11. Time Management s (Part 2 of 2) OSTimeGet() and OSTimeSet() OSTimeTickHook() Maps onto #define OS_TIME_GET_SET_EN. Maps onto #define OS_TIME_TICK_HOOK_EN. Document Revision History Table 8 12 shows the revision history for this document. Table 8 12. Document Revision History Date & Document Version Changes Made Summary of Changes March 2007, v7.0.0 November 2006, v6.1.0 May 2006, v6.0.0 October 2005, v5.1.0 May 2005, v5.0.0 December 2004 v1.1 May 2004 v1.0 No change from previous release. No change from previous release. No change from previous release. No change from previous release. No change from previous release. Added thread-aware debugging paragraph. First publication. 8 12 Altera Corporation Nios II Software Developer s Handbook March 2007