esp8266 FTP 서버의 전송 속도를 개선하는 방법을 여러가지 찾아보고 적용해 봤습니다.
전송 속도에 관련된 사항은 다음과 같습니다.
1. WIFI FTP BUFFER 의 크기 : ESP8266FtpServer.h 파일에 FTP_BUF_SIZE 로 정의가 되어 있는데,
크기가 기본으로 1024 // 512 로 설정되어 있는데 이 설정으로는 너무 느리다.
512 로 9KB/s , 1024로 18KB/s 밖에 안나온다.
하지만 이 크기를 1460 의 배수인 1460*2 로 바꾸면 460KB/s 의 속도가 나온다.
이 속도는 SD-Card에서 읽어서 PC로 전송하는 속도이고, SPI Single 방식의 SD-Card Write 시에는 약 86KB/s 가 나온다.
즉, SD 카드를 읽는 데는 엄청 빠른데, 쓸 때는 SPI Single 에다가 Write 할 동안 기다려야 하므로 아주 느리다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #include <SPI.h> #include <SD.h> //#include <FS.h> #include <WiFiClient.h> #define FTP_SERVER_VERSION "FTP-2016-01-14" #define FTP_CTRL_PORT 21 // Command port on wich server is listening #define FTP_DATA_PORT_PASV 50009 // Data port in passive mode #define FTP_TIME_OUT 5 // Disconnect client after 5 minutes of inactivity #define FTP_CMD_SIZE 255 + 8 // max size of a command #define FTP_CWD_SIZE 255 + 8 // max size of a directory name #define FTP_FIL_SIZE 255 // max size of a file name //#define FTP_BUF_SIZE 1024 //512 // size of file buffer for read/write #define FTP_BUF_SIZE 2*1460 | cs |
2. CPU Clock 속도 Up : 80MHz 에서 160MHz 로 올리면 조금 더 빨라진다.
3. SPI CLK 속도 UP : 현재 24MHz 까지 올렸는데 50MHz 까지 올려 볼 예정이다.
이 과정은 선 길이에 영향을 많이 받기 때문에, PCB가 나와봐야 알 수 있을 것이다.
버퍼 크기는 1460 배수가 아니면 속도 차가 읽기 모드에서 최대 51배나 차이가 납니다.
쓰실 때, 꼭 알아두세요. ^^
다음은 FTP 서버에서 PC로 전송시 속도를 동영상으로 찍어 봤습니다.
'ESP8266' 카테고리의 다른 글
[ESP8266] SD-Card(SPI-mode) 핀/스피드 설정 (0) | 2017.02.13 |
---|---|
[ESP8266] SmartConfig 소개(Arduino IDE 버전). (0) | 2017.02.13 |
[ESP8266] WiFi FTP Server with SD-Card[4] (디렉토리 읽기 개선) (0) | 2017.02.13 |
[ESP8266] 아두이노 자주 쓰는 함수 및 문법 링크 (0) | 2017.02.13 |
[ESP8266] EEPROM Test (Arduino IDE) (0) | 2017.02.13 |