Nios II Classic Software Developer’s Handbook 2 Sw Development Guide

User Manual:

Open the PDF directly: View PDF PDF.
Page Count: 468

DownloadNios II Classic Software Developer’s Handbook 2 Sw Development Guide
Open PDF In BrowserView PDF
Nios II Classic Software Developer’s
Handbook

Subscribe
Send Feedback

NII5V2
2015.05.14

101 Innovation Drive
San Jose, CA 95134
www.altera.com

TOC-2

Contents
Overview of Nios II Embedded Development.................................................... 1-1
Prerequisites for Understanding the Nios II Embedded Design Suite.................................................1-1
Finding Nios II EDS Files........................................................................................................................... 1-1
Nios II Software Development Environment.......................................................................................... 1-2
Nios II EDS Development Flows............................................................................................................... 1-2
Nios II SBT Development Flow..................................................................................................... 1-2
Nios II Programs.......................................................................................................................................... 1-3
Makefiles and the SBT..................................................................................................................... 1-3
Nios II Software Project Types.......................................................................................................1-4
Altera Software Packages for Embedded Systems................................................................................... 1-4
Nios II Embedded Design Examples.........................................................................................................1-5
Hardware Examples.........................................................................................................................1-5
Software Examples........................................................................................................................... 1-5
Third-Party Embedded Tools Support..................................................................................................... 1-6
Additional Nios II Information................................................................................................................. 1-6
Document Revision History for Overview of Nios II Embedded Development................................ 1-7

Getting Started with the Graphical User Interface.............................................2-1
Getting Started with Nios II Software in Eclipse..................................................................................... 2-1
The Nios II SBT for Eclipse Workbench...................................................................................... 2-1
Creating a Project.............................................................................................................................2-2
Navigating the Project..................................................................................................................... 2-4
Building the Project......................................................................................................................... 2-4
Configuring the FPGA.................................................................................................................... 2-4
Running the Project on Nios II Hardware................................................................................... 2-5
Debugging the Project on Nios II Hardware............................................................................... 2-5
Creating a Simple BSP...................................................................................................................2-11
Makefiles and the Nios II SBT for Eclipse.............................................................................................. 2-11
Eclipse Source Management.........................................................................................................2-12
User Source Management.............................................................................................................2-13
BSP Source Management..............................................................................................................2-14
Using the BSP Editor................................................................................................................................. 2-14
Tcl Scripting and the Nios II BSP Editor....................................................................................2-14
Starting the Nios II BSP Editor.................................................................................................... 2-14
The Nios II BSP Editor Screen Layout........................................................................................ 2-15
The Command Area...................................................................................................................... 2-15
The Console Area...........................................................................................................................2-18
Exporting a Tcl Script....................................................................................................................2-19
Creating a New BSP.......................................................................................................................2-19
BSP Validation Errors................................................................................................................... 2-20
Run Configurations in the SBT for Eclipse............................................................................................ 2-21
Opening the Run Configuration Dialog Box............................................................................. 2-21

Altera Corporation

TOC-3

The Project Tab.............................................................................................................................. 2-21
The Target Connection Tab......................................................................................................... 2-21
The Debugger Tab......................................................................................................................... 2-21
Nios II Hardware v2 (beta).......................................................................................................................2-22
Main Tab......................................................................................................................................... 2-22
Debugger Tab................................................................................................................................. 2-22
Multi-Core Launches.....................................................................................................................2-22
Optimizing Project Build Time................................................................................................................2-22
Importing a Command-Line Project...................................................................................................... 2-22
Nios II Command-Line Projects..................................................................................................2-23
Importing through the Import Wizard.......................................................................................2-23
Road Map........................................................................................................................................ 2-23
Import a Command-Line C/C++ Application.......................................................................... 2-23
Import a Supporting Project........................................................................................................ 2-24
User-Managed Source Files.......................................................................................................... 2-25
Packaging a Library for Reuse..................................................................................................................2-25
Creating the User Library............................................................................................................. 2-25
Using the Library........................................................................................................................... 2-25
Creating a Software Package.................................................................................................................... 2-26
Programming Flash in Altera Embedded Systems................................................................................2-28
Starting the Flash Programmer....................................................................................................2-28
Creating a Flash Programmer Settings File................................................................................2-29
The Flash Programmer Screen Layout........................................................................................2-29
The Command Area...................................................................................................................... 2-29
The Console Area...........................................................................................................................2-30
Saving a Flash Programmer Settings File................................................................................... 2-30
Flash Programmer Options.......................................................................................................... 2-30
Creating Memory Initialization Files...................................................................................................... 2-31
Generate Memory Initialization Files......................................................................................... 2-31
Generate Memory Initialization Files by the Legacy Method................................................. 2-31
Memory Initialization Files for User-Defined Memories........................................................ 2-32
Running a Nios II System with ModelSim............................................................................................. 2-33
Using ModelSim with an SOPC Builder-Generated System................................................... 2-33
Using ModelSim with a Qsys-Generated System......................................................................2-33
Eclipse Usage Notes...................................................................................................................................2-36
Configuring Application and Library Properties...................................................................... 2-36
Configuring BSP Properties......................................................................................................... 2-36
Exclude from Build Not Supported.............................................................................................2-36
Selecting the Correct Launch Configuration Type................................................................... 2-37
Target Connection Options..........................................................................................................2-37
Renaming Nios II Projects............................................................................................................2-37
Running Shell Scripts from the SBT for Eclipse........................................................................ 2-37
Must Use Nios II Build Configuration........................................................................................2-38
CDT Limitations............................................................................................................................ 2-38
Enhancements for Build Configurations in SBT and SBT for Eclipse................................... 2-40
Document Revision History for Getting Started with the Graphical User Interface....................... 2-43

Getting Started from the Command Line...........................................................3-1

Altera Corporation

TOC-4

Advantages of Command-Line Software Development.........................................................................3-1
Outline of the Nios II SBT Command-Line Interface............................................................................ 3-1
Utilities.............................................................................................................................................. 3-1
Scripts................................................................................................................................................ 3-2
Tcl Commands................................................................................................................................. 3-4
Tcl Scripts..........................................................................................................................................3-4
The Nios II Command Shell...........................................................................................................3-4
Getting Started in the SBT Command Line............................................................................................. 3-5
Prerequisites......................................................................................................................................3-5
Creating Hello_World for an Altera Development Board.........................................................3-6
Running Hello_World on an Altera Development Board......................................................... 3-6
Debugging hello_world...................................................................................................................3-7
Software Build Tools Scripting Basics.......................................................................................................3-8
Creating a BSP with a Script...........................................................................................................3-9
Creating an Application Project with a Script........................................................................... 3-11
Running make............................................................................................................................................ 3-12
Creating Memory Initialization Files.......................................................................................... 3-12
Document Revision History for Getting Started from the Command Line......................................3-12

Nios II Software Build Tools...............................................................................4-1
Road Map for the SBT................................................................................................................................. 4-2
What the Build Tools Create.......................................................................................................... 4-2
Comparing the Command Line with Eclipse...............................................................................4-2
Makefiles....................................................................................................................................................... 4-2
Modifying Makefiles........................................................................................................................4-3
Makefile Targets............................................................................................................................... 4-3
Nios II Embedded Software Projects.........................................................................................................4-4
Applications and Libraries..............................................................................................................4-4
Board Support Packages..................................................................................................................4-5
Software Build Process.................................................................................................................... 4-7
Common BSP Tasks.................................................................................................................................... 4-7
Adding the Nios II SBT to Your Tool Flow................................................................................. 4-8
Linking and Locating.....................................................................................................................4-10
Other BSP Tasks.............................................................................................................................4-15
Details of BSP Creation.............................................................................................................................4-19
BSP Settings File Creation............................................................................................................ 4-21
Generated and Copied Files......................................................................................................... 4-21
HAL BSP Files and Folders...........................................................................................................4-21
Linker Map Validation..................................................................................................................4-26
Tcl Scripts for BSP Settings...................................................................................................................... 4-26
Calling a Custom BSP Tcl Script..................................................................................................4-26
Revising Your BSP..................................................................................................................................... 4-29
Rebuilding Your BSP.....................................................................................................................4-29
Regenerating Your BSP.................................................................................................................4-30
Updating Your BSP....................................................................................................................... 4-32
Recreating Your BSP..................................................................................................................... 4-33
Specifying BSP Defaults............................................................................................................................ 4-34
Top Level Tcl Script for BSP Defaults.........................................................................................4-35

Altera Corporation

TOC-5

Specifying the Default stdio Device.............................................................................................4-36
Specifying the Default System Timer.......................................................................................... 4-37
Specifying the Default Memory Map.......................................................................................... 4-37
Specifying Default Bootloader Parameters.................................................................................4-37
Using Individual Default Tcl Procedures................................................................................... 4-38
Device Drivers and Software Packages................................................................................................... 4-39
Boot Configurations for Altera Embedded Software............................................................................4-39
Memory Types................................................................................................................................4-39
Boot from Flash Configuration....................................................................................................4-40
Boot from Monitor Configuration.............................................................................................. 4-40
Run from Initialized Memory Configuration............................................................................ 4-41
Run-time Configurable Reset Configuration.............................................................................4-41
Altera-Provided Embedded Development Tools.................................................................................. 4-41
Nios II Software Build Tool GUIs............................................................................................... 4-41
The Nios II Command Shell.........................................................................................................4-43
The Nios II Command-Line Commands................................................................................... 4-44
Restrictions................................................................................................................................................. 4-47
Document Revision History for Nios II Software Build Tools............................................................4-47

Overview of the Hardware Abstraction Layer.................................................... 5-1

Getting Started with the Hardware Abstraction Layer........................................................................... 5-1
HAL Architecture for Embedded Software Systems...............................................................................5-2
Services.............................................................................................................................................. 5-2
Layers of a HAL-Based System...................................................................................................... 5-2
Applications versus Drivers............................................................................................................5-2
Generic Device Models................................................................................................................... 5-3
C Standard Library—newlib...........................................................................................................5-4
Embedded Hardware Supported by the HAL..........................................................................................5-4
Nios II Processor Core Support..................................................................................................... 5-4
Supported Peripherals..................................................................................................................... 5-4
MPU Support....................................................................................................................................5-6
MMU Support.................................................................................................................................. 5-6
Document Revision History for Overview of the Hardware Abstraction Layer.................................5-6

Developing Programs Using the Hardware Abstraction Layer......................... 6-1

HAL BSP Settings.........................................................................................................................................6-1
The Nios II Embedded Project Structure................................................................................................. 6-2
The system.h System Description File...................................................................................................... 6-3
Data Widths and the HAL Type Definitions........................................................................................... 6-4
UNIX-Style Interface...................................................................................................................................6-4
File System.................................................................................................................................................... 6-5
Using Character-Mode Devices................................................................................................................. 6-6
Standard Input, Standard Output and Standard Error...............................................................6-6
General Access to Character Mode Devices.................................................................................6-7
C++ Streams..................................................................................................................................... 6-7
/dev/null............................................................................................................................................ 6-7
Lightweight Character-Mode I/O..................................................................................................6-7

Altera Corporation

TOC-6

Altera Logging Functions................................................................................................................6-7
Using File Subsystems............................................................................................................................... 6-13
Host-Based File System................................................................................................................. 6-13
Using Timer Devices................................................................................................................................. 6-14
System Clock Driver...................................................................................................................... 6-14
Alarms............................................................................................................................................. 6-15
Timestamp Driver..........................................................................................................................6-16
Using Flash Devices...................................................................................................................................6-17
Simple Flash Access....................................................................................................................... 6-18
Block Erasure or Corruption........................................................................................................6-18
Fine-Grained Flash Access........................................................................................................... 6-19
Using DMA Devices.................................................................................................................................. 6-23
DMA Transmit Channels............................................................................................................. 6-24
DMA Receive Channels................................................................................................................ 6-24
Using Interrupt Controllers..................................................................................................................... 6-27
Reducing Code Footprint in Embedded Systems..................................................................................6-27
Enable Compiler Optimizations.................................................................................................. 6-28
Use Reduced Device Drivers........................................................................................................ 6-28
Reduce the File Descriptor Pool.................................................................................................. 6-28
Use /dev/null...................................................................................................................................6-28
Use a Smaller File I/O Library......................................................................................................6-29
Use the Lightweight Device Driver API..................................................................................... 6-31
Use the Minimal Character-Mode API...................................................................................... 6-32
Eliminate Unused Device Drivers............................................................................................... 6-33
Eliminate Unneeded Exit Code....................................................................................................6-33
Turn off C++ Support................................................................................................................... 6-34
Boot Sequence and Entry Point............................................................................................................... 6-34
Hosted Versus Free-Standing Applications............................................................................... 6-34
Boot Sequence for HAL-Based Programs...................................................................................6-35
Customizing the Boot Sequence.................................................................................................. 6-35
Memory Usage........................................................................................................................................... 6-36
Memory Sections............................................................................................................................6-36
Assigning Code and Data to Memory Partitions...................................................................... 6-37
Placement of the Heap and Stack................................................................................................ 6-39
Global Pointer Register................................................................................................................. 6-39
Boot Modes..................................................................................................................................... 6-41
Working with HAL Source Files..............................................................................................................6-41
Finding HAL Files..........................................................................................................................6-41
Overriding HAL Functions.......................................................................................................... 6-41
Document Revision History for Developing Programs Using the Hardware Abstraction Layer
.................................................................................................................................................................6-42

Developing Device Drivers for the Hardware Abstraction Layer...................... 7-1
Driver Integration in the HAL API........................................................................................................... 7-1
The HAL Peripheral-Specific API............................................................................................................. 7-2
Preparing for HAL Driver Development..................................................................................................7-2
Development Flow for Creating Device Drivers..................................................................................... 7-2
Nios II Hardware Design Concepts...........................................................................................................7-3

Altera Corporation

TOC-7

The Relationship Between the .sopcinfo File and system.h....................................................... 7-3
Using the System Generation Tool to Optimize Hardware.......................................................7-3
Components, Devices, and Peripherals........................................................................................ 7-3
Accessing Hardware.................................................................................................................................... 7-3
Creating Embedded Drivers for HAL Device Classes............................................................................ 7-5
Character-Mode Device Drivers....................................................................................................7-5
File Subsystem Drivers.................................................................................................................... 7-7
Timer Device Drivers...................................................................................................................... 7-8
Flash Device Drivers........................................................................................................................7-9
DMA Device Drivers..................................................................................................................... 7-10
Ethernet Device Drivers................................................................................................................7-11
Integrating a Device Driver in the HAL................................................................................................. 7-15
Overview......................................................................................................................................... 7-15
Assumptions and Requirements..................................................................................................7-16
The Nios II BSP Generator........................................................................................................... 7-17
File Names and Locations.............................................................................................................7-18
Driver and Software Package Tcl Script Creation..................................................................... 7-19
Creating a Custom Device Driver for the HAL..................................................................................... 7-28
Header Files and alt_sys_init.c.....................................................................................................7-28
Device Driver Source Code.......................................................................................................... 7-29
Reducing Code Footprint in HAL Embedded Drivers.........................................................................7-29
Provide Reduced Footprint Drivers............................................................................................ 7-30
Support the Lightweight Device Driver API.............................................................................. 7-30
HAL Namespace Allocation.....................................................................................................................7-31
Overriding the HAL Default Device Drivers......................................................................................... 7-32
Document Revision History for Developing Device Drivers for the Hardware Abstraction
Layer.......................................................................................................................................................7-32

Exception Handling.............................................................................................8-1
Nios II Exception Handling Overview......................................................................................................8-1
Exception Handling Terminology.................................................................................................8-1
Interrupt Controllers....................................................................................................................... 8-3
Latency and Response Time........................................................................................................... 8-5
Nios II Interrupt Service Routines.............................................................................................................8-6
HAL APIs for Hardware Interrupts.............................................................................................. 8-7
HAL ISR Restrictions.................................................................................................................... 8-11
Writing an ISR................................................................................................................................8-11
Registering an ISR with the Enhanced Interrupt API...............................................................8-13
Enabling and Disabling Interrupts.............................................................................................. 8-14
Configuring an External Interrupt Controller...........................................................................8-14
C Example....................................................................................................................................... 8-15
Upgrading to the Enhanced HAL Interrupt API...................................................................... 8-16
Improving Nios II ISR Performance....................................................................................................... 8-17
Software Performance Improvements........................................................................................ 8-17
Hardware Performance Improvements...................................................................................... 8-22
Debugging Nios II ISRs.............................................................................................................................8-24
HAL Exception Handling System Implementation.............................................................................. 8-25
Exception Handling System Structure........................................................................................ 8-25

Altera Corporation

TOC-8

General Exception Funnel............................................................................................................ 8-26
Hardware Interrupt Funnel..........................................................................................................8-26
Software Exception Funnel...........................................................................................................8-28
Invalid Instructions....................................................................................................................... 8-32
The Nios II Instruction-Related Exception Handler............................................................................ 8-32
Writing an Instruction-Related Exception Handler................................................................. 8-32
Registering an Instruction-Related Exception Handler........................................................... 8-34
Removing an Instruction-Related Exception Handler............................................................. 8-35
Document Revision History for Exception Handling.......................................................................... 8-35

Cache and Tightly-Coupled Memory..................................................................9-1
Nios II Cache Implementation...................................................................................................................9-1
Defining Cache Properties..............................................................................................................9-2
HAL API Functions for Managing Cache................................................................................................ 9-2
Initializing the Nios II Cache after Reset.................................................................................................. 9-2
Assembly Code to Initialize the Instruction Cache.....................................................................9-3
Assembly Code to Initialize the Data Cache................................................................................ 9-3
For HAL Users..................................................................................................................................9-3
Nios II Device Driver Cache Considerations...........................................................................................9-3
For HAL Users..................................................................................................................................9-4
Cache Considerations for Writing Program Loaders............................................................................. 9-4
For Users of the HAL...................................................................................................................... 9-5
Managing Cache in Multi-Master and Multi-Processor Systems......................................................... 9-5
Bit-31 Cache Bypass.........................................................................................................................9-5
For HAL Users..................................................................................................................................9-6
Nios II Tightly-Coupled Memory..............................................................................................................9-6
Document Revision History for Cache and Tightly-Coupled Memory...............................................9-6

MicroC/OS-II Real-Time Operating System.................................................... 10-1

Overview of the MicroC/OS-II RTOS.................................................................................................... 10-1
Further Information...................................................................................................................... 10-1
Licensing......................................................................................................................................... 10-2
Other RTOS Providers.............................................................................................................................. 10-2
The Nios II Implementation of MicroC/OS-II......................................................................................10-2
MicroC/OS-II Architecture.......................................................................................................... 10-2
MicroC/OS-II Thread-Aware Debugging.................................................................................. 10-3
MicroC/OS-II Device Drivers...................................................................................................... 10-3
Thread-Safe HAL Drivers.............................................................................................................10-4
The newlib ANSI C Standard Library......................................................................................... 10-5
Interrupt Service Routines for MicroC/OS-II............................................................................10-6
Implementing MicroC/OS-II Projects for the Nios II Processor........................................................10-6
Document Revision History for MicroC/OS-II Real-Time Operating System.................................10-6

Ethernet and the NicheStack TCP/IP Stack - Nios II Edition.......................... 11-1
Prerequisites for Understanding the NicheStack TCP/IP Stack......................................................... 11-1
Introduction to the NicheStack TCP/IP Stack - Nios II Edition.........................................................11-2

Altera Corporation

TOC-9

The NicheStack TCP/IP Stack Files and Directories................................................................ 11-2
Licensing......................................................................................................................................... 11-3
Other TCP/IP Stack Providers for the Nios II Processor.....................................................................11-3
Using the NicheStack TCP/IP Stack - Nios II Edition..........................................................................11-3
Nios II System Requirements.......................................................................................................11-3
The NicheStack TCP/IP Stack Tasks...........................................................................................11-4
Initializing the Stack...................................................................................................................... 11-4
Calling the Sockets Interface........................................................................................................ 11-7
Configuring the NicheStack TCP/IP Stack in a Nios II Program....................................................... 11-8
NicheStack TCP/IP Stack General Settings................................................................................11-8
IP Options....................................................................................................................................... 11-9
TCP Options...................................................................................................................................11-9
Further Information.................................................................................................................................. 11-9
Known Limitations..................................................................................................................................11-10
Document Revision History for Ethernet and the NicheStack TCP/IP Stack - Nios II Edition....
11-10

Read-Only Zip File System................................................................................12-1

Using the Read-Only Zip File System in a Project................................................................................ 12-1
Preparing the Zip File....................................................................................................................12-1
Programming the Zip File to Flash..............................................................................................12-2
Document Revision History for Read-Only Zip File System.............................................................. 12-2

Publishing Component Information to Embedded Software..........................13-1

Embedded Component Information Flow.............................................................................................13-1
Embedded Component Information Flow Diagram................................................................ 13-1
Tcl Assignment Statements.......................................................................................................... 13-2
Embedded Software Assignments........................................................................................................... 13-2
C Macro Namespace......................................................................................................................13-2
Configuration Namespace............................................................................................................ 13-3
Memory Initialization Namespace.............................................................................................. 13-8
Document Revision History for Publishing Component Information to Embedded Software.....13-9

HAL API Reference........................................................................................... 14-1
HAL API Functions...................................................................................................................................14-1
_exit()...............................................................................................................................................14-1
_rename()........................................................................................................................................14-2
alt_dcache_flush()..........................................................................................................................14-3
alt_dcache_flush_all()................................................................................................................... 14-3
alt_dcache_flush_no_writeback()............................................................................................... 14-4
alt_uncached_malloc()..................................................................................................................14-5
alt_uncached_free()....................................................................................................................... 14-6
alt_remap_uncached().................................................................................................................. 14-7
alt_remap_cached()....................................................................................................................... 14-7
alt_icache_flush_all().................................................................................................................... 14-8
alt_icache_flush()...........................................................................................................................14-9

Altera Corporation

TOC-10

alt_alarm_start().......................................................................................................................... 14-10
alt_alarm_stop()...........................................................................................................................14-11
alt_dma_rxchan_depth()............................................................................................................ 14-12
alt_dma_rxchan_close()............................................................................................................. 14-13
alt_dev_reg().................................................................................................................................14-14
alt_dma_rxchan_open()............................................................................................................. 14-15
alt_dma_rxchan_prepare().........................................................................................................14-16
alt_dma_rxchan_reg().................................................................................................................14-17
alt_dma_txchan_close()..............................................................................................................14-18
alt_dma_txchan_ioctl()...............................................................................................................14-19
alt_dma_txchan_open()..............................................................................................................14-20
alt_dma_txchan_reg().................................................................................................................14-21
alt_flash_close_dev()................................................................................................................... 14-22
alt_exception_cause_generated_bad_addr()........................................................................... 14-23
alt_erase_flash_block()............................................................................................................... 14-23
alt_dma_rxchan_ioctl().............................................................................................................. 14-24
alt_dma_txchan_space().............................................................................................................14-26
alt_dma_txchan_send().............................................................................................................. 14-27
alt_flash_open_dev()...................................................................................................................14-28
alt_fs_reg().................................................................................................................................... 14-29
alt_get_flash_info()......................................................................................................................14-29
alt_ic_irq_disable()......................................................................................................................14-30
alt_ic_irq_enabled().................................................................................................................... 14-31
alt_ic_isr_register()......................................................................................................................14-32
alt_ic_irq_enable().......................................................................................................................14-34
alt_instruction_exception_register()........................................................................................ 14-35
alt_irq_disable()........................................................................................................................... 14-36
alt_irq_cpu_enable_interrupts ().............................................................................................. 14-37
alt_irq_disable_all().....................................................................................................................14-38
alt_irq_enable()............................................................................................................................ 14-39
alt_irq_enable_all()......................................................................................................................14-39
alt_irq_enabled()..........................................................................................................................14-40
alt_irq_init()................................................................................................................................. 14-41
alt_irq_pending ()........................................................................................................................14-42
alt_irq_register().......................................................................................................................... 14-43
alt_llist_insert()............................................................................................................................ 14-44
alt_llist_remove().........................................................................................................................14-45
alt_load_section()........................................................................................................................ 14-46
alt_nticks().................................................................................................................................... 14-46
alt_read_flash()............................................................................................................................ 14-47
alt_tick()........................................................................................................................................ 14-48
alt_ticks_per_second()................................................................................................................ 14-49
alt_timestamp()............................................................................................................................14-50
alt_timestamp_freq()...................................................................................................................14-51
alt_timestamp_start()..................................................................................................................14-51
alt_write_flash()........................................................................................................................... 14-52
alt_write_flash_block()............................................................................................................... 14-53
close()............................................................................................................................................ 14-54
fstat()..............................................................................................................................................14-55

Altera Corporation

TOC-11

fork()..............................................................................................................................................14-56
fcntl()............................................................................................................................................. 14-57
execve()..........................................................................................................................................14-58
getpid().......................................................................................................................................... 14-58
kill()................................................................................................................................................14-59
stat()............................................................................................................................................... 14-60
settimeofday()...............................................................................................................................14-61
wait()..............................................................................................................................................14-61
unlink()..........................................................................................................................................14-62
sbrk()..............................................................................................................................................14-63
link().............................................................................................................................................. 14-63
lseek().............................................................................................................................................14-64
alt_sysclk_init()............................................................................................................................ 14-65
open()............................................................................................................................................ 14-66
times()............................................................................................................................................14-67
read()............................................................................................................................................. 14-68
write()............................................................................................................................................ 14-69
usleep().......................................................................................................................................... 14-70
alt_lock_flash().............................................................................................................................14-71
gettimeofday().............................................................................................................................. 14-72
ioctl()............................................................................................................................................. 14-73
isatty()............................................................................................................................................14-74
HAL Standard Types............................................................................................................................... 14-75
alt_getchar()..................................................................................................................................14-75
alt_putstr().................................................................................................................................... 14-76
alt_putchar().................................................................................................................................14-77
alt_printf().................................................................................................................................... 14-78
Document Revision History for HAL API Reference.........................................................................14-78

Nios II Software Build Tools Reference............................................................15-1

Nios II Software Build Tools Utilities..................................................................................................... 15-1
Logging Levels................................................................................................................................ 15-1
Setting Values................................................................................................................................. 15-2
Utility and Script Summary..........................................................................................................15-2
nios2-app-generate-makefile........................................................................................................15-3
nios2-bsp-create-settings.............................................................................................................. 15-4
nios2-bsp-generate-files................................................................................................................ 15-6
nios2-bsp-query-settings.............................................................................................................. 15-6
nios2-bsp-update-settings............................................................................................................ 15-7
nios2-lib-generate-makefile..........................................................................................................15-9
nios2-bsp-editor...........................................................................................................................15-10
nios2-app-update-makefile........................................................................................................ 15-10
nios2-lib-update-makefile.......................................................................................................... 15-12
nios2-swexample-create..............................................................................................................15-14
nios2-elf-insert............................................................................................................................. 15-15
nios2-elf-query............................................................................................................................. 15-16
nios2-flash-programmer-generate............................................................................................ 15-17
nios2-bsp....................................................................................................................................... 15-19

Altera Corporation

TOC-12

nios2-bsp-console........................................................................................................................ 15-21
alt-file-convert..............................................................................................................................15-22
Nios II Design Example Scripts............................................................................................................. 15-23
create-this-bsp.............................................................................................................................. 15-24
create-this-app..............................................................................................................................15-24
Finding create-this-app and create-this-bsp............................................................................ 15-24
Settings Managed by the Software Build Tools................................................................................... 15-25
Overview of BSP Settings............................................................................................................15-26
Overview of Component and Driver Settings......................................................................... 15-27
Settings Reference........................................................................................................................ 15-28
Application and User Library Makefile Variables...............................................................................15-61
Application Makefile Variables................................................................................................. 15-61
User Library Makefile Variables................................................................................................ 15-63
Standard Build Flag Variables....................................................................................................15-63
Software Build Tools Tcl Commands................................................................................................... 15-64
Tcl Command Environments.................................................................................................... 15-64
Tcl Commands for BSP Settings................................................................................................15-64
Tcl Commands for BSP Generation Callbacks........................................................................15-90
Tcl Commands for Drivers and Packages................................................................................ 15-99
Software Build Tools Path Names....................................................................................................... 15-107
Command Arguments.............................................................................................................. 15-107
Object File Directory Tree........................................................................................................15-108
Document Revision History for Nios II Software Build Tools Reference..................................... 15-109

Altera Corporation

1

Overview of Nios II Embedded Development
2015.05.14

NII5V2

Subscribe

Send Feedback

The Nios II Software Developer's Handbook has been divided into two documents - Nios II Classic Software
Developer's Handbook and Nios II Gen2 Software Developer's Handbook.
• The Nios II Classic Software Developer's Handbook is familiar to past users. There are no future updates
planned for this version.
• The Nios II Gen2 Software Developer's Handbook describes embedded software development tools for
the Nios II Gen2. It does not describe IP cores. Future updates are planned for this version.
The Nios® II Classic Software Developer’s Handbook provides the basic information needed to develop
embedded software for the Altera® Nios II processor. This handbook describes the Nios II software
development environment, the Nios II Embedded Design Suite (EDS) tools available to you, and the
process for developing software.
Related Information

Nios II Gen2 Software Developer's Handbook
For more information about the Gen2 version and for future updates.

Prerequisites for Understanding the Nios II Embedded Design Suite
The Nios II Classic Software Developer’s Handbook assumes you have a basic familiarity with embedded
processor concepts. You do not need to be familiar with any specific Altera technology or with Altera
development tools. Familiarity with Altera hardware development tools can give you a deeper
understanding of the reasoning behind the Nios II software development environment. However,
software developers can create and debug applications without further knowledge of Altera technology.

Finding Nios II EDS Files
When you install the Nios II EDS, you specify a root directory for the EDS file structure. This root
directory must be adjacent to the Quartus® II installation. When you install the latest release of the Nios II
EDS on the Windows operating system, choose a local root folder that identifies the content, for example:
c:\altera\\nios2eds.
Note: For simplicity, this handbook refers to this directory as .

© 2015 Altera Corporation. All rights reserved. ALTERA, ARRIA, CYCLONE, ENPIRION, MAX, MEGACORE, NIOS, QUARTUS and STRATIX words and logos are
trademarks of Altera Corporation and registered in the U.S. Patent and Trademark Office and in other countries. All other words and logos identified as
trademarks or service marks are the property of their respective holders as described at www.altera.com/common/legal.html. Altera warrants performance
of its semiconductor products to current specifications in accordance with Altera's standard warranty, but reserves the right to make changes to any
products and services at any time without notice. Altera assumes no responsibility or liability arising out of the application or use of any information,
product, or service described herein except as expressly agreed to in writing by Altera. Altera customers are advised to obtain the latest version of device
specifications before relying on any published information and before placing orders for products or services.

www.altera.com
101 Innovation Drive, San Jose, CA 95134

ISO
9001:2008
Registered

1-2

NII5V2
2015.05.14

Nios II Software Development Environment

Nios II Software Development Environment
The Nios II EDS provides a consistent software development environment that works for all Nios II
processor systems. With the Nios II EDS running on a host computer, an Altera FPGA, and a JTAG
download cable (such as an Altera USB-Blaster™ download cable), you can write programs for and
communicate with any Nios II processor system. The Nios II processor’s JTAG debug module provides a
single, consistent method to connect to the processor using a JTAG download cable. Accessing the
processor is the same, regardless of whether a device implements only a Nios II processor system, or
whether the Nios II processor is embedded deeply in a complex multiprocessor system. Therefore, you do
not need to spend time manually creating interface mechanisms for the embedded processor.
The Nios II EDS includes proprietary and open-source tools (such as the GNU C/C++ tool chain) for
creating Nios II programs. The Nios II EDS automates board support package (BSP) creation for Nios II
processor-based systems, eliminating the need to spend time manually creating BSPs. The BSP provides a
C/C++ runtime environment, insulating you from the hardware in your embedded system. Altera BSPs
contain the Altera hardware abstraction layer (HAL), an optional RTOS, and device drivers.

Nios II EDS Development Flows
A development flow is a way of using a set of development tools together to create a software project. The
Nios II EDS provides the following development flows for creating Nios II programs:
• The Nios II Software Build Tools (SBT), which provides two user interfaces:
• The Nios II SBT command line
• The Nios II SBT for Eclipse™

Nios II SBT Development Flow
The Nios II SBT allows you to create Nios II software projects, with detailed control over the software
build process. The same Nios II SBT utilities, scripts and Tcl commands are available from both the
command line and the Nios II SBT for Eclipse graphical user interface (GUI).
The SBT allows you to create and manage single-threaded programs as well as complex applications based
on an RTOS and middleware libraries available from Altera and third-party vendors.
The SBT provides powerful Tcl scripting capabilities. In a Tcl script, you can query project settings,
specify project settings conditionally, and incorporate the software project creation process in a scripted
software development flow. Tcl scripting is supported both in Eclipse and at the command line.
Related Information

Nios II Software Build Tools on page 4-1
For more information about Tcl scripting.

Nios II SBT for Eclipse

The Nios II SBT for Eclipse is a thin GUI layer that runs the Nios II SBT utilities and scripts behind the
scenes, presenting a unified development environment. The SBT for Eclipse provides a consistent
development platform that works for all Nios II processor systems. You can accomplish all software
development tasks within Eclipse, including creating, editing, building, running, debugging, and profiling
programs.

Altera Corporation

Overview of Nios II Embedded Development
Send Feedback

NII5V2
2015.05.14

Nios II SBT Command Line

1-3

The Nios II SBT for Eclipse is based on the popular Eclipse framework and the Eclipse C/C++ develop‐
ment toolkit (CDT) plugins. The Nios II SBT creates your project makefiles for you, and Eclipse provides
extensive capabilities for interactive debugging and management of source files.
The SBT for Eclipse also allows you to import and debug projects you created in the Nios II Command
Shell.
Related Information

• Getting Started with the Graphical User Interface on page 2-1
For more information about the Nios II SBT for Eclipse.
• Eclipse Foundation
For more information about Eclipse, visit the Eclipse Foundation website.

Nios II SBT Command Line

In the Nios II SBT command line development flow, you create, modify, build, and run Nios II programs
with Nios II SBT commands typed at a command line or embedded in a script. You run the Nios II SBT
commands from the Nios II Command Shell.

Note: To debug your command-line program, import your SBT projects to Eclipse. You can further edit,
rebuild, run, and debug your imported project in Eclipse.
Related Information

Getting Started from the Command Line on page 3-1
For more information about the Nios II SBT in command-line mode

Nios II Programs
Each Nios II program you develop consists of an application project, optional user library projects, and a
BSP project. You build your Nios II program to create an Executable and Linking Format File (.elf) which
runs on a Nios II processor.
The Nios II SBT creates software projects for you. Each project is based on a makefile.

Makefiles and the SBT
The makefile is the central component of a Nios II software project, whether the project is created with
the Nios II SBT for Eclipse, or on the command line. The makefile describes all the components of a
software project and how they are compiled and linked. With a makefile and a complete set of C/C++
source files, your Nios II software project is fully defined.
As a key part of creating a software project, the SBT creates a makefile for you. Nios II projects are
sometimes called "user-managed," because you, the user, are responsible for the content of the project
makefile. You use the Nios II SBT to control what goes in the makefile.
Related Information

Nios II Software Build Tools Reference on page 15-1
For more information about creating makefiles.

Overview of Nios II Embedded Development
Send Feedback

Altera Corporation

1-4

NII5V2
2015.05.14

Nios II Software Project Types

Nios II Software Project Types
Application Project

A Nios II C/C++ application project consists of a collection of source code, plus a makefile. A typical
characteristic of an application is that one of the source files contains function main(). An application
includes code that calls functions in libraries and BSPs. The makefile compiles the source code and links it
with a BSP and one or more optional libraries, to create one .elf file.

User Library Project

A user library project is a collection of source code compiled to create a single library archive file (.a).
Libraries often contain reusable, general purpose functions that multiple application projects can share. A
collection of common arithmetical functions is one example. A user library does not contain a main()
function.

BSP Project

A Nios II BSP project is a specialized library containing system-specific support code. A BSP provides a
software runtime environment customized for one processor in a Nios II hardware system. The Nios II
EDS provides tools to modify settings that control the behavior of the BSP.

A BSP contains the following elements:
•
•
•
•
•

Hardware abstraction layer
Optional custom newlib C standard library(1)
Device drivers
Optional software packages
Optional real-time operating system

Related Information

• Altera Software Packages for Embedded Systems on page 1-4
• Overview of the Hardware Abstraction Layer on page 5-1
• Nios II Software Build Tools Reference on page 15-1
For more information, refer to the "Nios II Embedded Software Projects" chapter.
• Altera Software Packages for Embedded Systems on page 1-4
• MicroC/OS-II Real-Time Operating System on page 10-1

Altera Software Packages for Embedded Systems
The Nios II EDS includes software packages to extend the capabilities of your software. You can include
these software packages in your BSP.
Table 1-1: Altera Nios II Software Packages Distributed with the Nios II EDS
Name

(1)

Description

NicheStack TCP/IP Stack - Nios II Edition

Refer to the "Ethernet and the NicheStack TCP/IP
Stack - Nios II Edition" chapter.

Read-only zip file system

Refer to the "Read-Only Zip File System" chapter.

The complete HTML documentation for newlib resides in the Nios II EDS directory.

Altera Corporation

Overview of Nios II Embedded Development
Send Feedback

NII5V2
2015.05.14

Nios II Embedded Design Examples

Name

Host file system

1-5

Description

Refer to the "Developing Programs Using the
Hardware Abstraction Layer" chapter.

Related Information

Ethernet and the NicheStack TCP/IP Stack - Nios II Edition on page 11-1
Read-Only Zip File System
Developing Programs Using the Hardware Abstraction Layer on page 6-1
https://www.altera.com/products/design-software/embedded-software-developers/nios-iieds.html#ES
• Embedded Software
For more information about a complete list of the additional software packages available from Altera’s
partners
•
•
•
•

Nios II Embedded Design Examples
The Nios II EDS includes documented software examples to demonstrate all prominent features of the
Nios II processor and the development environment. The examples can help you start the development of
your custom design. They provide a stable starting point for exploring design options. Also, they
demonstrate many commonly used features of the Nios II EDS.
Note: The hardware design examples are available on the Embedded Processor Design Examples web
page.
Related Information

Embedded Processor Design Examples

Hardware Examples
You can run Nios II hardware designs on many Altera development boards. The hardware examples for
each Altera development board can be found in the kit installation provided with the board.
Note: The Nios II with MMU design is intended to demonstrate Linux. This design does not work with
the SBT, because the SBT does not support the Nios II MMU.
Related Information

• Nios II Ethernet Standard Design Example
• Nios II Processor with Memory Management Unit Design Example
• Altera All Development Kits
For more information about the hardware examples for each Altera development board.

Software Examples
You can run Nios II software examples that run on many of the hardware design examples described in
the previous section.
The Nios II software examples include templates to create the software projects using the Nios II SBT.
These templates do everything necessary to create a BSP and an application project for each software
example.
There are multiple software examples and BSP examples, each with its own directory.
Overview of Nios II Embedded Development
Send Feedback

Altera Corporation

1-6

NII5V2
2015.05.14

Third-Party Embedded Tools Support

Each BSP example directory contains a create-this-bsp script. After this script is run, each software
example directory contains the following files:
•
•
•
•

Source file (.c)
Header file (.h)
readme.txt
template.xml

Figure 1-1: Software Design Example Directory Structure

Related Information

Getting Started from the Command Line on page 3-1
For more information about using these scripts to create software projects.

Third-Party Embedded Tools Support
Several third-party vendors support the Nios II processor, providing products such as design services,
operating systems, stacks, other software libraries, and development tools.
Related Information

Nios II Processor
For more information about the most up-to-date information about third-party support for the Nios II
processor

Additional Nios II Information
This handbook is one part of the complete Nios II processor documentation suite. Consult the following
references for further Nios II information:
Altera Corporation

Overview of Nios II Embedded Development
Send Feedback

NII5V2
2015.05.14

Document Revision History for Overview of Nios II Embedded Development

1-7

The Nios II Processor Reference Handbook defines the processor hardware architecture and features,
including the instruction set architecture.
The Embedded Peripherals IP User Guide provides a reference for the peripherals distributed with the
Nios II processor. This handbook describes the hardware structure and Nios II software drivers for each
peripheral.
The Embedded Design Handbook describes how to use Altera software development tools effectively, and
recommends design styles and practices for developing, debugging, and optimizing embedded systems.
• The Altera Knowledge Database is an Internet resource that offers solutions to frequently asked
questions with an easy-to-use search engine.
• Altera application notes and tutorials offer step-by-step instructions on using the Nios II processor for
a specific application or purpose. These documents are available on the Altera website.
• The Nios II EDS documentation launchpad. The launchpad is an HTML page installed with the Nios II
EDS, which provides links to Nios II documentation, examples, and other resources. The way you
open the launchpad depends on your software platform.
• In the Windows operating system, on the Start menu, point to Programs > Altera > Nios II EDS,
and click Nios II  Documentation.
• In the Linux operating system, open /documents/index.html in a web
browser.
Related Information

• Nios II Processor Reference Handbook
For more information on hardware architecture and features, including the instruction set architec‐
ture.
• Embedded Peripherals IP User Guide
For more information on hardware structure and Nios II software drivers for each peripheral.
• Embedded Design Handbook
For more information on design styles and practices for developing, debugging, and optimizing
embedded systems.
• Knowledge Database
For more information, refer to the Knowledge Database page of the Altera website.
• Literature: Nios II Processor

Document Revision History for Overview of Nios II Embedded
Development
Date

May 2015

Version

2015.05.14

Changes

• Maintenance release.
• Renamed to Nios II Classic.

January 2014

13.1.0

• Removed references to Nios II IDE.
• Removed references to Nios II C2H.
• Updated the "Hardware Examples" section.

May 2011

11.0.0

Introduced Qsys system integration tool

Overview of Nios II Embedded Development
Send Feedback

Altera Corporation

1-8

NII5V2
2015.05.14

Document Revision History for Overview of Nios II Embedded Development

Date

Version

February 2011

10.1.0

Removed "Referenced Documents" section.

July 2010

10.0.0

Installation method changed; Nios II EDS always installed in a
directory adjacent to Quartus II tools.

November 2009

9.1.0

• Described the Nios II Software Build Tools for Eclipse.
• Nios II IDE information moved to Appendix A.
• Detailed Nios II Software Build Tools utility information moved to
"Nios II Software Build Tools" chapter.

March 2009

9.0.0

• Incorporate information formerly in "Altera-Provided Develop‐
ment Tools" chapter.
• Describe BSP Editor.
• Reorganize and update information and terminology to clarify role
of Nios II Software Build Tools.
• Describe -data argument for IDE command-line tools.
• Correct minor typographical errors.

May 2008

8.0.0

•
•
•
•

October 2007

7.2.0

Maintenance release.

May 2007

7.1.0

• Revise entire chapter to introduce Nios II EDS design flows, Nios II
programs, Nios II Software Build Tools, and Nios II BSPs.
• Add table of contents to Introduction section.
• Add "Referenced Documents" section.

March 2007

7.0.0

Maintenance release.

November 2006

6.1.0

Maintenance release.

May 2006

6.0.0

Maintenance release.

October 2005

5.1.0

Maintenance release.

May 2005

5.0.0

Maintenance release.

May 2004

1.0

Altera Corporation

Changes

Add "What's New" section.
SOPC Information File (.sopcinfo).
Design examples removed from EDS.
Memory management unit (MMU) added to Nios II core.

Initial release.

Overview of Nios II Embedded Development
Send Feedback

2

Getting Started with the Graphical User
Interface
2015.05.14

NII5V2

Subscribe

Send Feedback

The Nios II Software Build Tools (SBT) for Eclipse is a set of plugins based on the Eclipse framework and
the Eclipse C/C++ development toolkit (CDT) plugins. The Nios II SBT for Eclipse provides a consistent
development platform that works for all Nios II embedded processor systems. You can accomplish all
Nios II software development tasks within Eclipse, including creating, editing, building, running,
debugging, and profiling programs.

Getting Started with Nios II Software in Eclipse
Writing software for the Nios II processor is similar to writing software for any other microcontroller
family.The easiest way to start designing effectively is to purchase a development kit from Altera that
includes documentation, a ready-made evaluation board, a getting-started reference design, and all the
development tools necessary to write Nios II programs.
Modifying existing code is a common, easy way to learn to start writing software in a new environment.
The Nios II Embedded Design Suite (EDS) provides many example software designs that you can
examine, modify, and use in your own programs. The provided examples range from a simple "Hello
world" program, to a working RTOS example, to a full TCP/IP stack running a web server. Each example
is documented and ready to compile.
This section guides you through the most fundamental operations in the Nios II SBT for Eclipse in a
tutorial-like fashion. It shows how to create an application project for the Nios II processor, along with
the board support package (BSP) project required to interface with your hardware. It also shows how to
build the application and BSP projects in Eclipse, and how to run the software on an Altera development
board.

The Nios II SBT for Eclipse Workbench
The term 'workbench' refers to the Nios II SBT for Eclipse desktop development environment. The
workbench is where you edit, compile and debug your programs in Eclipse.

Perspectives, Editors, and Views
Each workbench window contains one or more perspectives. Each perspective provides a set of capabili‐
ties for accomplishing a specific type of task.
Most perspectives in the workbench comprise an editor area and one or more views. An editor allows you
to open and edit a project resource (i.e., a file, folder, or project). Views support editors, and provide
alternative presentations and ways to navigate the information in your workbench.
© 2015 Altera Corporation. All rights reserved. ALTERA, ARRIA, CYCLONE, ENPIRION, MAX, MEGACORE, NIOS, QUARTUS and STRATIX words and logos are
trademarks of Altera Corporation and registered in the U.S. Patent and Trademark Office and in other countries. All other words and logos identified as
trademarks or service marks are the property of their respective holders as described at www.altera.com/common/legal.html. Altera warrants performance
of its semiconductor products to current specifications in accordance with Altera's standard warranty, but reserves the right to make changes to any
products and services at any time without notice. Altera assumes no responsibility or liability arising out of the application or use of any information,
product, or service described herein except as expressly agreed to in writing by Altera. Altera customers are advised to obtain the latest version of device
specifications before relying on any published information and before placing orders for products or services.

www.altera.com
101 Innovation Drive, San Jose, CA 95134

ISO
9001:2008
Registered

2-2

NII5V2
2015.05.14

The Altera Bytestream Console

Any number of editors can be open at once, but only one can be active at a time. The main menu bar and
toolbar for the workbench window contain operations that are applicable to the active editor. Tabs in the
editor area indicate the names of resources that are currently open for editing. An asterisk (*) indicates
that an editor has unsaved changes. Views can also provide their own menus and toolbars, which, if
present, appear along the top edge of the view. To open the menu for a view, click the drop-down arrow
icon at the right of the view's toolbar or right-click in the view. A view might appear on its own, or stacked
with other views in a tabbed notebook.
For detailed information about the Eclipse workbench, perspectives, and views, refer to the Eclipse help
system.
Before you create a Nios II project, you must ensure that the Nios II perspective is visible. To open the
Nios II perspective, on the Window menu, point to Open Perspective, then Other, and click Nios II.

The Altera Bytestream Console

The workbench in Eclipse for Nios II includes a bytestream console, available through the Eclipse
Console view. The Altera bytestream console enables you to see output from the processor's stdout and
stderr devices, and send input to its stdin device.

Related Information

Using the Altera Bytestream Console on page 2-7
For more information about the Altera bytestream console.

Creating a Project
In the Nios II perspective, on the File menu, point to Nios II Application and BSP from Template. The
Nios II Application and BSP from Template wizard appears. This wizard provides a quick way to create
an application and BSP at the same time.
Alternatively, you can create separate application, BSP and user library projects.

Specifying the Application

In the first page of the Nios II Application and BSP from Template wizard, you specify a hardware
platform, a project name, and a project template. You optionally override the default location for the
application project, and specify a processor name if you are targeting a multiprocessor hardware platform.
You specify a BSP in the second page of the wizard.

Specifying the Hardware Platform
You specify the target hardware design by selecting a SOPC Information File (.sopcinfo) in the SOPC
Information File name box.
Specifying the Project Name
Select a descriptive name for your project. The SBT creates a folder with this name to contain the applica‐
tion project files.
Letters, numbers, and the underscore (_) symbol are the only valid project name characters. Project
names cannot contain spaces or special characters. The first character in the project name must be a letter
or underscore. The maximum filename length is 250 characters.

Altera Corporation

Getting Started with the Graphical User Interface
Send Feedback

NII5V2
2015.05.14

Specifying the Project Template

2-3

Related Information

Specifying the BSP on page 2-3
For more information about how the SBT also creates a folder to contain BSP project files.
Specifying the Project Template
Project templates are ready-made, working software projects that serve as examples to show you how to
structure your own Nios II projects. It is often easier to start with a working project than to start a blank
project from scratch.
You select the project template from the Templates list.
The hello_world template provides an easy way to create your first Nios II project and verify that it builds
and runs correctly.
Specifying the Project Location
The project location is the parent directory in which the SBT creates the project folder. By default, the
project location is under the directory containing the .sopcinfo file, in a folder named software.
To place your application project in a different folder, turn off Use default location, and specify the path
in the Project location box.
Specifying the Processor
If your target hardware contains multiple Nios II processors, CPU name contains a list of all available
processors in your design. Select the processor on which your software is intended to run.

Specifying the BSP

When you have finished specifying the application project in the first page of the Nios II Application and
BSP from Template wizard, you proceed to the second page by clicking Next.
On the second page, you specify the BSP to link with your application. You can create a new BSP for your
application, or select an existing BSP. Creating a new BSP is often the simplest way to get a project
running the first time.
You optionally specify the name and location of the BSP.

Specifying the BSP Project Name
By default, if your application project name is , the BSP is named _bsp. You can type in a
different name if you prefer. The SBT creates a directory with this name, to contain the BSP project files.
Related Information

Specifying the Project Name on page 2-2
For more information about how the BSP project names are subject to the same restrictions as application
project names.
Specifying the BSP Project Location
The BSP project location is the parent directory in which the SBT creates the folder. The default project
location is the same as the default location for an application project. To place your BSP in a different
folder, turn off Use default location, and specify the BSP location in the Project location box.
Selecting an Existing BSP
As an alternative to creating a BSP automatically from a template, you can associate your application
project with a pre-existing BSP. Select Select an existing BSP project from your workspace, and select a
Getting Started with the Graphical User Interface
Send Feedback

Altera Corporation

2-4

NII5V2
2015.05.14

Creating the Projects

BSP in the list. The Create and Import buttons to the right of the existing BSP list provide convenient
ways to add BSPs to the list.

Creating the Projects

When you have specified your BSP, you click Finish to create the projects.
The SBT copies required source files to your project directories, and creates makefiles and other generated
files. Finally, the SBT executes a make clean command on your BSP.
Related Information

Nios II Software Build Tools on page 4-1
For more information about the folders and files in a Nios II BSP.

Navigating the Project
When you have created a Nios II project, it appears in the Project Explorer view, which is typically
displayed at the left side of the Nios II perspective. You can expand each project to examine its folders and
files.
Related Information

Nios II Software Build Tools on page 4-1
For more information about what happens when Nios II projects are created, refer to "Nios II Software
Projects". For more information about the make clean command, refer to "Makefiles".

Building the Project
To build a Nios II project in the Nios II SBT for Eclipse, right-click the project name and click Build
Project. A progress bar shows you the build status. The build process can take a minute or two for a
simple project, depending on the speed of the host machine. Building a complex project takes longer.
During the build process, you view the build commands and command-line output in the Eclipse Console
view.
When the build process is complete, the following message appears in the Console view, under the CBuild [] title:
[ build complete]

If the project has a dependency on another project, such as a BSP or a user library, the SBT builds the
dependency project first. This feature allows you to build an application and its BSP with a single
command.
Related Information

Nios II Software Build Tools Reference on page 15-1

Configuring the FPGA
Before you can run your software, you must ensure that the correct hardware design is running on the
FPGA. To configure the FPGA, you use the Quartus II Programmer.
In the Windows operating system, you start the Quartus II Programmer from the Nios II SBT for Eclipse,
through the Nios II menu. In the Linux operating system, you start Quartus II Programmer from the
Quartus II software.

Altera Corporation

Getting Started with the Graphical User Interface
Send Feedback

NII5V2
2015.05.14

Running the Project on Nios II Hardware

2-5

The project directory for your hardware design contains an SRAM Object File (.sof) along with
the .sopcinfo file. The .sof file contains the hardware design to be programmed in the FPGA.
Related Information

Quartus II Programmer
For more information about programming an FPGA with Quartus II Programmer.

Running the Project on Nios II Hardware
This section describes how to run a Nios II program using the Nios II SBT for Eclipse on Nios II
hardware, such as an Altera development board.
Note: If your project was created with version 10.1 or earlier of the Nios II SBT, you must re-import it to
create the Nios II launch configuration correctly.
To run a software project, right-click the application project name, point to Run As, and click Nios II
Hardware. To run a software project as a ModelSim simulation, right-click the application project name,
point to Run As, and click Nios II ModelSim.
This command carries out the following actions:
• Creates a Nios II run configuration.
• Builds the project executable. If all target files are up to date, nothing is built.
• Establishes communications with the target, and verifies that the FPGA is configured with the correct
hardware design.
• Downloads the Executable and Linking Format File (.elf) to the target memory
• Starts execution at the .elf entry point.
Program output appears in the Nios II Console view. The Nios II Console view maintains a terminal I/O
connection with a communication device connected to the Nios II processor in the hardware system, such
as a JTAG UART. When the Nios II program writes to stdout or stderr, the Nios II Console view
displays the text. The Nios II Console view can also accept character input from the host keyboard, which
is sent to the processor and read as stdin.
To disconnect the terminal from the target, click the Terminate icon in the Nios II Console view.
Terminating only disconnects the host from the target. The target processor continues executing the
program.
Related Information

• Run Configurations in the SBT for Eclipse on page 2-21
For more information about about run configurations.
• Lauterbach GmbH Website
For more information about the Nios II instruction set.

Debugging the Project on Nios II Hardware
This section describes how to debug a Nios II program using the Nios II SBT for Eclipse on Nios II
hardware, such as an Altera development board.

Getting Started with the Graphical User Interface
Send Feedback

Altera Corporation

2-6

NII5V2
2015.05.14

List of Debugging Tasks with the Nios II SBT for Eclipse

To debug a software project, right-click the application project name, point to Debug As, and click Nios
II Hardware. This command carries out the following actions:
• Creates a Nios II run configuration.
• Builds the project executable. If all target files are up to date, nothing is built.
• If debugging on hardware, establishes communications with the target, and verifies that the FPGA is
configured with the correct hardware design.
• Downloads the .elf to the target memory.
• Sets a breakpoint at the top of main().
• Starts execution at the .elf entry point.
The Eclipse debugger with the Nios II plugins provides a Nios II perspective, allowing you to perform
many common debugging tasks. Debugging a Nios II program with the Nios II plugins is generally the
same as debugging any other C/C++ program with Eclipse and the CDT plugins.
For information about debugging with Eclipse and the CDT plugins, refer to the Eclipse help system.
Related Information

Run Configurations in the SBT for Eclipse on page 2-21
For more information about about run configurations.

List of Debugging Tasks with the Nios II SBT for Eclipse

The debugging tasks you can perform with the Nios II SBT for Eclipse include the following tasks:

• Controlling program execution with commands such as:

•
•
•
•

• Suspend (pause)
• Resume
• Terminate
• Step Into
• Step Over
• Step Return
Setting breakpoints and watchpoints
Viewing disassembly
Instruction stepping mode
Displaying and changing the values of local and global variables in the following formats:

• Binary
• Decimal
• Hexadecimal
• Displaying watch expressions
• Viewing and editing registers in the following formats:
• Binary
• Decimal
• Hexadecimal
• Viewing and editing memory in the following formats:
• Hexadecimal
• ASCII
• Signed integer
• Unsigned integer
• Viewing stack frames in the Debug view

Altera Corporation

Getting Started with the Graphical User Interface
Send Feedback

NII5V2
2015.05.14

Console View

2-7

Console View
Just as when running a program, Eclipse displays program output in the Console view of Eclipse. The
Console view maintains a terminal I/O connection with a communication device connected to the Nios II
processor in the hardware system, such as a JTAG UART. When the Nios II program writes to stdout or
stderr, the Console view displays the text. The Console view can also accept character input from the host
keyboard, which is sent to the processor and read as stdin.
Disconnecting the Terminal from the Target
To disconnect the terminal from the target, click the Terminate icon in the Console view. Terminating
only disconnects the host from the target. The target processor continues executing the program.
Note: If your project was created with version 10.1 or earlier of the Nios II SBT, you must re-import it to
create the Nios II launch configuration correctly.

Using the Altera Bytestream Console
The Altera bytestream console enables you to see output from the processor's stdout and stderr devices,
and send input to its stdin device. The function of the Altera bytestream console is similar to the nios2terminal command-line utility.
Open the Altera bytestream console in the Eclipse Console view the same way as any other Eclipse
console, by clicking the Open Console button.
When you open the Altera bytestream console, the Bytestream Console Selection dialog box shows you a
list of available bytestreams. This is the same set of bytestreams recognized by System Console. Select the
bytestream connected to the processor you are debugging.
You can send characters to the processor's stdin device by typing in the bytestream console. Be aware
that console input in buffered on a line-by-line basis. Therefore, the processor does not receive any
characters until you press the Enter key.
Note: A bytestream device can support only one connection at a time. You must close the Altera
bytestream console before attempting to connect to the processor with the nios2-terminal utility,
and vice versa.
Related Information

Analyzing and Debugging Designs with the System Console
For more information about how System Console recognizes bytestreams.

Run Time Stack Checking And Exception Debugging
Before you begin
To enable extra exception information, navigate to Nios II MegaWizard >
Advanced Features Exception Checking > Extra Information Register; and recompile the HW project
and regenerate the BSP in the Nios II SBT for Eclipse.

Getting Started with the Graphical User Interface
Send Feedback

Altera Corporation

2-8

NII5V2
2015.05.14

Nios II Exception Debugging

1. Enable the Run Time Stack Checking in the BSP project from NIOS II SBT for Eclipce Nios II BSP
Editor. From the BSP project, right-click and navigate to Nios II > BSP editor Settings > Advanced >
hal > enable_run_time_stack_checking.
2. Rebuild BSP and software.
3. Ensure that the FPGA is configured.
4. Start the Debug Session by navigating to Debug As > Nios II Hardware.
5. Run the Software.
Nios II Exception Debugging
To allow easier debugging of Nios II exceptions, first enable the extra exception information in the Nios
II.
Note: This is already enabled if you have an MMU.
Also you can navigate to Nios II MegaWizard > Advanced Features Exception Checking > Extra
Information Register.
Note: There are other options you can choose, like unimplemented instructions.
When an exception is hit, the cause value in the Nios II Exception Register can be decoded using the
Nios II Exceptions (In Decreasing Priority Order) table from the Nios II Classic Processor Reference
Handbook.
Note: This table only provides the general cause.
Related Information

• Nios II Classic Processor Reference Handbook
For more information about the Exception Register Decode Table, refer to the "Exception Overview"
chapter in the "Programming Model" section.
• Nios II Classic Processor Reference Handbook
For more information about the Exception Register Description, refer to the "The exception Register"
chapter in the "Programming Model" section.
Stack Overflow
To enable Stack Checking, go to the BSP Editor and click on the Settings tab, click on Advanced, hal,
and then click enable_runtime_stack_checking. When the Stack Checking is enabled, extra code is
added at the start of each function call to:
• Check the current value of the stack pointer
• Compare this to the max stack size, which is stored in the Exception Temp (ET) Register
If the stack pointed to is outside of the valid range, the software branches and calls a “break 3” instruc‐
tion. This is seen by the Debug Control module.
Note: With stack checking on, malloc() and new() can detect heap exhaustion, as well.
Example 2-1: Example of function with stack checking code
___vfprintf_internal_r:
000002ec:
addi sp,sp,-1308
000002f0:
bgeu sp,et,0x2f8 <___vfprintf_internal_r+12>
000002f4:
break 3

Altera Corporation

Getting Started with the Graphical User Interface
Send Feedback

NII5V2
2015.05.14

Recognizing and Debugging a Stack Overflow

2-9

The bgeu and break 3 lines are what is added for the stack overflow checking. If the stack pointer
has grown beyond its limits the break is called.
Related Information

Embedded Design Handbook
For more information, refer to the "Stack Overflow" chapter of the Embedded Design Handbook.

Recognizing and Debugging a Stack Overflow
When a stack overflow occurs, having registered an instruction-related exception handler helps you
identify it by its behavior.
Default Instruction-Related Exception Handler
The default value for an instruction-related exception handler is when it is not registered.
If you don’t register an instruction-related exception handler, the “break 3” instruction is picked up by
the software trap logic and a break is passed to the debugger. You must roll back through the history in
the debugger to find the memory operation that triggered the stack checking break.
Note: With stack checking on, malloc() and new() can detect heap exhaustion.
How to Isolate the Cause of a Sigtrap
How to isolate the cause of a sigtrap seen in the debugger with no instruction-related exception handle?
The Debugger breaks with sigtrap:
1. Use the thread view in the debug window and select the last state.
This is the highest number. The last thread will be the actual call than overflowed.
2. Switch to instruction stepping mode in the debugger by pressing the i-> button in the debug window,
which opens the memory disassembly view.
If there has been a stack overflow the disassembly view should show execution pointing to a break3
after the stack check:

000002ec:
000002f0:
000002f4:

___vfprintf_internal_r:
addi sp,sp,-1308
bgeu sp,et,0x2f8 <___vfprintf_internal_r+12>
break 3

3. Check the value of sp and et which holds the max stack side in the Nios II register view.
4. Move to the prior state in the debug window and re-check sp vs et.

Getting Started with the Graphical User Interface
Send Feedback

Altera Corporation

2-10

NII5V2
2015.05.14

Custom Instruction-Related Exception Handler

Figure 2-1: Nios II Debug window

Custom Instruction-Related Exception Handler
For use outside the debugger, you can register your own instruction-related exception handler which is
called when the break (or any exception) is seen.
On an exception, including overflow, the HAL calls the instruction-related exception handler, passing in
the cause field from the exception register, and the address which caused the exception. At this point, it is
up to you to decide what do.
For more information about how to register an instruction-related exception, refer to
Related Information

• Exception Handling on page 8-1
This chapter provides more information about the details on how to register an instruction-related
exception.
• Writing an Instruction-Related Exception Handler on page 8-32
This chapter provides more information about the details on how to register an instruction-related
exception.
• Registering an Instruction-Related Exception Handler on page 8-34
This chapter provides more information about the details on how to register an instruction-related
exception.

Altera Corporation

Getting Started with the Graphical User Interface
Send Feedback

NII5V2
2015.05.14

Creating a Simple BSP

2-11

• Determining the Cause of Interrupt and Instruction-Related Exceptions
For more information, refer to the "Determining the Cause of Interrupt and Instruction-Related
Exceptions" chapter of the Nios II Classic Processor Reference Handbook.
• link/iga1409256728501/iga1409336670098
• Programming Model
For more information, refer to the "Programming Model" chapter of the Nios II Classic Processor
Reference Handbook.
• llink/iga1409256728501/iga1409267699502

Creating a Simple BSP
You create a BSP with default settings using the Nios II Board Support Package wizard. To start the
wizard, on the File menu, point to New and click Nios II Board Support Package. The Nios II Board
Support Package wizard enables you to specify the following BSP parameters:
•
•
•
•

The name
The underlying hardware design
The location
The operating system and version

You can select the operating system only at the time you create the BSP. To change operating systems, you
must create a new BSP by using the Additional arguments to the nios2-bsp script.
If you intend to run the project in the Nios II ModelSim™ simulation environment, use the Additional
arguments parameter to specify the location of the testbench simulation package descriptor file (.spd).
The .spd file is located in the Quartus II project directory. Specify the path as follows: --set
QUARTUS_PROJECT_DIR=.
Note: Altera recommends that you use a relative path name, to ensure that the location of your project is
independent of the installation directory.
After you have created the BSP, you have the following options for GUI-based BSP editing:
• To access and modify basic BSP properties, right-click the BSP project, click Properties > Nios II BSP
Properties.
• To modify parameters and settings in detail using the Nios II BSP Editor, refer to Using the BSP Editor.
Related Information

• Using the BSP Editor on page 2-14
For more information on how to modify parameters and settings in detail using the Nios II BSP Editor.
• Nios II Software Build Tools
For more information about nios2-bsp command arguments.

Makefiles and the Nios II SBT for Eclipse
The Nios II SBT for Eclipse creates and manages the makefiles for Nios II software projects. When you
create a project, the Nios II SBT creates a makefile based on the source content you specify and the
parameters and settings you select. When you modify the project in Eclipse, the Nios II SBT updates the
makefile to match.

Getting Started with the Graphical User Interface
Send Feedback

Altera Corporation

2-12

NII5V2
2015.05.14

Eclipse Source Management

Details of how each makefile is created and maintained vary depending on the project type, and on project
options that you control. The authoritative specification of project contents is always the makefile,
regardless how it is created or updated.
By default, the Nios II SBT manages the list of source files in your makefile, based on actions you take in
Eclipse. However, in the case of applications and libraries, you have the option to manage sources
manually. Both styles of source management are discussed in the following sections.

Eclipse Source Management
Nios II application and user library makefiles are based on source files and properties that you specify
directly. Eclipse source management allows you to add and remove source files with standard Eclipse
actions, such as dragging a source file into and out of the Project Explorer view and adding a new source
file through the File menu.
You can examine and modify many makefile properties in the Nios II Application Properties or Nios II
Library Properties dialog box. To open the dialog box, right-click the project, click Properties > Nios II
Application Properties or Properties > Nios II Library Properties.

Modifying a Makefile with Eclipse Source Management
Table 2-1: GUI Actions that Modify an Application or Makefile with Eclipse Source Management
Modification

Where Modified

Specifying the application or user library
name

Nios II Application Properties or Nios II Library
Properties dialog box.

Adding or removing source files

For more information, refer to the Eclipse help
system.

Specifying a path to an associated BSP

Project References dialog box.

Specifying a path to an associated user
library

Project References dialog box.

Enabling, disabling or modifying compiler Nios II Application Properties or Nios II Library
options
Properties dialog box.
After the SBT has created a makefile, you can modify the makefile in the following ways:
• With the Nios II SBT for Eclipse.
• With Nios II SBT commands from the Nios II Command Shell.
When modifying a makefile, the SBT preserves any previous nonconflicting modifications, regardless how
those modifications were made.
After you modify a makefile with the Nios II Command Shell, in Eclipse you must right-click the project
and click Update linked resource to keep the Eclipse project view in step with the makefile.
When the Nios II SBT for Eclipse modifies a makefile, it locks the makefile to prevent corruption by other
processes. You cannot edit the makefile from the command line until the SBT has removed the lock.
If you want to exclude a resource (a file or a folder) from the Nios II makefile temporarily, without
deleting it from the project, you can use the Remove from Nios II Build command. Right-click the
resource and click Remove from Nios II Build. When a resource is excluded from the build, it does not
appear in the makefile, and Eclipse ignores it. However, it is still visible in the Project Explorer, with a
Altera Corporation

Getting Started with the Graphical User Interface
Send Feedback

NII5V2
2015.05.14

Absolute Source Paths and Linked Resources

2-13

modified icon. To add the resource back into the build, right-click the resource and click Add to Nios II
Build.
Note: Do not use the Eclipse Exclude from build command. With Nios II software projects, you must
use the Remove from Nios II Build and Add to Nios II Build commands instead.

Absolute Source Paths and Linked Resources

By default, the source files for an Eclipse project are stored under the project directory. If your project
must incorporate source files outside the project directory, you can add them as linked resources.
An Eclipse linked resource can be either a file or a folder. With a linked folder, all source files in the folder
and its subfolders are included in the build.

When you add a linked resource (file or folder) to your project, the SBT for Eclipse adds the file or folder
to your makefile with an absolute path name. You might use a linked resource to refer to common source
files in a fixed location. In this situation, you can move the project to a different directory without
disturbing the common source file references.
A linked resource appears with a modified icon (green dot) in the Project Explorer, to distinguish it from
source files and folders that are part of the project. You can use the Eclipse debugger to step into a linked
source file, exactly as if it were part of the project.
You can reconfigure your project to refer to any linked resource either as an individual file, or through its
parent folder. Right-click the linked resource and click Update Linked Resource.
You can use the Remove from Nios II Build and Add to Nios II Build commands with linked resources.
When a linked resource is excluded from the build, its icon is modified with a white dot.
You can use Eclipse to create a path variable, defining the location of a linked resource. A path variable
makes it easy to modify the location of one or more files in your project.
For information about working with path variables and creating linked resources, refer to the Eclipse help
system.

User Source Management
You can remove a makefile from source management control through the Nios II Application Properties
or Nios II Library Properties dialog box.
Simply turn off Enable source management to convert the makefile to user source management. When
Enable source management is off, you must update your makefile manually to add or remove source files
to or from the project. The SBT for Eclipse makes no changes to the list of source files, but continues to
manage all other project parameters and settings in the makefile.

Modifying a Makefile with User Source Management

Editing a makefile manually is an advanced technique. Altera recommends that you avoid manual editing.
The SBT provides extensive capabilities for manipulating makefiles while ensuring makefile correctness.
In a makefile with user-managed sources, you can refer to source files with an absolute path. You might
use an absolute path to refer to common source files in a fixed location. In this situation, you can move
the project to a different directory without disturbing the common source file references.
Projects with user-managed sources do not support the following features:

• Linked resources
• The Add to Nios II Build command
• The Remove from Nios II Build command

Getting Started with the Graphical User Interface
Send Feedback

Altera Corporation

2-14

NII5V2
2015.05.14

BSP Source Management

Table 2-2: GUI Actions that Modify an Application or a Makefile with User Source Management
Modification

Where Modified

Specifying the application or user library
name

Nios II Application Properties or Nios II Library
Properties dialog box

Specifying a path to an associated BSP

Project References dialog box

Specifying a path to an associated user
library

Project References dialog box

Enabling, disabling or modifying compiler Nios II Application Properties or Nios II Library
options
Properties dialog box
Note: With user source management, the source files shown in the Eclipse Project Explorer view do not
necessarily reflect the sources built by the makefile. To update the Project Explorer view to match
the makefile, right-click the project and click Sync from Nios II Build.

BSP Source Management
Nios II BSP makefiles are handled differently from application and user library makefiles. BSP makefiles
are based on the operating system, BSP settings, selected software packages, and selected drivers. You do
not specify BSP source files directly.
BSP makefiles must be managed by the SBT, either through the BSP Editor or through the SBT
command-line utilities.
Related Information

Using the BSP Editor on page 2-14
For more information about specifying BSPs

Using the BSP Editor
Typically, you create a BSP with the Nios II SBT for Eclipse. The Nios II plugins provide the basic tools
and settings for defining your BSP. For more advanced BSP editing, use the Nios II BSP Editor. The BSP
Editor provides all the tools you need to create even the most complex BSPs.

Tcl Scripting and the Nios II BSP Editor
The Nios II BSP Editor provides support for Tcl scripting. When you create a BSP in the BSP Editor, the
editor can run a Tcl script that you specify to supply BSP settings.
You can also export a Tcl script from the BSP Editor, containing all the settings in an existing BSP. By
studying such a script, you can learn about how BSP Tcl scripts are constructed.

Starting the Nios II BSP Editor
You start the Nios II BSP Editor in one of the following ways:
• Right-click an existing project, point to Nios II, and click BSP Editor. The editor loads the BSP
Settings File (.bsp) associated with your project, and is ready to update it.
• On the Nios II menu, click Nios II BSP Editor. The editor starts without loading a .bsp file.
• Right-click an existing BSP project and click Properties. In the Properties dialog box, select Nios II
BSP Properties > BSP Editor. The editor loads your .bsp file for update.

Altera Corporation

Getting Started with the Graphical User Interface
Send Feedback

NII5V2
2015.05.14

The Nios II BSP Editor Screen Layout

2-15

The Nios II BSP Editor Screen Layout
The Nios II BSP Editor screen is divided into two areas. The top area is the command area, and the
bottom is the console area. The details of the Nios II BSP Editor screen areas are described in this section.
Below the console area is the Generate button. This button is enabled when the BSP settings are valid. It
generates the BSP target files, as shown in the Target BSP Directory tab.

The Command Area
In the command area, you specify settings and other parameters defining the BSP. The command area
contains several tabs:
•
•
•
•
•
•

The Main tab
The Software Packages tab
The Drivers tab
The Linker Script tab
The Enable File Generation tab
The Target BSP Directory tab

Each tab allows you to view and edit a particular aspect of the .bsp, along with relevant command line
parameters and Tcl scripts.
The settings that appear on the Main, Software Packages and Drivers tabs are the same as the settings
you manipulate on the command line.
Related Information

Nios II Software Build Tools Reference on page 15-1

The Main Tab

The Main tab presents general settings and parameters, and operating system settings, for the BSP. The
BSP includes the following settings and parameters:

• The path to the .sopcinfo file specifying the target hardware
• The processor name
• The operating system and version
Note: You cannot change the operating system in an existing BSP. You must create a new BSP based on
the desired operating system.
• The BSP target directory—the destination for files that the SBT copies and creates for your BSP.
• BSP settings
BSP settings appear in a tree structure. Settings are organized into Common and Advanced categories.
Settings are further organized into functional groups. The available settings depend on the operating
system.
When you select a group of settings, the controls for those settings appear in the pane to the right of the
tree. When you select a single setting, the pane shows the setting control, the full setting name, and the
setting description.
Related Information

• The Software Packages Tab on page 2-16
• The Drivers Tab on page 2-16
For more information about how the software package and driver settings are presented separately.
Getting Started with the Graphical User Interface
Send Feedback

Altera Corporation

2-16

NII5V2
2015.05.14

The Software Packages Tab

The Software Packages Tab

The Software Packages tab allows you to insert and remove software packages in your BSP, and control
software package settings.

At the top of the Software Packages tab is the software package table, listing each available software
package. The table allows you to select the software package version, and enable or disable the software
package.
The operating system determines which software packages are available.
Many software packages define settings that you can control in your BSP. When you enable a software
package, the available settings appear in a tree structure, organized into Common and Advanced settings.
When you select a group of settings, the controls for those settings appear in the pane to the right of the
tree. When you select a single setting, the pane shows the setting control, the full setting name, and the
setting description.
Enabling and disabling software packages and editing software package settings can have a profound
impact on BSP behavior. Refer to the documentation for the specific software package for details.
Related Information

• The Drivers Tab on page 2-16
For more information about how the software package and driver settings are presented separately.
• The Main Tab on page 2-15
• Read-Only Zip File System
For more information about the read-only zip file system.
• Ethernet and the NicheStack TCP/IP Stack - Nios II Edition
For more information about the NicheStack TCP/IP Stack - Nios II Edition.

The Drivers Tab

The Drivers tab allows you to select, enable, and disable drivers for devices in your system, and control
driver settings.

At the top of the Drivers tab is the driver table, mapping components in the hardware system to drivers.
The driver table shows components with driver support. Each component has a module name, module
version, module class name, driver name, and driver version, determined by the contents of the hardware
system. The table allows you to select the driver by name and version, as well as to enable or disable each
driver.
When you select a driver version, all instances of that driver in the BSP are set to the version you select.
Only one version of a given driver can be used in an individual BSP.
Many drivers define settings that you can control in your BSP. Available driver settings appear in a tree
structure below the driver table, organized into Common and Advanced settings.
When you select a group of settings, the controls for those settings appear in the pane to the right of the
tree. When you select a single setting, the pane shows the setting control, the full setting name, and the
setting description.
Enabling and disabling device drivers, changing drivers and driver versions, and editing driver settings,
can have a profound impact on BSP behavior. Refer to the relevant component documentation and driver
information for details.
Related Information

• The Software Packages Tab on page 2-16

Altera Corporation

Getting Started with the Graphical User Interface
Send Feedback

NII5V2
2015.05.14

The Linker Script Tab

2-17

• The Main Tab on page 2-15
• Embedded Peripherals IP User Guide
For more information about Altera components.

The Linker Script Tab

The Linker Script tab allows you to view available memory in your hardware system, and examine and
modify the arrangement and usage of linker regions in memory.
When you make a change to the memory configuration, the SBT validates your change.

Note: Rearranging linker regions and linker section mappings can have a very significant impact on BSP
behavior.
Related Information

The Problems Tab on page 2-19
If there is a problem, a message appears in the Problems tab in the console area.
Linker Section Mappings
At the top of the Linker Script tab, the Linker Section Mappings table shows the mapping from linker
sections to linker regions. You can edit the BSP linker section mappings using the following buttons
located next to the linker section table:
• Add—Adds a linker section mapping to an existing linker region. The Add button opens the Add
Section Mapping dialog box, where you specify a new section name and an existing linker region.
• Remove—Removes a mapping from a linker section to a linker region.
• Restore Defaults—Restores the section mappings to the default configuration set up at the time of BSP
creation.
Linker Regions
At the bottom of the Linker Script tab, the Linker Memory Regions table shows all defined linker
regions. Each row of the table shows one linker region, with its address range, memory device name, size,
and offset into the selected memory device.
You reassign a defined linker region to a different memory device by selecting a different device name in
the Memory Device Name column. The Size and Offset columns are editable. You can also edit the list of
linker regions using the following buttons located next to the linker region table:
• Add—Adds a linker region in unused space on any existing device. The Add button opens the Add
Memory Region dialog box, where you specify the memory device, the new memory region name, the
region size, and the region's offset from the device base address.
• Remove—Removes a linker region definition. Removing a region frees the region's memory space to
be used for other regions.
• Add Memory Device—Creates a linker region representing a memory device that is outside the
hardware system. The button launches the Add Memory Device dialog box, where you can specify the
device name, memory size and base address. After you add the device, it appears in the linker region
table, the Memory Device Usage Table dialog box, and the Memory Map dialog box. This function‐
ality is equivalent to the add_memory_device Tcl command.
Note: Ensure that you specify the correct base address and memory size. If the base address or size of an
external memory changes, you must edit the BSP manually to match. The SBT does not automati‐
cally detect changes in external memory devices, even if you update the BSP by creating a new
settings file.

Getting Started with the Graphical User Interface
Send Feedback

Altera Corporation

2-18

NII5V2
2015.05.14

Enable File Generation Tab

• Restore Defaults—restores the memory regions to the default configuration set up at the time of BSP
creation.
• Memory Usage—Opens the Memory Device Usage Table. The Memory Device Usage Table allows
you to view memory device usage by defined memory region. As memory regions are added, removed,
and adjusted, each device's free memory, used memory, and percentage of available memory are
updated. The rightmost column is a graphical representation of the device’s usage, according to the
memory regions assigned to it.
• Memory Map—Opens the Memory Map dialog box. The memory map allows you to view a map of
system memory in the processor address space. The Device table is a read-only reference showing
memories in the hardware system that are mastered by the selected processor. Devices are listed in
memory address order.
To the right of the Device table is a graphical representation of the processor's memory space, showing
the locations of devices in the table. Gaps indicate unmapped address space.
Note: This representation is not to scale.
Related Information

Nios II Software Build Tools Reference on page 15-1

Enable File Generation Tab

The Enable File Generation tab allows you to take ownership of specific BSP files that are normally
generated by the SBT. When you take ownership of a BSP file, you can modify it, and prevent the SBT
from overwriting your modifications. The Enable File Generation tab shows a tree view of all target files
to be generated or copied when the BSP is generated. To disable generation of a specific file, expand the
software component containing the file, expand any internal directory folders, select the file, and rightclick. Each disabled file appears in a list at the bottom of the tab. This functionality is equivalent to the
set_ignore_file Tcl command.

Note: If you take ownership of a BSP file, the SBT can no longer update it to reflect future changes in the
underlying hardware. If you change the hardware, be sure to update the file manually.
Related Information

Nios II Software Build Tools Reference on page 15-1

Target BSP Directory Tab

The Target BSP Directory tab is a read-only reference showing you what output to expect when the BSP
is generated.

It does not depict the actual file system, but rather the files and directories to be created or copied when
the BSP is generated. Each software component, including the operating system, drivers, and software
packages, specifies source code to be copied into the BSP target directory. The files are generated in the
directory specified on the Main tab.
When you generate the BSP, existing BSP files are overwritten, unless you disable generation of the file in
the Enable File Generation tab.

The Console Area
The console area shows results of settings and commands that you select in the command area. The
console area consists of the following tabs:

Altera Corporation

Getting Started with the Graphical User Interface
Send Feedback

NII5V2
2015.05.14

The Information Tab

2-19

• The Information tab
• The Problems tab
• The Processing tab

The Information Tab

The Information tab shows a running list of high-level changes you make to your BSP, such as adding a
software package or changing a setting value.

The Problems Tab

The Problems tab shows warnings and errors that impact or prohibit BSP creation. For example, if you
inadvertently specify an invalid linker section mapping, a message appears in the Problems tab.

The Processing Tab

When you generate your BSP, the Processing tab shows files and folders created and copied in the BSP
target directory.

Exporting a Tcl Script
When you have configured your BSP to your satisfaction, you can export the BSP settings as a Tcl script.
This feature allows you to perform the following tasks:
•
•
•
•

Regenerate the BSP from the command line
Recreate the BSP as a starting point for a new BSP
Recreate the BSP on a different hardware platform
Examine the Tcl script to improve your understanding of Tcl command usage

The exported Tcl script captures all BSP settings that you have changed since the previous time the BSP
settings file was saved. If you export a Tcl script after creating a new BSP, the script captures all
nondefault settings in the BSP. If you export a Tcl script after editing a pre-existing BSP, the script
captures your changes from the current editing session.
To export a Tcl script, in the Tools menu, click Export Tcl Script, and specify a filename and destination
path. The file extension is .tcl.
You can later run your exported script as a part of creating a new BSP.
Related Information

• Using a Tcl Script in BSP Creation on page 2-20
For more information about how to run a Tcl script during BSP creation.
• Revising Your BSP on page 4-29
For more information about default BSP settings and recreating and regenerating BSPs.

Creating a New BSP
To create a BSP in the Nios II BSP Editor, use the New BSP command in the File menu to open the New
BSP dialog box. This dialog box controls the creation of a new BSP settings file. The BSP Editor loads this
new BSP after the file is created.
In this dialog box, you specify the following parameters:
• The .sopcinfo file defining the hardware platform.
• The CPU name of the targeted processor.
• The BSP type and version.
Getting Started with the Graphical User Interface
Send Feedback

Altera Corporation

2-20

NII5V2
2015.05.14

Using a Tcl Script in BSP Creation

Note: You can select the operating system only at the time you create the BSP. To change operating
systems, you must create a new BSP.
• The operating system version.
• The name of the BSP settings file. It is created with file extension .bsp.
• Absolute or relative path names in the BSP settings file. By default, relative paths are enabled for
filenames in the BSP settings file.
• An optional Tcl script that you can run to supply additional settings.
Normally, you specify the path to your .sopcinfo file relative to the BSP directory. This enables you to
move, copy and archive the hardware and software files together. If you browse to the .sopcinfo file, or
specify an absolute path, the Nios II BSP Editor offers to convert your path to the relative form.

Using a Tcl Script in BSP Creation

When you create a BSP, the New BSP Settings File dialog box allows you to specify the path and filename
of a Tcl script. The Nios II BSP Editor runs this script after all other BSP creation steps are done, to
modify BSP settings.
This feature allows you to perform the following tasks:
• Recreate an existing BSP as a starting point for a new BSP
• Recreate a BSP on a different hardware platform
• Include custom settings common to a group of BSPs
The Tcl script can be created by hand or exported from another BSP.

Related Information

• Exporting a Tcl Script on page 2-19
For more information about how to create a Tcl script from an existing BSP.
• Nios II Software Build Tools on page 4-1
For more information about Tcl scripts and BSP settings, refer to "Tcl Scripts for BSP Settings".

BSP Validation Errors
If you modify a hardware system after basing a BSP on it, some BSP settings might no longer be valid.
This is a very common cause of BSP validation errors. Eliminating these errors usually requires correcting
a large number of interrelated settings.
If your modifications to the underlying hardware design result in BSP validation errors, the best practice
is to update or recreate the BSP. Updating and recreating BSPs is very easy with the BSP Editor.
If you recreate your BSP, you might find it helpful to capture your old BSP settings by exporting them to a
Tcl script. You can edit the Tcl script to remove any settings that are incompatible with the new hardware
design.
Related Information

• Using a Tcl Script in BSP Creation on page 2-20
For more information about how to run a Tcl script during BSP creation.
• Exporting a Tcl Script on page 2-19
For more information about how to create a Tcl script from an existing BSP.
• Nios II Software Build Tools on page 4-1
For more information about Tcl scripts and BSP settings, refer to "Tcl Scripts for BSP Settings".

Altera Corporation

Getting Started with the Graphical User Interface
Send Feedback

NII5V2
2015.05.14

Run Configurations in the SBT for Eclipse

2-21

Run Configurations in the SBT for Eclipse
Eclipse uses run configurations to control how it runs and debugs programs. Run configurations in the
Nios II SBT for Eclipse have several features that help you debug Nios II software running on FPGA
platforms.

Opening the Run Configuration Dialog Box
You can open the run configuration dialog box two ways:
• You can right-click an application, point to Run As, and click Run Configurations.
• You can right-click an application, point to Debug As, and click Debug Configurations.
Depending on which way you opened the run configuration dialog box, the title is either Run Configura‐
tion or Debug Configuration. However, both views show the same run configurations.
Note: If your project was created with version 10.1 or earlier of the Nios II SBT, you must re-import it to
create the Nios II launch configuration correctly.
Each run configuration is presented on several tabs. This section describes each tab.

The Project Tab
On this tab, you specify the application project to run. The Advanced button opens the Nios II ELF
Section Properties dialog box. In this dialog box, you can control the runtime parameters in the following
ways:
• Specify the processor on which to execute the program (if the hardware design provides multiple
processors)
• Specify the device to use for standard I/O
• Specify the expected location, timestamp and value of the system ID
• Specify the path to the Quartus II JTAG Debugging Information File (.jdi)
• Enable or disable profiling
The Nios II SBT for Eclipse sets these parameters to reasonable defaults. Do not modify them unless you
have a clear understanding of their effects.

The Target Connection Tab
This tab allows you to control the connection between the host machine and the target hardware in the
following ways:
• Select the cable, if more than one cable is available
• Allow software to run despite a system ID value or timestamp that differs from the hardware
• Reset the processor when the software is downloaded
The System ID Properties button allows you to examine the system ID and timestamp in both the .elf file
and the hardware. This can be helpful when you need to analyze the cause of a system ID or timestamp
mismatch.

The Debugger Tab
In this tab, you optionally enable the debugger to halt at a specified entry point.

Getting Started with the Graphical User Interface
Send Feedback

Altera Corporation

2-22

NII5V2
2015.05.14

Nios II Hardware v2 (beta)

Nios II Hardware v2 (beta)
Run configurations and debug configurations have a launch type called Nios II Hardware v2 (beta). To
create this launch type, in the Run menu select either Run Configurations or Debug Configurations. In
the Run/Debug Configurations dialog box, select Nios II Hardware v2 (beta) and click the New button
to create a new launch configuration.
Nios II Hardware v2 (beta) has the following options:
• Main tab
• Debugger tab
• Multi-core launches

Main Tab
This tab allows you to select the following options:
•
•
•
•

Specify the application project to run and the ELF File location
Specify the processor and the JTAG UART connection to use
Enable or disable system ID and timestamp checks
Enable or disable processor controls such as download ELF, reset processor or start processor

Debugger Tab
In this tab, you optionally enable the debugger to halt at a specified entry point.

Multi-Core Launches
If you have multiple run configurations, create an Eclipse launch group. Launch groups are an Eclipse
feature that allows multiple run configurations to be started at the same time. You choose which run
configurations are added to the group. You can use the launch group in any place where you can use a run
configuration.
For details about Eclipse launch groups, refer to the Eclipse help system.

Optimizing Project Build Time
When you build a Nios II project, the project makefile builds any components that are unbuilt or out of
date. For this reason, the first time you build a project is normally the slowest. Subsequent builds are fast,
only rebuilding sources that have changed.
To further optimize your project build time, disable generation of the objdump linker map.
Nios II software build performance is generally better on Linux platforms than on Windows platforms.

Importing a Command-Line Project
If you have software projects that were created with the Nios II SBT command line, you can import the
projects into the Nios II SBT for Eclipse for debugging and further development. This section discusses
the import process.

Altera Corporation

Getting Started with the Graphical User Interface
Send Feedback

NII5V2
2015.05.14

Nios II Command-Line Projects

2-23

Your command-line C/C++ application, and its associated BSP, is created on the command line. Any
Nios II SBT command-line project is ready to import into the Nios II SBT for Eclipse. No additional
preparation is necessary.

Nios II Command-Line Projects
The Nios II SBT for Eclipse imports the following kinds of Nios II command-line projects:
• Command-line C/C++ application project
• Command-line BSP project
• Command-line user library project
You can edit, build, debug, and manage the settings of an imported project exactly the same way you edit,
build, debug, and manage the settings of a project created in Nios II SBT for Eclipse.

Importing through the Import Wizard
The Nios II SBT for Eclipse imports each type of project through the Import wizard. The Import wizard
determines the kind of project you are importing, and configures it appropriately.
You can continue to develop project code in your SBT project after importing the project into Eclipse.
You can edit source files and rebuild the project, using the SBT either in Eclipse or on the command line.
Related Information

Getting Started from the Command Line on page 3-1
For more information about creating projects with the command line.

Road Map
Importing and debugging a project typically involves several of the following tasks. You do not need to
perform these tasks in this order, and you can repeat or omit some tasks, depending on your needs.
•
•
•
•

Import a command-line C/C++ application
Import a supporting project
Debug a command-line C/C++ application
Edit command-line C/C++ application code

When importing a project, the SBT for Eclipse might make some minor changes to your makefile. If the
makefile refers to a source file located outside the project directory tree, the SBT for Eclipse treats that file
as a linked resource. However, it does not add or remove any source files to or from your makefile.
When you import an application or user library project, the Nios II SBT for Eclipse allows you to choose
Eclipse source management or user source management. Unless your project has an unusual directory
structure, choose Eclipse source management, to allow the SBT for Eclipse to automatically maintain your
list of source files.
You debug and edit an imported project exactly the same way you debug and edit a project created in
Eclipse.

Import a Command-Line C/C++ Application
To import a command-line C/C++ application, perform the following steps:

Getting Started with the Graphical User Interface
Send Feedback

Altera Corporation

2-24

NII5V2
2015.05.14

Importing a Project with Absolute Source Paths

1. Start the Nios II SBT for Eclipse.
2. On the File menu, click Import. The Import dialog box appears.
3. Expand the Nios II Software Build Tools Project folder, and select Import Nios II Software Build
Tools Project.
4. Click Next. The File Import wizard appears.
5. Click Browse and locate the directory containing the C/C++ application project to import.
6. Click OK. The wizard fills in the project path.
7. Specify the project name in the Project name box.
Note: You might see a warning saying "There is already a .project file at: ". This warning
indicates that the directory already contains an Eclipse project. Either it is an Eclipse project, or
it is a command-line project that is already imported into Eclipse. If the project is already in
your workspace, do not re-import it.
8. Click Finish. The wizard imports the application project.
After you complete these steps, the Nios II SBT for Eclipse can build, debug, and run the complete
program, including the BSP and any libraries. The Nios II SBT for Eclipse builds the project using the
SBT makefiles in your imported C/C++ application project. Eclipse displays and steps through applica‐
tion source code exactly as if the project were created in the Nios II SBT for Eclipse. However, Eclipse
does not have direct information about where BSP or user library code resides. If you need to view,
debug or step through BSP or user library source code, you need to import the BSP or user library.
Related Information

Import a Supporting Project on page 2-24
For more information about the process of importing supporting projects, such as BSPs and libraries.

Importing a Project with Absolute Source Paths

If your project uses an absolute path to refer to a source file, the SBT for Eclipse imports that source file as
a linked resource. In this case, the import wizard provides a page where you can manage how Eclipse
refers to the source: as a file, or through a parent directory.
Related Information

Absolute Source Paths and Linked Resources on page 2-13
For more information about managing linked resources.

Import a Supporting Project
While debugging a C/C++ application, you might need to view, debug or step through source code in a
supporting project, such as a BSP or user library. To make supporting project source code visible in the
Eclipse debug perspective, you need to import the supporting project.
If you do not need BSP or user library source code visible in the debugger, you can skip this task, and
proceed to debug your project exactly as if you had created it in Eclipse.
If you have several C/C++ applications based on one BSP or user library, import the BSP or user library
once, and then import each application that is based on the BSP or user library. Each application's
makefile contains the information needed to find and build any associated BSP or libraries.
Related Information

Import a Command-Line C/C++ Application on page 2-23
For more information about the steps for importing a supporting project.

Altera Corporation

Getting Started with the Graphical User Interface
Send Feedback

NII5V2
2015.05.14

User-Managed Source Files

2-25

User-Managed Source Files
When you import a Nios II application or user library project, the Nios II SBT for Eclipse offers the
option of user source management. User source management is helpful if you prefer to update your
makefile manually to reflect source files added to or removed from the project.
With user source management, Eclipse never makes any changes to the list of source files in your
makefile. However, the SBT for Eclipse manages all other project parameters and settings, just as with any
other Nios II software project.
If your makefile refers to a source file with an absolute path, when you import with user source
management, the absolute path is untouched, like any other source path. You might use an absolute path
to refer to common source files in a fixed location. In this situation, you can move the project to a
different directory without disturbing the common source file references.
User source management is not available with BSP projects. BSP makefiles are based on the operating
system, BSP settings, selected software packages, and selected drivers. You do not specify BSP source files
directly.
Related Information

User Source Management on page 2-13
For more information about how the SBT for Eclipse handles makefiles with user-managed sources.

Packaging a Library for Reuse
This section shows how to create and use a library archive file (.a) in the Nios II Software Build Tools for
Eclipse. This technique enables you to provide a library to another engineer or organization without
providing the C source files. This process entails two tasks:
1. Create a Nios II user library
2. Create a Nios II application project based on the user library

Creating the User Library
To create a user library, perform the following steps:
1.
2.
3.
4.
5.

In the File menu, point to New and click Nios II Library.
Type a project name, for example test_lib.
For Location, browse to the directory containing your library source files ( .c and .h).
Click Finish.
Build the project to create the .a file (in this case libtest_lib.a).

Using the Library
To use the library in a Nios II application project, perform the following steps:
1. Create your Nios II application project.
2. To set the library path in the application project, right-click the project, and click Properties.
3. Expand Nios II Application Properties. In Nios II Application Paths, next to Application include
directories, click Add and browse to the directory containing your library header files.
4. Next to Application library directories, click Add and browse to the directory containing your .a file.
Getting Started with the Graphical User Interface
Send Feedback

Altera Corporation

2-26

NII5V2
2015.05.14

Creating a Software Package

5. Next to Library name, click Add and type the library project name you selected when you created
your user library.
6. Click OK.
7. Build your application.
As this example shows, the .c source files are not required to build the application project. To hand off the
library to another engineer or organization for reuse, you provide the following files:
• Nios II library archive file (.a)
• Software header files (.h)
Related Information

Creating a Project on page 2-2

Creating a Software Package
This section shows how you can build a custom library into a BSP as a software package. The software
package can be linked to any BSP through the BSP Editor.
This section contains an example illustrating the steps necessary to include any software package into a
Nios II BSP.
To create and exercise the example software package, perform the following steps:
1. Locate the ip directory in your Altera Complete Design Suite installation. For example, if the Altera
Complete Design Suite version 14.1 is installed on the Windows operating system, the directory might
be c:\altera\14.1\ip. Under the ip directory, create a directory for the software package. For simplicity,
this section refers to this directory as .
2. In , create a subdirectory named EXAMPLE_SW_PACKAGE. In /
EXAMPLE_SW_PACKAGE, create two subdirectories named inc and lib.
3. In /EXAMPLE_SW_PACKAGE/inc, create a new header file named example_sw_package.h
containing the following code:

4.

/* Example Software Package */
void example_sw_package(void);
In /EXAMPLE_SW_PACKAGE/lib, create a new C source file named example_sw_package.c

containing the following code:

/* Example Software Package */
#include 
#include "..\inc\example_sw_package.h"
void example_sw_package(void)
{
printf ("Example Software Package. \n");
}

5. In , create a new Tcl script file named example_sw_package_sw.tcl containing the
following code:

Altera Corporation

Getting Started with the Graphical User Interface
Send Feedback

NII5V2
2015.05.14

Creating a Software Package

2-27

#
# example_sw_package_sw.tcl
#
# Create a software package known as "example_sw_package"
create_sw_package example_sw_package
# The version of this software
set_sw_property version 14.1
# Location in generated BSP that sources should be copied into
set_sw_property bsp_subdirectory Example_SW_Package
#
# Source file listings...
#
# C/C++ source files
#add_sw_property c_source EXAMPLE_SW_PACKAGE/src/my_source.c
# Include files
add_sw_property include_source
EXAMPLE_SW_PACKAGE/inc/example_sw_package.h
# Lib files
add_sw_property lib_source
EXAMPLE_SW_PACKAGE/lib/libexample_sw_package_library.a
#
#
#
#

Include paths for headers which define the APIs for this package
to share w/ app & bsp
Include paths are relative to the location of this software
package tcl file

add_sw_property include_directory EXAMPLE_SW_PACKAGE/inc
# This driver supports HAL & UCOSII BSP (OS) types
add_sw_property supported_bsp_type HAL
add_sw_property supported_bsp_type UCOSII
# Add example software package system.h setting to the BSP:
add_sw_setting quoted_string system_h_define \
example_sw_package_system_value EXAMPLE_SW_PACKAGE_SYSTEM_VALUE 1 \
"Example software package system value"
# End of file

6. In the SBT for Eclipse, create a Nios II application and BSP project based on the Hello World template.
Set the application project name to hello_example_sw_package.
7. Create a new C file named hello_example_sw_package.c in the new application project containing the
following code:

/*
* "Hello World" example.
*
Getting Started with the Graphical User Interface
Send Feedback

Altera Corporation

2-28

NII5V2
2015.05.14

Programming Flash in Altera Embedded Systems
* This example prints 'Hello from Nios II' to the STDOUT stream. It also
* tests inclusion of a user software package.
*/
#include 
#include "example_sw_package.h"
int main()
{
printf("Hello from Nios II!\n");
example_sw_package();
return 0;
}
Delete hello_world.c from the hello_example_sw_package application project.

8.
9. In the File menu, point to New and click Nios II Library
10.Set the project name to example_sw_package_library.
11.For Location, browse to \EXAMPLE_SW_PACKAGE\lib

Note: Building the library here is required, because the resulting .a is referenced here by example_sw_
package_sw.tcl.
12.Click Finish.
13.Build the example_sw_package_library project to create the libexample_sw_package_library.a library
archive file.
14.Right-click the BSP project, point to Nios II, and click BSP Editor to open the BSP Editor.
15.In the Software Packages tab, find example_sw_package in the software package table, and enable it.
If there are any errors in a software package's *_sw.tcl file, such as an incorrect path that causes a file to
not be found, the software package does not appear in the BSP Editor.
16.Click the Generate button to regenerate the BSP. On the File menu, click Save to save your changes to
settings.bsp.
17.In the File menu, click Exit to exit the BSP Editor.
18.Build the hello_example_sw_package_bsp BSP project.
19.Build the hello_example_sw_package application project.
hello_example_sw_package.elf is ready to download and execute.

Programming Flash in Altera Embedded Systems
Many Nios II processor systems use external flash memory to store one or more of the following items:
•
•
•
•

Program code
Program data
FPGA configuration data
File systems

The Nios II SBT for Eclipse provides flash programmer utilities to help you manage and program the
contents of flash memory. The flash programmer allows you to program any combination of software,
hardware, and binary data into flash memory in one operation.

Starting the Flash Programmer
You start the flash programmer by clicking Flash Programmer in the Nios II menu.

Altera Corporation

Getting Started with the Graphical User Interface
Send Feedback

NII5V2
2015.05.14

Creating a Flash Programmer Settings File

2-29

When you first open the flash programmer, no controls are available until you open or create a Flash
Programmer Settings File (.flash-settings).

Creating a Flash Programmer Settings File
The .flash-settings file describes how you set up the flash programmer GUI to program flash. This
information includes the files to be programmed to flash, a .sopcinfo file describing the hardware
configuration, and the file programming locations. You must create or open a flash programmer settings
file before you can program flash.
You create a flash programmer settings file through the File menu. When you click New, the New Flash
Programmer Settings File dialog box appears.

Specifying the Hardware Configuration
You specify the hardware configuration by opening a .sopcinfo file. You can locate the .sopcinfo file in
either of two ways:
• Browse to a BSP settings file. The flash programmer finds the .sopcinfo file associated with the BSP.
• Browse directly to a .sopcinfo file.
Once you have identified a hardware configuration, details about the target hardware appear at the top of
the Nios II flash programmer screen.
Also at the top of the Nios II flash programmer screen is the Hardware Connections button, which opens
the Hardware Connections dialog box. This dialog box allows you to select a download cable, and control
system ID behavior.
Related Information

The Target Connection Tab on page 2-21

The Flash Programmer Screen Layout
The flash programmer screen is divided into two areas. The top area is the command area, and the bottom
is the console area. The details of the flash programmer screen areas are described in this section.
Below the console area is the Start button. This button is enabled when the flash programmer parameters
are valid. It starts the process of programming flash.

The Command Area
In the command area, you specify settings and other parameters defining the flash programmer settings
file. The command area contains one or more tabs. Each tab represents a flash memory component
available in the target hardware. Each tab allows you to view the parameters of the memory component,
and view and edit the list of files to be programmed in the component.
The Add and Remove buttons allow you to create and edit the list of files to be programmed in the flash
memory component.
The File generation command box shows the commands used to generate the Motorola S-record Files
(.flash) used to program flash memory.
The File programming command box shows the commands used to program the .flash files to flash
memory.

Getting Started with the Graphical User Interface
Send Feedback

Altera Corporation

2-30

NII5V2
2015.05.14

The Console Area

The Properties button opens the Properties dialog box, which allows you to view and modify informa‐
tion about an individual file. In the case of a .elf, the Properties button provides access to the project reset
address, the flash base and end addresses, and the boot loader file (if any).
The flash programmer determines whether a boot loader is required based on the load and run locations
of the .text section. You can use the Properties dialog box to override the default boot loader configura‐
tion.

The Console Area
The console area shows results of settings and commands that you select in the command area. The
console area consists of the following tabs:
• The Information tab
• The Problems tab
• The Processing tab

The Information Tab

The Information tab shows the high-level changes you make to your flash programmer settings file.

The Problems Tab

The Problems tab shows warnings and error messages about the process of flash programmer settings file
creation.

The Processing Tab

When you program flash, the Processing tab shows the individual programming actions as they take
place.

Saving a Flash Programmer Settings File
When you have finished configuring the input files, locations, and other settings for programming your
project to flash, you can save the settings in a .flash-settings file. With a .flash-settings file, you can program
the project again without reconfiguring the settings. You save a .flash-settings file through the File menu.

Flash Programmer Options
Through the Options menu, you can control several global aspects of flash programmer behavior, as
described in this section.
Related Information

Nios II Flash Programmer User’s Guide
For more information about these features.

Staging Directories

Through the Staging Directories dialog box, you control where the flash programmer creates its script
and .flash-settings files.

Generate Files

If you disable this option, the flash programmer does not generate programming files, but programs files
already present in the directory. You might use this feature to reprogram a set of files that you have
previously created.

Altera Corporation

Getting Started with the Graphical User Interface
Send Feedback

NII5V2
2015.05.14

Program Files

2-31

Program Files

If you disable this option, the flash programmer generates the programming files and the script, but does
not program flash. You can use the files later to program flash by turning off the Generate Files option.

Erase Flash Before Programming

When enabled, this option erases flash memory before programming.

Run From Reset After Programming

When enabled, this option resets and starts the Nios II processor after programming flash.

Creating Memory Initialization Files
Sometimes it is useful to generate memory initialization files. For example, to program your FPGA with a
complete, running Nios II system, you must include the memory contents in your .sof file. In this
configuration, the processor can boot directly from internal memory without downloading.
Creating a Hexadecimal (Intel-Format) File (.hex) is a necessary intermediate step in creating such a .sof
file. The Nios II SBT for Eclipse can create .hex files and other memory initialization formats.
To generate correct memory initialization files, the Nios II SBT needs details about the physical memory
configuration and the types of files required. Typically, this information is specified when the hardware
system is generated.
Note: If your system contains a user-defined memory, you must specify these details manually.
Related Information

Generate Memory Initialization Files by the Legacy Method on page 2-31

Generate Memory Initialization Files
To generate memory initialization files, perform the following steps:
1.
2.
3.
4.

Right-click the application project.
Point to Make targets and click Build to open the Make Targets dialog box.
Select mem_init_generate.
Click Build. The makefile generates a separate file (or files) for each memory device. It also generates a
Quartus II IP File (.qip). The .qip file tells the Quartus II software where to find the initialization files.
5. Add the .qip file to your Quartus II project.
6. Recompile your Quartus II project.
If your hardware system was generated with SOPC Builder, you can alternatively use the legacy
method to generate memory initialization files. However, this method is not preferred.

Generate Memory Initialization Files by the Legacy Method
To generate memory initialization files by the legacy method, perform the following steps:

Getting Started with the Graphical User Interface
Send Feedback

Altera Corporation

2-32

NII5V2
2015.05.14

Memory Initialization Files for User-Defined Memories

1.
2.
3.
4.

Right-click the application project.
Point to Make targets and click Build to open the Make Targets dialog box.
Select mem_init_install.
Click Build. The makefile generates a separate file (or files) for each memory device. The makefile
inserts the memory initialization files directly in the Quartus II project directory for you.
5. Recompile your Quartus II project.

Related Information

Hardware Reference
For information about working in the stand-alone flow.

Memory Initialization Files for User-Defined Memories
Generating memory initialization files requires detailed information about the physical memory devices,
such as device names and data widths. Normally, the Nios II SBT extracts this information from
the .sopcinfo file. However, in the case of a user-defined memory, the .sopcinfo file does not contain
information about the data memory, which is outside the system. Therefore, you must provide this
information manually.
You specify memory device information when you add the user-defined memory device to your BSP. The
device information persists in the BSP settings file, allowing you to regenerate memory initialization files
at any time, exactly as if the memory device were part of the hardware system.
Specify the memory device information in the Advanced tab of the Add Memory Device dialog box.
Settings in this tab control makefile variables in mem_init.mk. On the Advanced tab, you can control the
following memory characteristics:
• The physical memory width. The device’s name in the hardware system.
• The memory initialization file parameter name. Every memory device can have an HDL parameter
specifying the name of the initialization file. The Nios II ModelSim launch configuration overrides the
HDL parameter to specify the memory initialization filename. When available, this method is
preferred for setting the memory initialization filename.
• The Mem init filename parameter can be used in Nios II systems as an alternative method of specifying
the memory initialization filename. The Mem init filename parameter directly overrides any filename
specified in the HDL.
• Connectivity to processor master ports. These parameters are used when creating the linker script.
• The memory type: volatile, CFI flash or EPCS flash.
• Byte lanes.
• You can also enable and disable generation of the following memory initialization file types:
• .hex file
• .dat and .sym files
• .flash file
Related Information

Publishing Component Information to Embedded Software on page 13-1
For more information about this parameter, refer to "Embedded Software Assignments".

Specifying the Memory Device Information in the Advanced Tab

Specify the memory device information in the Advanced tab of the Add Memory Device dialog box.
Settings in this tab control makefile variables in mem_init.mk.

Altera Corporation

Getting Started with the Graphical User Interface
Send Feedback

NII5V2
2015.05.14

Running a Nios II System with ModelSim

2-33

On the Advanced tab, you can control the following memory characteristics:
• The physical memory width.
• The device's name in the hardware system.
• The memory initialization file parameter name. Every memory device can have an HDL parameter
specifying the name of the initialization file. The Nios II ModelSim launch configuration overrides the
HDL parameter to specify the memory initialization filename. When available, this method is
preferred for setting the memory initialization filename.
• The Mem init filename parameter can be used in Nios II systems as an alternative method of
specifying the memory initialization filename. The Mem init filename parameter directly overrides
any filename specified in the HDL.
• Connectivity to processor master ports. These parameters are used when creating the linker script.
• The memory type: volatile, CFI flash or EPCS flash.
• Byte lanes.
• You can also enable and disable generation of the following memory initialization file types:
• .hex file
• .dat and .sym files
• .flash file
Related Information

Publishing Component Information to Embedded Software on page 13-1
For more information about this parameter, refer to "Embedded Software Assignments".

Running a Nios II System with ModelSim
You can run a Nios II program on Nios II hardware, such as an Altera development board, or you can run
it in the Nios II ModelSim simulation environment.
Note: If your project was created with version 10.1 or earlier of the Nios II SBT, you must re-import it to
create the Nios II launch configuration correctly.

Using ModelSim with an SOPC Builder-Generated System
If your hardware system was generated by SOPC Builder, running a software project in ModelSim is very
similar to running it on Nios II hardware.
To run Nios II software project in ModelSim, right-click the application project name, point to Run As,
and click Nios II ModelSim.
Similarly, to debug a software project in ModelSim, right-click the application project name, point to
Debug As, and click Nios II ModelSim.
Related Information

Running the Project on Nios II Hardware on page 2-5

Using ModelSim with a Qsys-Generated System
To run a Qsys-generated Nios II system with ModelSim, you must first create a simulation model and
testbench, and specify memory initialization files. You create your Nios II simulation model and
testbench using the steps that apply to any Qsys design.

Getting Started with the Graphical User Interface
Send Feedback

Altera Corporation

2-34

NII5V2
2015.05.14

Preparing your Software for ModelSim

Related Information

Creating a System with Qsys
For more information, refer to the "Qsys Design Flow".

Preparing your Software for ModelSim

Creating the software projects is nearly the same as when you run the project on hardware. To prepare
your software for ModelSim simulation, perform the following steps:
1. Create your software project.

If you need to initialize a user-defined memory, you must take special steps to create memory initiali‐
zation files correctly.
2. Build your software project.
3. Create a ModelSim launch configuration with the following steps:
a. Right-click the application project name, point to Run As, and click Run Configurations. In the
Run Configurations dialog box, select Nios II ModelSim, and click the New button.
b. In the Main tab, ensure that the correct software project name and .elf file are selected.
c. Click Apply to save the launch configuration.
d. Click Close to close the dialog box.
If you are simulating multiple processors, create a launch configuration for each processor, and
create a launch group.
4. Open the run configuration you previously created. Click Run. The Nios II SBT for Eclipse performs a
make mem_init_generate command to create memory initialization files, and launches ModelSim.
5. At the ModelSim command prompt, type ldr.
Related Information

•
•
•
•
•

Creating a Project on page 2-2
Building the Project on page 2-4
Generate Memory Initialization Files by the Legacy Method on page 2-31
Multi-Core Launches on page 2-22
Creating a Simple BSP on page 2-11

Potential Error Message
When you create the launch configuration, you might see the following error message:
SEVERE: The Quartus II project location has not been set in the ELF section. You can manually
override this setting in the launch configuration's ELF file 'Advanced' properties page.
Related Information

Creating a Simple BSP on page 2-11

Nios II GCC Tool Chain
In Nios II EDS version 13.1 (Nios II Classic), the Nios II GNU tool chain is upgraded from GCC 4.1.2 to
GCC 4.7.3. When upgrading to the new tool chain you should note the following changes:
• Nios II specific changes
• GCC changes and enhancements
Note:
Altera Corporation

Getting Started with the Graphical User Interface
Send Feedback

NII5V2
2015.05.14

Nios II Specific Changes

2-35

Related Information

• Porting to GCC 4.7
For more information about how GNU also provides a porting guide to GCC4.7 to document
common issues.
• GCC Releases
For more information about full GCC release notes.
Nios II Specific Changes
• Use __buildin_custom_* instead of -mcustom-* or #pragma to reliably generate Nios II Floating
Point Custom Instructions (FPCI), independent of compiler optimization level and command line
flags.
• To use -mcustom-* or #pragma for Nios II Floating Point Custom Instructions (FPCI):

•
•
•
•
•

• The -ffinite-math-only flag must be used to generate fmins and fmax FPCI
• The optimization (non -O0 flag) must be used to generate fsqrts FPCI
Users implementing transcendental functions in hardware must use the -funsafe-math-optimizations flag to generate the FPCI for the transcendental functions fsins(), fcoss(), ftans(),
fatans(), fexps(), flogs() and corresponding double-precision functions.
The Pragma format has changed from eg. #pragma custom_fadds 253 to #pragma GCC
target("custom-fadds=253") and function attributes provide an alternative format
__attribute__((target("custom-fadds=253"))).
Use the -mel/-meb flags instead of -EL/-EB for endian settings. Software Build Tool for Eclipse
(SBTE) users must regenerate the BSP for this setting to take effect.
The -mreverse-bitfields flag and reverse_bitfields pragma are no longer supported.
The -fstack-check flag must be used instead of -mstack-check to enable stack checking.

GCC Changes and Enhancements
• The -Wa,-relax-all flag in nios2-elf-gcc GCC 4.7.3 supports function calls and programs
exceeding the 256 MB limit.
• When used with optimization, inline assembly code with the asm operator needs to declare values
imported from C and exported back to C, using the mechanisms described on the "Exteded Asm Assembler Instructions with C Expression Operands" page.
• Pre-standard C++ headers are not supported in GCC 4.7.3. Replace pre-standard C++ with standard C
++ eg. #include , cout, endl with #include , std::cout and
std::endl, respectively.
• The compile flag -Wl,--defsym foo=bar where bar is an undefined symbol, will generate error at the
linker level in GCC 4.7.3. GCC 4.1.2 does not include this check.
Related Information

• Nios II Software Build Tools on page 4-1
For more information about the GCC toolchains.
• Getting Started from the Command Line on page 3-1
• Extended Asm - Assembler Instructions with C Expression Operands
• Altera Software Installation and Licensing Manual
For more information about installing the Altera Complete Design Suite.

Getting Started with the Graphical User Interface
Send Feedback

Altera Corporation

2-36

NII5V2
2015.05.14

Eclipse Usage Notes

Eclipse Usage Notes
The behavior of certain Eclipse and CDT features is modified by the Nios II SBT for Eclipse. If you
attempt to use these features the same way you would with a non-Nios II project, you might have
problems configuring or building your project. This section discusses such features.

Configuring Application and Library Properties
To configure project properties specific to Nios II SBT application and library projects, use the Nios II
Application Properties and Nios II Library Properties tabs of the Properties dialog box.
To open the appropriate properties tab, right-click the application or library project and click Properties.
Depending on the project type, Nios II Application Properties or Nios II Library Properties tab appears
in the list of tabs. Click the appropriate Properties tab to open it.

Comparing the Nios II Application Properties and Nios II Library Properties tabs

The Nios II Application Properties and Nios II Library Properties tabs are nearly identical. These tabs
allow you to control the following project properties:

•
•
•
•
•
•
•
•
•
•
•
•

The name of the target .elf file (application project only)
The library name (library project only)
A list of symbols to be defined in the makefile
A list of symbols to be undefined in the makefile
A list of assembler flags
Warning level flags
A list of user flags
Generation of debug symbols
Compiler optimization level
Generation of object dump file (application project only)
Source file management
Path to associated BSP (required for application, optional for library)

Configuring BSP Properties
To configure BSP settings and properties, use the Nios II BSP Editor.
Related Information

• Using the BSP Editor on page 2-14
For more information about the BSP Editor.
• Using the BSP Editor on page 2-14
For more information about the BSP Editor.

Exclude from Build Not Supported
The Exclude from Build command is not supported. You must use the Remove from Nios II Build and
Add to Nios II Build commands instead.
This behavior differs from the behavior of the Nios II SBT for Eclipse in version 9.1.

Altera Corporation

Getting Started with the Graphical User Interface
Send Feedback

NII5V2
2015.05.14

Selecting the Correct Launch Configuration Type

2-37

Selecting the Correct Launch Configuration Type
If you try to debug a Nios II software project as a CDT Local C/C++ Application launch configuration
type, you see an error message, and the Nios II Debug perspective fails to open. This is expected CDT
behavior in the Eclipse platform. Local C/C++ Application is the launch configuration type for a standard
CDT project. To invoke the Nios II plugins, you must use a Nios II launch configuration type.
Note: If your project was created with version 10.1 or earlier of the Nios II SBT, you must re-import it to
create the Nios II launch configuration correctly.

Target Connection Options
The Nios II launch configurations offer the following Nios II-specific options in the Target Connection
tab:
•
•
•
•
•
•

Disable 'Nios II Console' view
Ignore mismatched system ID
Ignore mismatched system timestamp
Download ELF to selected target system
Start processor
Reset the selected target system

Renaming Nios II Projects
To rename a project in the Nios II SBT for Eclipse, perform the following steps:
1. Right-click the project and click Rename.
2. Type the new project name.
3. Right-click the project and click Refresh.
If you neglect to refresh the project, you might see the following error message when you attempt to
build it:
Resource  is out of sync with the system

Running Shell Scripts from the SBT for Eclipse
Many SBT utilities are implemented as shell scripts. You can use Eclipse external tools configurations to
run shell scripts. However, you must ensure that the shell environment is set up correctly.
To run shell scripts from the SBT for Eclipse, execute the following steps:
1. Start the Nios II Command Shell.
2. Start the Nios II SBT for Eclipse by typing the following command:
eclipse-nios2

You must start the SBT for Eclipse from the command line in both the Linux and Windows operating
systems, to set up the correct shell environment.
3. From the Eclipse Run menu, select to External Tools > External Tools Configurations.
4. Create a new tools configuration, or open an existing tools configuration.
5. On the Main tab, set Location and Argument.

Getting Started with the Graphical User Interface
Send Feedback

Altera Corporation

2-38

NII5V2
2015.05.14

Must Use Nios II Build Configuration

Table 2-3: Location and Argument to Run Shell Script from Eclipse
Platform

Windows
Linux

Location

Argument

${env_var:QUARTUS_ROOTDIR}\bin\cygwin\
bin\sh.exe
${env_var:SOPC_KIT_NIOS2}/bin/



Navigation menu