본문 바로가기

아두이노/NodeMCU

ESP8266 - SPIFF



SPIFFS 란?



SPIFFS :

SPI Flash Filing System으로 RAM이 거의 없는 제한된 임베디드 마이크로 프로세서 시스템에서 SPI 플래시 장치 용으로 설계되었다.


SPIFFS의 역할 :

  • 낮은 램 사용을 위해 특별히 설계
  • 파일 수에 관계없이 정적으로 크기가 지정된 램 버퍼를 사용
  • Posix-like api : open, close, read, write, seek, stat, etc
  • Implements static wear leveling으로 시스템 플래쉬의 수명을 연장

SPIFF가 지원하지 않는 것 :
  • SPIFF는 디렉토리를 지원하지 않으며 플랫 구조를 사용한다.
    tmp/myfile.txt 경로로 파일을 생성하면 tmp 디렉토리 안에 myfile.txt를 생성하는 대신 tmp/myfile.txt라는 파일을 생성
  • 실시간 스택이 아님. 파일 저장시 다른 작업보다 오래 걸리며 속도가 느리다.
    시작, 종료 시간에 제한 받는 활동이 아닌 경우에 유용하다.
  • bed block를 감지하거나 처리하지 않는다.

ESP8266 MCU SPIFFS


ESP8266 MCU의 제품에는 4MByte의 SPIFF가 장착되어 있다.

이중 1M가 프로그램 영역의 Flash 메모리로 사용이 되고 나머지 3MByte가 SPIFFS 영역으로 사용된다.


SPIFFS의 일부를 EEPROM으로도 사용하기 때문에 3MByte중에서 EEPROM으로 할당한 양을 제외한 영역을 사용할 수 있다.

여기에 저장된 데이터를 MCU가 리셋되어도 변경되지 않지만 속도가 느리기에 자주 변경 되는 데이터의 사용에는 제한적이다.



Arduino IDE에 ESP8266 파일 시스템 업로더 설치


  1. GitHub(https://github.com/esp8266/arduino-esp8266fs-plugin/releases)에서 다운로드
  2. ESP8266FS-0.3.0.zip 

  3. 아두이노 스케치북 디렉토리에서 'tools'폴더를 생성한다.
    아두이노 스케지북 디렉토리는 아두이노 IDE에서 File > Preferences > Sketchbook location에서 확인하면된다.
  4. 'tools'디렉토리 밑으로 다운 받은 파일을 압축해제한다.
    (<sketchbook directory>/tools/ESP8266FS/tool/esp8266fs.jar)
  5. Arduino IDE 재실행한다.



ESP8266에서 Flash Memory 확인 방법

'CheckFlashConfig.ino' 스케치를 사용하여 시리얼 모니터에서 확인하는 방법이 가장 안전하다.

소스 프로그램은 예제파일에 'ESP8266'에서 확인할수 있다.




ESP8266 SPIFFS에 File Upload


  1. 스케치 디렉토리에 'data' 디렉토리 생성.
  2. 업로드 파일을 'data'디렉토리에 저장.
  3. 'Tools(툴)' 메뉴에서 보드를 선택하고(ex NodeMcu1.0) 'Flash Size'에서 SPIFFS 크기를 선택한다.
  4. 시리얼모니터(Serial Monitor)는 종료되어 있어야 한다.
  5. 업로드를 위해 ESP8266 장치 준비 
    (1) 보드에 'Flash' 스위치를 누른상태에서
    (2) 'Reset' 버트을 한번 누른 후에
    (3) 'Flash'스위치를 놓아준다.
  6. 'Tools(툴)' 메뉴에서 'ESP8266 Sketch Data Upload' 실행한다.
  7. 업로드가 완료되면 메시지창에 100% 업로드 완료표시가 나타난다.
참고. 
  1. 'SPIFFS Upload failed!' 되면 FTDI를 재 연결하여 다시 업로드를 진행하여야 한다.
  2. SPIFFS의 Data는 프로그램 코드와 독립적으로 업로드 할 수 있다.
  3. 'Flash Size'를 변경하는 경우 프로그램 과 SPIFFS의 data를 재로드 하여야 한다.


'아두이노 > NodeMCU' 카테고리의 다른 글

NodeMCU 특징  (0) 2019.02.28
NodeMCU  (0) 2019.02.28
NodeMCU 를 Arduino IDE에서 사용하기위한 환경 설정방법  (0) 2019.02.22