Eclipse

Important

This documentation is not recommended for new RISC-V projects. New RISC-V projects should reference the newest version of the documentation. Users targeting Arm devices can still use this documentation as their reference.

The newest version of the documentation can be found here: https://mi-v-ecosystem.github.io/SoftConsole-Documentation/

Long paths on Windows

The MAX_PATH inside Windows file I/O API is restricted to 260 characters, but the usable path is even more constrained. The MAX_PATH must contain the drive letter and the NULL character to terminate the string correctly:

digraph {
         graph [rankdir="LR", ranksep=.01, bgcolor=transparent];
         node [fontname="Verdana", fontsize="9", shape="rectangle", width=.1, height=.2, margin=".04,.01", style=filled, fillcolor=white];
         edge [arrowsize=.7];
         "Drive letter" -> ":\\" -> "Path" -> "NULL termination character"
     }

Effectively this shrinks the limit of the usable path to 256 characters for files. While the limit for directories is 244 (256-12) because they need to be capable to append DOS style filename 8.3 at the end of the path.

Users are encouraged to place the projects at the shortest feasible paths because not just the root of the project is important, but its PROJECT_NAME and its CONFIGURATION as well. For example if the WORKSPACE_PATH is short, then still there is possibility to create long path when addressing the ELF file. On top of the project’s root, the current CONFIGURATION impacts the path and the PROJECT_NAME impacts it twice:

<WORKSPACE_PATH>/<PROJECT_NAME>/<CONFIGURATION>/<PROJECT_NAME>.elf

Using reasonable project names, concise configuration names and placing project’s root at short paths can avoid this problem.

Warning

Big projects (such as polarfire-soc-bare-metal-examples) that contain large structures with long paths should be copied/cloned/extracted to a shallow path. Safest is to use a plain root folder to make sure the long path issue was not triggered. Then importing the project into a workspace within a shallow path is necessary as well.

When building a project and receiving the following error might indicate that the long-path issue was triggered:

15:59:40 **** Build of configuration LIM-Debug for project mpfs-mac-simple-test-multi-emac ****
make all 
make: *** INTERNAL: readdir: No such file or directory.  Stop.
"make all" terminated with exit code 2. Build might be incomplete.

15:59:41 Build Failed. 1 errors, 0 warnings. (took 1s.229ms)

Note

Providing SotftConsole with a corrupted project will cause all sorts of problems and it will not compile the project properly. One way to avoid corruption of a project is to NOT ignore any previous errors before the project is imported.

For example if extracing ZIP of a project into a long path can corrupt the project in the process:

extraction-error

Resolve all problems first and only then import the project into SoftConsole.

Running SoftConsole from command line

If for some reason the SoftConsole needs to be executed from command line then the appropriate launcher scripts need to be used:

  • softconsole.sh (Linux OS)

  • softconsole.cmd (Windows OS)

Warning

Running eclipse.exe binary directly will not work and cause many issues as the launcher scripts do setup required paths and environment variables for the SoftConsole and Renode to function properly.

The Linux launcher depends on a bash shell, using an alternative shell might cause some paths to be misconfigured and then all depending tools to misbehave.

No images in the Welcome page and in the HTML files

The internal web-browser depends on the OS to render the images. Try the following:

  • On Linux (webkit)

    • Check if the webkit GTK packages are installed, for example on Ubuntu/Debian sudo apt-get install libwebkit2gtk-4.0-37

  • On Windows (Internet Explorer)

    • Make sure you have enabled images inside Internet Explorer:

      digraph { graph [rankdir="LR", ranksep=.01, bgcolor=transparent]; node [fontname="Verdana", style=filled, fillcolor=white, fontsize="9", shape="rectangle", width=.1, height=.2, margin=".04,.01"]; edge [arrowsize=.7]; "Internet Options" -> "Advanced" -> "Multimedia" -> "Check 'Show pictures'"; }
      digraph { graph [rankdir="LR", ranksep=.01, bgcolor=transparent]; node [fontname="Verdana", style=filled, fillcolor=white, fontsize="9", shape="rectangle", width=.1, height=.2, margin=".04,.01"]; edge [arrowsize=.7]; "Internet Options" -> "Advanced" -> "Multimedia" -> "Check 'Enable automatic image resizing'"; }
    • In case of having issues with GPU and its driver, switch to software rendering inside Internet Explorer:

      digraph { graph [rankdir="LR", ranksep=.01, bgcolor=transparent]; node [fontname="Verdana", style=filled, fillcolor=white, fontsize="9", shape="rectangle", width=.1, height=.2, margin=".04,.01"]; edge [arrowsize=.7]; "Internet Options" -> "Advanced" -> "Accelerated graphics" -> "Check 'Use software rendering instead of GPU rendering'"; }
    • Go to your Add-on manager and disable all Internet Explorer extensions

    • There are many other reasons why Internet Explorer doesn’t render images, search on google: Internet Explorer images not showing

Glitches, unstable UI and cosmetic issues on Linux

On the Linux SoftConsole 6.1 (and newer) the GTK2 support is removed and it might cause incorrectly rendered UI elements in some cases and on some distributions even unstable UI. Distributions such as RHEL 6.x and CentOS 6.x which provide only GTK2 are not supported anymore. These distributions do not provide GTK3, unless the user is allowed and able to compile and install all dependencies and whole GTK3 subsystem on their RHEL 6.x / CentOS 6.x machines, then they will not be able to use SoftConsole 6.1 without issues. Second workaround is not trivial as well which involves installing Docker 1.7.1 (the highest version which can run on such legacy kernel, unless user wants to recompile the Docker from sources). And installing SoftConsole inside docker container (Debian9 was tested), it is possible to tunnel the X11 application and share the host’s FlashPro5. Running a VM with newer OS can be used only if Renode is targeted, but it will not allow user to interact with real HW as the FlashPro5 driver will not work inside the VM. An upgrade of the OS should be the easiest way to resolve this issue.

Tab with an error message is opened before breaking into the main function

The following error can be observed (with different addresses):

Break at address "0x1000" with no debug information available, or outside of program code.

Before loading the elf to the target it might be executing something which is not resolved. Sometimes it is possible to resolve the issue by specifying the sysroot, but this is not reliable as the target might be executing the previous project. Or in case of Renode no project at all.

http://visualgdb.com/gdbreference/commands/set_sysroot

When the following checkbox:

digraph {
         graph [rankdir="LR", ranksep=.01, bgcolor=transparent];
         node [fontname="Verdana", fontsize="9", shape="rectangle", width=.1, height=.2, margin=".04,.01", style=filled, fillcolor=white];
         edge [arrowsize=.7];
         "Window" -> "Preferences" -> "C/C++" -> "Debug" -> "Source Not Found" -> "Only if source file name is known but not found"
     }

Is checked then error message/tab can be suppressed.