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.
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.
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.