avrdude
대상 마이크로컨트롤러에 프로그램을 다운로드할 수 있는 간단한 도구입니다. 완전성을 위해 내가 실행하려는 명령은 다음과 같습니다.
avrdude -p atmega328p -c usbtiny -P usb -v -U -flash:w:program.hex
이 명령을 실행할 때마다 오류가 발생하며 이를 작동시키려면 'Operation not permitted"
이 명령을 실행해야 합니다 . sudo avrdude ..
이렇게 해야 한다는 필요성을 이상하게 느꼈기 때문에 문제를 더 깊이 파고들었습니다.
내가 사용하는 프로그래머들은 스스로 설치 /dev/ttyUSB0
하고 그룹의 일부가 됩니다 dialout
. 또한 장치에는 dialout
그룹의 모든 사용자가 장치에 쓸 수 있는 권한이 있으며, 이는 위 명령이 수행하는 작업입니다.
crw-rw---- 1 root dialout 188, 0 Jul 15 02:04 ttyUSB0
하지만root
가지다장치를 다이얼아웃 그룹에 추가하는 것만으로도 장치를 사용할 수 있는 것으로 보입니다. 이 일을 하고 난 후에 나는아직오류가 발생했습니다 "Operation not permitted"
.
그러다가 avrdude
프로그램 자체의 문제가 아닌가 하는 생각이 들었습니다. 바이너리를 찾은 후에는 /usr/bin
파일에 대한 권한을 고려할 때 이것이 문제가 아니라는 것이 분명해졌습니다.
-rwxr-xr-x 1 root root 413888 Oct 21 2013 avrdude
너무 길어요.나는 적절한 그룹에 속해 있고 파일에는 해당 파일을 사용할 수 있는 권한이 있지만 먼저 내 권한을 높이지 않으면 해당 파일을 사용할 수 없습니다.
답변1
/dev/bus/usb
USB 장치에 대한 낮은 수준의 제어는 장치에 대한 올바른 권한을 설정하여 수행됩니다 . 이를 수행하는 방법은 udev 규칙을 사용하는 것입니다:
다음 명령(예 /etc/udev/rules.d/52_local-usbtiny.rules
: )을 사용하여 파일을 생성합니다.
SUBSYSTEM=="usb", ATTR{idVendor}=="1781", ATTR{idProduct}=="0c9f", MODE="664", GROUP="plugdev"
그러면 그룹이 로 설정됩니다 . 이를 사용하여 소유자를 설정할 plugdev
수 있습니다 .USER="your-user-name"
그런 다음 udev(예: service udev force-reload
또는 systemctl reload udev
)를 다시 로드합니다. 새로운 권한은 다음에 프로그래머를 분리했다가 다시 연결할 때 적용됩니다.