This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

nrfjprog wants JLinkARM.dll on linux

First, obviously error message is not correct, dll's are not used on linux. Message should give correct file name instead of prewritten one.

I have installed latest JLink 5.02g. And tried both 32 and 64 bit versions. I tried to see with strace what goes wrong, but it seems to me that nrfjprog reads successfully libjlinkarm_nrf51_nrfjprogdll.so but still decides to fail.

Here is tail of the strace output;

open("/opt/JLink_Linux_V502g_i386/libjlinkarm_nrf51_nrfjprogdll.so", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220\20\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=55408, ...}) = 0 mmap(NULL, 2151920, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f090bc92000 mprotect(0x7f090bc9f000, 2093056, PROT_NONE) = 0 mmap(0x7f090be9e000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xc000) = 0x7f090be9e000 close(3) = 0 mprotect(0x7f090be9e000, 4096, PROT_READ) = 0 open("/opt/SEGGER/JLink/libnrfjprogdll.so.7", O_RDONLY|O_CLOEXEC) = 3 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\240\20\0\0\0\0\0\0"..., 832) = 832 fstat(3, {st_mode=S_IFREG|0755, st_size=22640, ...}) = 0 mmap(NULL, 2118248, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f090ba8c000 mprotect(0x7f090ba91000, 2093056, PROT_NONE) = 0 mmap(0x7f090bc90000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x4000) = 0x7f090bc90000 close(3) = 0 mprotect(0x7f090bc90000, 4096, PROT_READ) = 0 munmap(0x7f090bc92000, 2151920) = 0 munmap(0x7f090bea0000, 2118248) = 0 write(2, "ERROR: JLinkARM.dll load failed."..., 71ERROR: JLinkARM.dll load failed. Try again. If it keeps failing, please) = 71 write(2, "\n", 1 ) = 1 write(2, "ERROR: reinstall latest JLinkARM"..., 57ERROR: reinstall latest JLinkARM.dll from Segger webpage.) = 57 write(2, "\n", 1 ) = 1 exit_group(32) = ?

Parents Reply
  • I believe the original problem of this post was due to a bug in the nrfjprog executable and the executable being placed inside the SEGGER/JLink folder, and it saying the .dll was needed and not a .so. This should have been resolved, but i would still not recommend placing the nrfjprog files inside the SEGGER/JLink folder structure as this structure can change based on how SEGGER releases their tools.

    Creating a link to libjlinkarm.so inside the nrfjprogs folder should also work, but then i would rather suggest adding this link to the /usr/lib or /lib folder as would be the proper way to get this working. nrfjprog uses dlopen() as mentioned here: infocenter.nordicsemi.com/index.jsp, and dlopen() will automatically search /lib and /usr/lib.

Children
No Data
Related