Nios II IDE
This section lists any issues relating to the Nios II IDE.
Building Projects
[Updated] Error importing a software project created in Nios II IDE version 1.1 to Nios II IDE version 5.0.1If you create a software project in Nios II IDE version 1.1 and then install Nios II version 5.0.1 and try to import that same project into your workspace, you may get an error stating "Problem deleting folder Debug".
Workaround: If you get this error, close Nios II IDE and any other application which has files open from the project in question, then manually delete the Debug and/or Release directories from the project. Re-import the project in Nios II IDE version 5.0.1.
Building Nios II Advanced using Build Project invokes 'make clean all' by defaultNios II IDE Advanced projects created with earlier (pre-5.0) versions of Nios II IDE will call 'make clean all' by default when the project is built, rather than calling 'make all' Also running Project -> Clean... on these projects has no effect.
Workaround: For advanced projects created with earlier (pre-5.0), right click on the project and select Properties. Select C/C++ Make Project. In the Workbench Build Behavior section, change the value for "Rebuild (Full Build)" to "all". Also check the tickbox for "Clean" and enter "clean" in the corresponding textbox. This will ensure the project invokes 'make all' by default for a build and 'make clean' by default for a clean build. Build errors after changing component names in SOPC Builder
If 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. Alternately, 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.
Running Projects
There are no errata items in this category.
Debugging Projects
[Updated] Use Step Filters button is permanently grayed out in Nios II IDE debug perspective.[Updated] Output to Nios II Terminal is truncated when "Link with profiling library" option is checked on System Properties page.This button, just to the right of the Step Return button, is not implemented in Nios II IDE version 5.0.1.
[Updated] Nios2-gdb-server fails to terminate after setting a watchpointOutput from a printf() or perf_print_formatted_output() call near the end of main() may get prematurely truncated. This occurs when the Nios II application executes a BREAK instruction to transfer profiling data to the development workstation during the exit() or return() from main().
Workaround: Call usleep(500000) which will allow enough of a delay for the I/O to be transmitted over the JTAG UART before main returns (or calls exit()). If output is still partially truncated, increase the delay value passed into usleep(). Use #include <unistd.h> for the usleep() function prototype.
[Updated] Watchpoints will not work when set on variables whose size are not 32-bitsYou may be unable to terminate nios2-gdb-server after setting a watchpoint in the Nios II IDE debugger and resuming execution past the end of main. You will see a "Terminate failed" error. You will not be able to start the debugger again; you'll see a message reading "Another application is using the target processor..." in the Console view.
Workaround: End the nios2-gdb-server.exe process using the Windows Task Manager.
[Updated] Debugger cannot step into __sflags (and just continues instead)Workaround: Change the type of globals to "int", "long", or "unsigned long" before setting watchpoints on them.
Missing traced load/store instruction and data Trace View or IndexOutofBoundsExceptionThe Nios II IDE debugger is unable to step into some low-level C library functions, such as __sflags which is called from _fopen_r. (_fopen_r is called from fopen.) If you try to step into such a function, execution will continue as if you had indicated the debugger should resume execution.
Workaround: Step over such functions. Or, if execution continues after trying to step in, select "Suspend" from the Run menu.
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 & data will not appear at the first breakpoint when starting debugging. They will appear at successive breakpoints. 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).
Breakpoints on adjacent lines of assembly fail to halt the processorWatchpoints 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.
Setting 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.
Navigating Projects
Resource(s) out of sync with the file system when searching for files in the workspaceC/C++ Scanner does not understand certain C/C++ constructsWhen 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.
The C/C++ scanner is used for C/C++ Search, navigation, open declaration and parts of content assist. As the scanner doesn’t recognize them, the following code constructs will fail to work with these utilities:
- K&R style C
- Functions that take a function-pointer as an argument
Workaround: If the C/C++ Search fails, use the File Search facility.
Toolchain (gcc, gdb, etc.)
This section lists any issues related to the Nios II compiler toolchain.
Breakpoints in C++ constructors fail to halt the processorBreakpoints 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: You can workaround this issue by moving all of your constructor source code into another class method, called init. Then invoke this method from within the constructor.
Target Software
This section lists any issues related to target software.
Creating new custom HAL componentsWhen 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.
Legacy SDK
This section lists issues related to legacy SDK support for the Nios II processor. For additional known issues with the Legacy SDK, refer to the Nios II Embedded Processor Support page. Please note that the Legacy SDK will be depricated in a release of Nios II processors.
Legacy SDK does not support multiple clock domainsThe Legacy SDK flow does not support the SPI peripheralThe Nios II legacy SDK will not support new Nios II/SOPC features. As such, systems with multiple clock domains may not function correctly when the legacy SDK is used, when peripherals that the Nios II CPU communicates with rely on a timing relationship established with the legacy SDK's "nasys_clock_freq" definition, found in excalibur.h & excalibur.s. For example, the nr_timer_milliseconds() routine in the legacy SDK uses nasys_clock_freq to start a timer to run for one millisecond. If the timer and Nios II CPU are on separate clock domains in SOPC Builder, an incorrect value will be written to the timer.
The 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 are available on the Nios II Embedded Processor Support page.
The Legacy SDK flow may not properly place code at the reset addressThe 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.
If program memory and the Nios II reset address both reside at the bottom of a memory, a reset of the processor may not properly boot from the program memory when using the legacy SDK flow. This results from a slightly different boot procedure between Legacy mode and Nios II IDE mode.
Workaround: Place program memory and the reset address at the base of the RAM in question. Place the exception address near the top of the RAM (at least 0x80 bytes from the end).
Flash Programmer
Stratix II boot from EPCS not supportedFlash Programmer fails to warn you when no flash exists in systemBooting from an EPCS device is not supported with Stratix® II devices.
Workaround: Contact Altera® Applications for potential workarounds.
If the Nios II processor system does not include a flash memory component (e.g., the "fast" example design), then the Flash Programmer cannot program an .elf file to flash memory. The Flash Programmer will fail without obvious clues why.
Workaround: Make sure the target Nios II hardware has a flash memory component before attempting to program an .elf file to flash. You can still use the Flash Programmer to program FPGA configuration data or an arbitrary file.
