레이블이 esptool인 게시물을 표시합니다. 모든 게시물 표시
레이블이 esptool인 게시물을 표시합니다. 모든 게시물 표시

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 으로 하면 된다.