STM32F4

[STM32F4xx] USB MSC (SD-Card FAT32) 의 속도 비교.

트라이문 2018. 9. 6. 19:52

SDIO - 4Bit 방식으로 SD-Card 를 STM32F4xx 와 연결했고,

USB MSC(Mass Storage Class) 로 PC 와 연결하면 USB Drive 가 생성되는 프로그램에서 테스트한 결과입니다.

우선, SDIO-4bit , SDIO CLK-42MHz 로 설정했는데 USB MSC로 동작 시키면 생각 보다 너무 느립니다.
몇 MByte/s 쯤 나오지 않을까 생각 했는데 1MByte/s 도 안나옵니다.

기본적인 원인은 USB_FS 최대 속도가 12Mbit/sec (1.5MByte/s) 라는 점입니다.
여러가지 콘트롤을 위한 패킷을 빼면 1Mbyte 정도 나오리라 예상이 되는데, 그래서 몇 MByte/s 는 나올리가 없는 것이죠.




다음은 SDIO CLK 을 여러가지 값으로 변경시의 속도 입니다. 
위의 USB Speed 를 SDIO CLK 테스트를 해 보고 나서 알아서, 왜 이런 쓰잘떼기 없는 테스트를 했나 하는 자괴감이 드네요. ㅜㅜ
[아래 그림의 번호 설명]
1. 약 3MByte 의 파일 5개를 PC에서 STM32F4xx 의 USBMSC 로 Copy.
2. 약 3MByte 의 파일 5개를 STM32F4xx 의 USBMSC에서  PC로 Copy.
3. 약 250MByte 의 파일 1개를 PC에서 STM32F4xx 의 USBMSC 로 Copy.
4. 약 250MByte 의 파일 1개를 STM32F4xx 의 USBMSC에서  PC로 Copy.




혹시 Sector 의 크기와 속도의 관계는 없는 것인가 하는 생각에, 섹터 크기를 CUBEMX 툴 설정에서 512 에서 4096으로 늘려서 테스트 해 봤습니다. 




별 차이 없었습니다.




섹터를 변경할 때에, MSC 에 의해 생성된 USB Drive 포맷도 할당 단위 크기를 변경해서 수행했습니다.
섹터의 크기는 디스크의 반응 속도에 영향을 미쳤습니다.
섹터가 많으면 그 만큼 파일을 검색하는 시간이 많이 걸리는 듯 하여, 더 많은 시간이 지나야 USB Drive 가 PC에서 나타나네요.
즉, USB MSC 의 할당 단위가 크면(512바이트 보다 4096 바이트가) 응답 속도가 빠르다.





참고 : [USB 버전 별 속도 비교]