Issues with Arm Compatible Tools

In some rare instances, all Arm compatible tools disappear from Atmel Studio. This has been tracked down to different dll load strategies used in different versions of Windows.

To check that it is a dll load error, try to read out the chip information using atprogram. This can be done by opening the Atmel Studio command prompt from the Tools menu inside Atmel Studio or the start menu. In the command prompt, enter the following command and check that it does not fail.

atprogram -t <tool> -i <interface> -d <device> info

In the snippet above, replace <tool> with the tool name, e.g., atmelice, samice or edbg. Likewise, replace interface with the used interface and the device with the full device name, e.g., atsam3s4c.

Invoking the above command should output information about the memory layout, the supply voltage for the chip, and the fuse settings. If it fails, it is likely a driver issue, which is covered by Driver and USB Issues.

If the atprogram can communicate with the device, it means that the issue is most likely a wrong version of JLinkArm.dll being loaded due to loader precedence. To check this, use the Procmon tool to check what dll is being loaded.

Download the Procmon tool, open it, and configure the filter as shown in the figure below and start Atmel Studio. A couple of seconds after Atmel Studio has started, one line should become visible showing the path to where the dll is being loaded from. It should be loaded from the atbackend folder inside the Atmel Studio installation directory.

Figure 1. Procmon Filter Configuration

If the path of the dll is different, it means that Atmel Studio has picked up the wrong dll, and this dll is incompatible with the dll shipped with Atmel Studio. An example of this is shown in the figure below.

Figure 2. Procmon Filter Configuration

To solve the above issue, we recommend backing up the dll that is being loaded and then replacing it with the JLinkArm.dll found in the atbackend directory inside the Atmel Studio installation directory. This can be done given the assumption that the dll bundled with Atmel Studio is newer than the one being loaded, and the dll is backward compatible.

Note: Remember to back up the offending JLinkArm.dll before replacing it, as it is not given that it will be compatible with the program that deployed it.