[Arduino] 바이너리 파일을 Arduino에 쓰는 방법
소개
이번은 전회의 기사에 관련되는 내용이므로, 아직 읽혀지지 않은 분은 꼭 부탁합니다.
또, 전회와 같이 avrdude라고 하는 툴을 사용하므로 도입이 아직의 분도 처음에 참조해 주세요.
↓↓↓↓↓↓↓↓↓
[아두이노] 아두이노에서 쓴 바이너리를 빨아들인다
실행 환경
· ArduinoUno : 바이너리를 빼내는 쪽
· UNIROI의 ArduinoUno 호환 녀석
・ArduinoIDE 1.8.13에 부속되는 avrdude
(avrdude: Version 6.3-20190619)
우선 해보자
아래 샘플 코드를 작성한 Arduino에서 추출한 바이너리를 다른 Arduino 호환 보드에 작성해보십시오.
보시다시피 Arduino에있는 LED를 깜박이는 프로그램입니다.
void setup() {
// put your setup code here, to run once:
pinMode(13,OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(13,HIGH);
delay(500);
digitalWrite(13,LOW);
delay(500);
}
Arduino에 프로그램을 쓰면 이런 느낌의 동작을 합니다.
이 프로그램을 작성한 Arduino에서 마지막 기사의 순서로 바이너리를 추출합니다.
추출한 바이너리를 이 다른 보드에 씁니다. 보시다시피 쓰기 전에 LED가 깜박이지 않습니다.
쓰기
다음 명령을 실행했습니다. (자세한 명령 설명은 나중에 설명합니다)
avrdude -C../etc/avrdude.conf -F -v -pm328p -cstk500v1 -P/dev/cu.usbmodem1463201 -b115200 -D -Uflash:w:program.bin:r
다음과 같이 출력되었습니다.
출력 예
avrdude: Version 6.3-20190619
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2014 Joerg Wunsch
System wide configuration file is "../etc/avrdude.conf"
User configuration file is "/Users/p_x9/.avrduderc"
User configuration file does not exist or is not a regular file, skipping
Using Port : /dev/cu.usbmodem14601
Using Programmer : stk500v1
Overriding Baud Rate : 115200
AVR Part : ATmega328P
Chip Erase delay : 9000 us
PAGEL : PD7
BS2 : PC2
RESET disposition : dedicated
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
ByteDelay : 0
PollIndex : 3
PollValue : 0x53
Memory Detail :
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
eeprom 65 20 4 0 no 1024 4 0 3600 3600 0xff 0xff
flash 65 6 128 0 yes 32768 128 256 4500 4500 0xff 0xff
lfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
hfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
efuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
lock 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00
Programmer Type : STK500
Description : Atmel STK500 Version 1.x firmware
Hardware Version: 3
Firmware Version: 4.4
Vtarget : 0.3 V
Varef : 0.3 V
Oscillator : 28.800 kHz
SCK period : 3.3 us
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.01s
avrdude: Device signature = 0x000000 (retrying)
Reading | ################################################## | 100% 0.01s
avrdude: Device signature = 0x000000 (retrying)
Reading | ################################################## | 100% 0.01s
avrdude: Device signature = 0x000000
avrdude: Yikes! Invalid device signature.
avrdude: Expected signature for ATmega328P is 1E 95 0F
avrdude: safemode: lfuse reads as 0
avrdude: safemode: hfuse reads as 0
avrdude: safemode: efuse reads as 0
avrdude: reading input file "program.bin"
avrdude: writing flash (32768 bytes):
Writing | ################################################## | 100% 5.64s
avrdude: 32768 bytes of flash written
avrdude: verifying flash memory against program.bin:
avrdude: load data flash data from input file program.bin:
avrdude: input file program.bin contains 32768 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 4.19s
avrdude: verifying ...
avrdude: 32768 bytes of flash verified
avrdude: safemode: lfuse reads as 0
avrdude: safemode: hfuse reads as 0
avrdude: safemode: efuse reads as 0
avrdude: safemode: Fuses OK (E:00, H:00, L:00)
avrdude done. Thank you.
그러면...
아래와 같이 LED가 점멸하게 되었습니다.
명령 설명
avrdude -C../etc/avrdude.conf -F -v -pm328p -cstk500v1 -P/dev/cu.usbmodem1463201 -b115200 -D -Uflash:w:program.bin:r
-C 옵션
config 파일을 지정합니다. 아마도 다음 경로에 있다고 생각합니다.
Arduino.app/Contents/Java/hardware/tools/avr/etc/avrdude.conf
-p 옵션
순서 2에서 조사한 마이크로 컴퓨터의 종류를 지정합니다. 여기 에서 대응표를 볼 수 있습니다.
Arduino Uno는 ATmega328P이므로 m328p였습니다.
-P 옵션
포트 이름을 지정합니다. 모르는 경우는 마지막 기사 로 설명하고 있으므로 참조해 주세요.
-b 옵션
여기에서는 전송 속도를 지정합니다.
-U 옵션
여기에 쓸 바이너리 파일을 지정합니다. 이번에는 program.bin을 작성하므로 위와 같이 지정하고 있습니다.
바이너리 이외의 파일을 쓰는 경우
-U 옵션의 맨 마지막 r 부분에서 쓸 파일의 형식을 지정합니다. 이번은 바이너리이므로 r을하고 있습니다만, hex 형식 등에 대응하고 있습니다.
서식
지정 형식
인텔 헥스
i
원시 binary
r
자동 감지
a
사이고에게
이상 바이너리를 Arduino에 쓰는 방법이었습니다. 도움이 되는 것은 꽤 국소적일지도 모르지만, 예를 들어 프로그램 파일은 없었지만 쓴 보드는 있을 때마다 유용할지도 망상하고 있습니다. 그 밖에도 뭔가 도움이 되는 길이 있으면 코멘트등으로 가르쳐 주세요.
평상시는 취미로 iOS 앱을 개발하거나 여러가지 이상한 일도 하고 있으므로 꼭 트위터 도 들여다 봐 주세요.
[참고]
↓ 이것을 읽으면 완벽
htps //w w. cs. 오! 에즈 / ~ 큁 g / c ぁせ s / 게네라 l / 아 t l / 아 vr 즈. pdf
Reference
이 문제에 관하여([Arduino] 바이너리 파일을 Arduino에 쓰는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/p_x9/items/1bdeac5e5328ae3d113e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
아래 샘플 코드를 작성한 Arduino에서 추출한 바이너리를 다른 Arduino 호환 보드에 작성해보십시오.
보시다시피 Arduino에있는 LED를 깜박이는 프로그램입니다.
void setup() {
// put your setup code here, to run once:
pinMode(13,OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(13,HIGH);
delay(500);
digitalWrite(13,LOW);
delay(500);
}
Arduino에 프로그램을 쓰면 이런 느낌의 동작을 합니다.
이 프로그램을 작성한 Arduino에서 마지막 기사의 순서로 바이너리를 추출합니다.
추출한 바이너리를 이 다른 보드에 씁니다. 보시다시피 쓰기 전에 LED가 깜박이지 않습니다.
쓰기
다음 명령을 실행했습니다. (자세한 명령 설명은 나중에 설명합니다)
avrdude -C../etc/avrdude.conf -F -v -pm328p -cstk500v1 -P/dev/cu.usbmodem1463201 -b115200 -D -Uflash:w:program.bin:r
다음과 같이 출력되었습니다.
출력 예
avrdude: Version 6.3-20190619
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2014 Joerg Wunsch
System wide configuration file is "../etc/avrdude.conf"
User configuration file is "/Users/p_x9/.avrduderc"
User configuration file does not exist or is not a regular file, skipping
Using Port : /dev/cu.usbmodem14601
Using Programmer : stk500v1
Overriding Baud Rate : 115200
AVR Part : ATmega328P
Chip Erase delay : 9000 us
PAGEL : PD7
BS2 : PC2
RESET disposition : dedicated
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
ByteDelay : 0
PollIndex : 3
PollValue : 0x53
Memory Detail :
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
eeprom 65 20 4 0 no 1024 4 0 3600 3600 0xff 0xff
flash 65 6 128 0 yes 32768 128 256 4500 4500 0xff 0xff
lfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
hfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
efuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
lock 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00
Programmer Type : STK500
Description : Atmel STK500 Version 1.x firmware
Hardware Version: 3
Firmware Version: 4.4
Vtarget : 0.3 V
Varef : 0.3 V
Oscillator : 28.800 kHz
SCK period : 3.3 us
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.01s
avrdude: Device signature = 0x000000 (retrying)
Reading | ################################################## | 100% 0.01s
avrdude: Device signature = 0x000000 (retrying)
Reading | ################################################## | 100% 0.01s
avrdude: Device signature = 0x000000
avrdude: Yikes! Invalid device signature.
avrdude: Expected signature for ATmega328P is 1E 95 0F
avrdude: safemode: lfuse reads as 0
avrdude: safemode: hfuse reads as 0
avrdude: safemode: efuse reads as 0
avrdude: reading input file "program.bin"
avrdude: writing flash (32768 bytes):
Writing | ################################################## | 100% 5.64s
avrdude: 32768 bytes of flash written
avrdude: verifying flash memory against program.bin:
avrdude: load data flash data from input file program.bin:
avrdude: input file program.bin contains 32768 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 4.19s
avrdude: verifying ...
avrdude: 32768 bytes of flash verified
avrdude: safemode: lfuse reads as 0
avrdude: safemode: hfuse reads as 0
avrdude: safemode: efuse reads as 0
avrdude: safemode: Fuses OK (E:00, H:00, L:00)
avrdude done. Thank you.
그러면...
아래와 같이 LED가 점멸하게 되었습니다.
명령 설명
avrdude -C../etc/avrdude.conf -F -v -pm328p -cstk500v1 -P/dev/cu.usbmodem1463201 -b115200 -D -Uflash:w:program.bin:r
-C 옵션
config 파일을 지정합니다. 아마도 다음 경로에 있다고 생각합니다.
Arduino.app/Contents/Java/hardware/tools/avr/etc/avrdude.conf
-p 옵션
순서 2에서 조사한 마이크로 컴퓨터의 종류를 지정합니다. 여기 에서 대응표를 볼 수 있습니다.
Arduino Uno는 ATmega328P이므로 m328p였습니다.
-P 옵션
포트 이름을 지정합니다. 모르는 경우는 마지막 기사 로 설명하고 있으므로 참조해 주세요.
-b 옵션
여기에서는 전송 속도를 지정합니다.
-U 옵션
여기에 쓸 바이너리 파일을 지정합니다. 이번에는 program.bin을 작성하므로 위와 같이 지정하고 있습니다.
바이너리 이외의 파일을 쓰는 경우
-U 옵션의 맨 마지막 r 부분에서 쓸 파일의 형식을 지정합니다. 이번은 바이너리이므로 r을하고 있습니다만, hex 형식 등에 대응하고 있습니다.
서식
지정 형식
인텔 헥스
i
원시 binary
r
자동 감지
a
사이고에게
이상 바이너리를 Arduino에 쓰는 방법이었습니다. 도움이 되는 것은 꽤 국소적일지도 모르지만, 예를 들어 프로그램 파일은 없었지만 쓴 보드는 있을 때마다 유용할지도 망상하고 있습니다. 그 밖에도 뭔가 도움이 되는 길이 있으면 코멘트등으로 가르쳐 주세요.
평상시는 취미로 iOS 앱을 개발하거나 여러가지 이상한 일도 하고 있으므로 꼭 트위터 도 들여다 봐 주세요.
[참고]
↓ 이것을 읽으면 완벽
htps //w w. cs. 오! 에즈 / ~ 큁 g / c ぁせ s / 게네라 l / 아 t l / 아 vr 즈. pdf
Reference
이 문제에 관하여([Arduino] 바이너리 파일을 Arduino에 쓰는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/p_x9/items/1bdeac5e5328ae3d113e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
avrdude -C../etc/avrdude.conf -F -v -pm328p -cstk500v1 -P/dev/cu.usbmodem1463201 -b115200 -D -Uflash:w:program.bin:r
Arduino.app/Contents/Java/hardware/tools/avr/etc/avrdude.conf
이상 바이너리를 Arduino에 쓰는 방법이었습니다. 도움이 되는 것은 꽤 국소적일지도 모르지만, 예를 들어 프로그램 파일은 없었지만 쓴 보드는 있을 때마다 유용할지도 망상하고 있습니다. 그 밖에도 뭔가 도움이 되는 길이 있으면 코멘트등으로 가르쳐 주세요.
평상시는 취미로 iOS 앱을 개발하거나 여러가지 이상한 일도 하고 있으므로 꼭 트위터 도 들여다 봐 주세요.
[참고]
↓ 이것을 읽으면 완벽
htps //w w. cs. 오! 에즈 / ~ 큁 g / c ぁせ s / 게네라 l / 아 t l / 아 vr 즈. pdf
Reference
이 문제에 관하여([Arduino] 바이너리 파일을 Arduino에 쓰는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/p_x9/items/1bdeac5e5328ae3d113e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)