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 from 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 atprogram
is able to 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 shown in the figure below. Then 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 that is being loaded, and the dll is backward compatible.