2015년 2월 17일 화요일

ESP8266 펌웨어 업데이트 하기

ESP8266의 펌웨어를 업데이트 하려면 GPIO0가 GND에 연결된 상태로 전원이 켜져 UART UPGRADE 모드가 되어야 한다. 이 상태에서 컴퓨터에서 업데이트 프로그램을 실행하면 된다. 현재 GUI로 동작하는 툴은 윈도우용만 나와있다. 
하지만 커맨드라인에서 사용할 수 있는 esptool을 사용하면 맥이나 리눅스에서도 문제없이 펌웨어 업데이트가 가능하다. 

esptool은 GitHub에서 다운받을 수 있다. esptool을 사용하려면 pyserial이 미리 설치되어 있어야만 한다.

설치가 되었고 ESP8266이 UART UPGRADE 모드인 경우 다음과 같이 명령을 주면 된다.

./esptool.py --port [Serial port] write_flash [address] [filename]

[Serial port]에는 ESP8266이 연결되어 있는 시리얼 포트 디바이스 이름을 써주면 된다. 디폴트는 /dev/ttyUSB0로 되어 있다. 
[filename]이 지정한 바이너리 파일의 내용을 ESP8266의 [address]가 가르키는 주소에 기록을 하게 된다.

아래는 맥에서 0.95 펌웨어로 업데이트 하는 예제이다.

$ ./esptool.py /dev/tty.usbserial-A4013ESQ write_flash 0x00000 AI-v0.9.5.0\ AT\ Firmware\ \(1\).bin
Connecting...
Erasing flash...
Writing at 0x0007ec00... (100 %)

Leaving...

위와 같이 되면 업데이트가 끝난 것이다. 이제 다시 부팅해서 시리얼 터미널을 열고 아래 명령을 입력해보면 새로운 펌웨어로 동작하는걸 확인할 수 있다.

AT+GMR
00200.9.5(b1)
compiled @ Dec 25 2014 21:40:28
AI-THINKER Dec 25 2014

OK

바이너리 파일이 여러개로 되어 있는 경우는 write_flash 뒤의 [address] [filename] 부분을 반복적으로 써 주면 된다. 즉 file1.bin은 0x00000 번지에 쓰고, file2.bin은 0x40000 번지에 쓰고 싶으면 esptool.py --port /dev/ttyusbserial-A4013ESQ write_flash 0x0000 file1.bin 0x40000 file2.bin 으로 하면 된다.



댓글 없음:

댓글 쓰기