- Nios II IDE
- Toolchain (GCC, GDBc, etc.)
- C Standard Libraries (newlib) & HAL

- Legacy SDK
- Flash Programmer

Nios II IDE
This section lists any issues relating to the Nios® II Integrated Development Environment (IDE).
Building Projects
Build errors after changing component names in SOPC BuilderC/C++ Build property settings don't update correctlyIf you rename components in the SOPC Builder system and then regenerate the SOPC Builder system, Nios II IDE system library projects based on that system will have build errors.
Workaround: After regenerating the SOPC Builder system, create a new system library project for the SOPC Builder system. Alternatively, you can delete the system library project from the workspace without deleting the contents from the file system, and then re-import the project, selecting the appropriate SOPC Builder system.
Project fails to build when referencing another C/C++ applicationOn the C/C++ Build property page for a project, the Configuration dropdown list is used to select the active build configuration (e.g., release or debug). When the active configuration is changed, the rest of the window does not automatically update with the appropriate settings for Compiler Flags, Optimization Level, etc.
Workaround: To see the settings for a new configuration, manually deselect then reselect a Configuration setting. e.g., click on Preprocessor then General.
Eclipse Make Targets view is not available in the Nios II IDEIf a C/C++ application project references another C/C++ application project, it will fail to build. C/C++ application projects can only reference a system library project.
Workaround: None available at this time.
The Make Targets view, which is available as part of the C/C++ Development Toolkit plugin for Eclipse, is not supported for Nios II projects.
Workaround: None available at this time.
Debugging Projects
Variable view keeps reverting to default display formatBreakpoints in C++ constructors fail to halt the processorEvery time you start a debug session, or resume during a debug session, the Variable view resets to the default variable format.
Workaround: You can change the default variable format using the Default variable format preference setting. Choose Window > Preferences and select the C/C++ > Debug preferences page. The preference settings will take effect in the next debug session.
Nios II Terminal still running error messageBreakpoints set in a C++ constructor might not halt the processor due to a widespread GNU GCC, GDB issue. This is not a Nios II IDE specific issue.
Workaround: Move all of your constructor source code into another class method, called init, then invoke this method from within the constructor.
Erroneous results when running/debugging a new project named the same as a previously deleted projectWhen starting a run or debug session, you may get an error indicating that the Nios II terminal is still running. This occurs if the previous run session was not terminated properly.
Workaround: The recommended ways to terminate a run or debug session are listed below:
- Click the Terminate button (the red square) in the Console view.
- In the Debug view, select the top-most debug thread (typically named <project name> Nios II HW configuration [Nios II Hardware]) and click the Terminate button.
- If you want to re-download and re-launch your run, click the Run or Debug buttons on the toolbar, which will terminate the previous run/debug session automatically.
Trace View errors and missing traced load/store instruction and dataDeleting a project does not delete any Nios II hardware run/debug configurations that exist for that project. If you delete a project, and then create a new project of the same name, running or debugging a vestigial Nios II hardware configuration will result in undefined behavior.
Workaround: When deleting a project, also delete any existing Nios II hardware run/debug configurations for that project. Create new run/debug configurations for the new project.
Cannot use watchpoints in the Nios II IDE when the FS2 console is openIf the "Include load addresses", "Include store addresses" and/or "Include data values..." trace options is enabled during debug, the load and store address and data will not appear at the first breakpoint when starting debugging. They will appear at successive breakpoints. In addition, you may get error messages in the Trace View when the above options are enabled due to problems in the trace decoder used by the Nios II IDE Trace View.
Workaround: To see load or store addresses and data in the instruction trace prior to main, turn on “Break at alt_main()” (in the Debugger tab of your debug configuration). You can also use the FS2 console for disassembly trace. It uses a different trace decode, and thus does not exhibit the problem. See the FS2 documentation for usage information.
Source does not display when stepping in the debuggerWatchpoints do not work in the Nios II IDE when the Use FS2 console window for trace and watchpoint support setting is turned on in the Debugger tab of the Debug configuration. You will see an error message "The execution of program is suspended because of error." with details indicating that hardware watchpoints could not be inserted and deleted.
Workaround: If the FS2 console is open, you must use it to control watchpoints. For details, see the FS2 documentation.
Breakpoints on adjacent lines of assembly fail to halt the processorIf you compile a project without the -g compiler option, the IDE cannot display source code during debug.
Workaround: Open the project properties page and select C/C++ Build > Configuration settings > nios2-elf-gcc, then set Debug Level to Default (-g).
nios2-gdb-server error during download or debugSetting breakpoints on adjacent lines of assembly code might cause the Nios II processor to stop responding to the debugger.
Workaround: When debugging in mixed mode or assembly mode view, separate breakpoints by at least one assembly instruction. This issue does not affect Nios II cores that do not have hardware breakpoints enabled in the JTAG debug module.
If you do not have valid memory immediately below the reset address of your system, you may get errors when you attempt to debug or download code to the target.
Workaround: Make sure that you have valid memory (memory which can be read without hanging the Avalon® instruction master) immediately below the reset address.
Navigating Projects
Error "Could not restore workbench layout." after moving or renaming a project directoryResource(s) out of sync with the file system when searching for files in the workspaceIf you move a Nios II IDE project directory, the Nios II IDE reports an error the next time you start the IDE: "Could not restore workbench layout. Reason: Problems occurred restoring workbench." If you try to re-import the project from the new location, the Import Nios II Project from File System wizard reports an error ("Project already exists.") and prevents you from importing the project. Even if you re-name the directory to its original name, the wizard does not accept the project.
Workaround: You must explicitly delete the old project from the Nios II IDE workspace, then re-import the project. Switch to the Navigator view and find the icon for the project. (The IDE stops showing the project icon in the C/C++ Projects view if you change the directory name.) Right click the project, and choose Delete. Re-import the project using the Import wizard.
C/C++ Search utility fails to return correct resultsWhen searching through files in the IDE workspace, you may get an error message saying that one or more resources are out of sync with the file system.
Workaround: Right click in the Navigator view and choose Refresh, and then perform the search again.
Cannot open files from the Outline viewThe Nios II IDE C/C++ search utility may fail to return the correct results.
Workaround: If the C/C++ Search fails, use the File Search facility.
Out of Memory Errors in IDEOpening files using the Outline view will not work if the file is not part of the project.
Workaround: Use the C/C++ Projects view to open the desired file.
You might get out-of-memory errors if you are working with very large files or workspaces with several projects.
Workaround: Reduce the number of projects you have open in your workspace. You can close a project by right-clicking it in the Navigator view and choosing Close from the context-sensitive menu.
Toolchain
This section lists any issues related to the Nios II compiler toolchain.
There are no known issues at this time.
C Standard Libraries (newlib) & HAL
Creating new HAL components
Error in inet_ntoa() functionWhen you first create a component's inc directory, or HAL component header file, you may need to perform a clean build, (i.e. rebuild) of existing system library projects for the new files to be detected.
Workaround: None available or required at this time.
The inet_ntoa() function, which converts an IP address for print-compatible output, will garble the 1st and 3rd components of the character string format IP address. Only the IP address character string is affected. The socket descriptor still holds the correct IP address value. The fourth component of the character string format IP address, which provides the unique identifier for the individual Nios development board, is correctly converted.
Workaround: None available at this time.
Legacy SDK
This section lists issues related to legacy SDK support for the Nios II processor.
The Legacy SDK flow does not support the SPI peripheralThe Legacy SDK flow does not support the JTAG UARTThe Nios II legacy SDK flow does not currently include support for the SPI peripheral. Legacy SDK drivers for the SPI peripheral will be made available on the Nios II Embedded Processor Support page when they are available.
Workaround: None available at this time.
The JTAG UART did not exist before the release of the Nios II processor, and therefore the pre-Nios II legacy SDK flow provides no driver for the JTAG UART. The legacy SDK is not being actively developed, and peripherals developed in the future are unlikely to provide support for the legacy SDK.
Workaround: None available at this time.
Flash Programmer
Flash programmer fails using older download cables
There have been occasional noise issues with older download cables that have long, gray ribbon cables. This has caused some flash programming issues. The USB-BlasterTM Rev B cables have shorter, shielded, yellowish ribbon cables that eliminate this problem. Be sure you are using a USB-Blaster Rev B download cable to program flash.
Flash programmer fails to program an .elf file
If your Nios II processor system does not contain a CFI or EPCS flash memory component (e.g., the "fast" example design), the flash programmer cannot program an .elf file to flash memory, even if the target board contains a CFI or EPCS flash memory component. The flash programmer will fail without an obvious reason. The flash programmer can still program FPGA configuration data and arbitrary files.
Workaround: Make sure the designer’s actual Nios II system has a flash memory component before attempting to program an .elf file to flash.
Flash programmer GUI fails to program flash on Linux
See the description in the Host Platform section.
Flash programmer does not support EPCS64 configuration devices
Programming, accessing, and booting from EPCS64 devices is not supported in version 1.1 of the Nios II processors. The HAL routines are not available for accessing these devices. In addition, current EPCS64 devices do not contain the sector-erase feature that is required by the Nios II flash routines.
Workaround: There is currently no workaround. This support will be added in a future version.
Flash programmer support for EPCS16 configuration devices
The Nios II version 1.1 flash programmer does not support EPCS16 devices.
Workaround: First apply the EPC Boot Loader Patch to your Nios II version 1.1 installation by following the directions in the readme file.
Then apply the epcs16_patch to your Nios II version 1.1 installation by following the directions in the readme file.
Stratix II boot from EPCS not supported
Booting from an EPCS device is not supported with Stratix® II devices.
Workaround: There is currently no workaround. This will be fixed in a future version.
Flash programmer failures on custom boards
The flash programmer may fail when used with a custom target board. The failure mechanisms may include:
You may get warnings regarding previous versions of the tools when the target board system is opened in SOPC Builder, indicating your target board may not have been created using the latest versions of Quartus® II software and Nios II processors. If this is true, your target board does not contain the latest version of the jtag_uart component, which is required when programming flash on boards whose jtag chain includes multiple devices. This may prevent the flash programmer from working.Workaround: Remove the JTAG UART from the SOPC Builder system and re-add the JTAG UART from Nios II version 1.1 processor. Regenerate and recompile the system to fix the problem.
The flash programmer may fail if the custom target board does not contain a CFI flash component. Even if the board contains only an EPCS configuration device and no CFI flash, the target board system must contain a CFI flash component.Workaround: Add a CFI flash component to your target board in SOPC Builder. You do not need to connect the flash signals to pins at the top level--you can leave them unconnected.
Your flash programmer target board may require the addition of a reset delay circuit.Workaround: Add a reset delay circuit to the flash programmer design. The simplest method for doing this is copying the "delay_reset_block" symbol from the standard design .BDF file and pasting it in your target board design schematic. You will additionally need to copy the files "delay_reset_block.bdf" and "reset_counter.v" from the standard design to your target board project directory.
Your flash programmer target board may not be running at least 50 MHz. The flash programmer requires that the target board input clock be at least 50 MHz.Workaround: Make sure the target board design has an input clock of at least 50 MHz. If a 50 MHz clock is not available on the board, you can use a PLL in the FPGA to create a 50 MHz clock.
The flash programmer target board may have been compiled in Quartus II software without the proper firmware. In some cases, the firmware file for the Nios II processor contained in the target board can be overwritten inadvertently.
Workaround: Copy the file <Nios-II-Install-Directory>\components\altera_user_board_setup\system\firmware_ROM.hex> to your target board project directory and recompile in Quartus II software. This will ensure that the target board contains the proper firmware.
Flash programmer fails on device in multi-device chain
The flash programmer GUI incorrectly assumes that the first device in the chain is the target and thus fails to use the appropriate device if it is not the first in the chain.
Workaround: Use the flash programmer in command line mode as described in the Flash Programmer User Guide which will enable you to select the appropriate device in the chain.
