2016年11月1日火曜日

Ubuntuからatmega32u4を使うArduinoにプログラム書き込もうとしたら出たエラーの対応方法


エラーの内容と対応方法を共有します。

動作環境とエラーの内容

Arduino IDE

OS: Ubuntu16.04
Platform: Arduino IDE 1.6.12
Boad: Arduino Leonardo

発生したエラー
Arduino: 1.6.12 (Linux), Board: "Arduino Leonardo"

Sketch uses 5,674 bytes (19%) of program storage space. Maximum is 28,672 bytes.
Global variables use 219 bytes (8%) of dynamic memory, leaving 2,341 bytes for local variables. Maximum is 2,560 bytes.
avrdude: ser_open(): can't open device "/dev/ttyACM0": Device or resource busy
Problem uploading to board. See http://www.arduino.cc/en/Guide/Troubleshooting#upload for suggestions.

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

PlatformIO

OS: Ubuntu18.04
Platform: PlatformIO 4.1.0
Boad: ProMicro

発生したエラー
avrdude: writing flash

Writing | ##########################
 ***failed;
 ***failed;
 ***failed;
 ***failed;
 ***failed;
 ***failed;
 ***failed;
 ***failed;
 ***failed;
 ***failed;
 ***failed;
 ***failed;
 ***failed;

これが発生するとatmega32u4のプログラムが壊れるからかUSB機器として動かなくなります。

そうなった場合は、Arduinoを2回素早くリセットして書き込みモードとして起動してこのエラーが発生しないPCからプログラムを書き込むか、ファームウェアを書き直すと復活することがあります。

ファームウェアの書き込みは下記の記事が参考になると思います。
Atmega32u4にArduino Leonardoのブートローダーを書き込んでみた

対応方法

モデムのプログラムを消すとエラーが発生しなくなりました。
sudo apt --purge remove modemmanager

以上です。

参考

The Linux ttyACM0 drama - more details after a lot of experimenting

変更履歴

2020.01.04
PlatformIOを利用していた時に発生した「***failed;」が連続するエラーもこの記事の対応方法で解決できたので、情報を追加しました。

0 件のコメント :