[riot-devel] edbg build failure in Vagrant VM due to missing libudev-devpackage + problems flashing Atmel samr21-xpro board

Adrian Herrmann adrian.herrmann at fu-berlin.de
Mon May 29 10:21:51 CEST 2017

Dear RIOT development team,

Attempting to flash with the edbg driver instead of OpenOCD results in an error when using the Vagrant VM as building edbg requires the libudev-dev package, which is not included in the image and cannot be found in the configured package repositories either.

gcc  -W -Wall -Wextra -O2 -std=gnu99 dap.c edbg.c target.c target_atmel_cm0p.c target_atmel_cm3.c target_atmel_cm4.c target_atmel_cm7.c dbg_lin.c -ludev -o edbg
dbg_lin.c:42:21: fatal error: libudev.h: No such file or directory
#include <libudev.h>
compilation terminated.
Makefile:43: recipe for target 'edbg' failed
make[2]: *** [edbg] Error 1
Makefile:10: recipe for target 'all' failed
make[1]: *** [all] Error 2
/home/vagrant/RIOT/makefiles/tools/targets.inc.mk:14: recipe for target '/home/vagrant/RIOT/dist/tools/edbg/edbg' failed
make: *** [/home/vagrant/RIOT/dist/tools/edbg/edbg] Error 2 

A possible workaround would be switching to OpenOCD but I’m getting the following error when trying to flash applications on my Atmel samr21-xpro board with OpenOCD:

Error: at91samr21g18.cpu -- clearing lockup after double fault
Polling target at91samr21g18.cpu failed, trying to reexamine
Info : at91samr21g18.cpu: hardware has 4 breakpoints, 2 watchpoints
    TargetName         Type       Endian TapName            State
--  ------------------ ---------- ------ ------------------ ------------
0* at91samr21g18.cpu  cortex_m   little at91samr21g18.cpu  halted
target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0x61000000 pc: 0x000003ec msp: 0x20000200
auto erase enabled
Info : SAMD MCU: SAMR21G18A (256KB Flash, 32KB RAM)
Error: error writing data: (null)
Info : SWD IDCODE 0x0bc11477
Error: Failed to write memory at 0x41004006
Error: Failed to erase row containing 0000af00
Error: SAMD: failed to erase sector 2
Error: failed erasing sectors 0 to 3

../../Makefile.include:364: recipe for target 'flash' failed
make: *** [flash] Error 1

As such, I have resorted to building edbg myself outside of Vagrant (in lxss), however, I get another error message then:

             Error: unknown target device (DSU_DID = 0x10010319)

Apparently I’m using an unconsidered revision of the Atmel samr21-xpro board. I could fix this by adding the following line to static device_t devices[] in /dist/tools/edbg/bin/target_atmel_cm0p.c:

             { 0x10010319, "SAM R21G18A",         0, 256*1024, 64, 4096, 256 },

Flashing now works, though very inconsistently. Very often, the flashing will fail with a connection timeout that can happen both during the programming and verification phases. The larger the binary file to flash, the more likely the connection is to timeout. I’ve been able to flash smaller binaries with OpenOCD so I suspect a similar or the same problem is at fault when using OpenOCD, causing the error message above. Unfortunately, I don’t know where the root of the problem is. At least with OpenOCD I have tried different boards and different USB cables to no avail. I can try other boards with edbg on Monday but I expect them to fail as well, in which case a problem with the particular board shouldn’t be the root cause (this is reinforced by the fact that somebody else tried to flash larger binaries on my board via OpenOCD, which did work, albeit not using a VM but directly on Linux). Other possible root causes could be a problem with either Vagrant (less likely in my opinion), Oracle VM VirtualBox, my host OS (Windows 10 version 1703) or even my particular PC hardware (Surface Pro 3) but I don’t know how I could proceed further to identify the cause.

If you’d like I can create a pull request for the change to /dist/tools/edbg/bin/target_atmel_cm0p.c and/or add issues to the repo for the problems described.

Best regards,
Adrian (student of Freie Universität Berlin)

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.riot-os.org/pipermail/devel/attachments/20170529/61db0e89/attachment.html>

More information about the devel mailing list