본문 바로가기
임베디드 개발/STM32 (ARM Cortex-M)

STM32 ] TFTP Server 파일 송수신 + USB Host MSC

by eteo 2023. 4. 15.

 

 

 

int main(void) {

	HAL_Init();

	SystemClock_Config();

	MX_GPIO_Init();
	MX_USART3_UART_Init();
	MX_FATFS_Init();
	MX_USB_HOST_Init();
	MX_LWIP_Init();

	tftpd_init();

	while (1) {
		MX_LWIP_Process();
        
		MX_USB_HOST_Process();
	}
}

 

 

 

 

 

 

 

USB와 랜케이블 연결

 

 

 

 

 

 

 

 

 

 

 

아래경로에서 tftpd64 를 다운받아 설치한다.

 

https://bitbucket.org/phjounin/tftpd64/downloads/

 

phjounin / tftpd64 / Downloads — Bitbucket

For large uploads, we recommend using the API. Get instructions

bitbucket.org

 

 

 

 

 

 

TFTP Client 탭을 선택한 뒤 보드의 고정 IP와 포트 69번, 전송할 파일을 선택하고 Put을 클릭한다.

 

 

 

 

 

 

USB를 빼서 PC에 연결 후 확인하면 그림파일이 바이너리로 잘 전송된 것을 확인할 수 있다.

 

 

송신 확인

 

 

Wireshark에서 TFTP 패킷의 각 필드를 까서 보여준다.

 

처음 Client가 WRQ 패킷을 송신할 때 52047 포트를 사용했다.

 

다음 서버가 Block #0에 대한 ACK를 송신할때 62510포트를 사용해 클라이언트의 52047포트로 보냈다.

 

이후에는 계속 이 포트들을 사용해 transfer를 하게 된다.

 

last DATA packet과 last ACK

 

 

 

 

 

 

 

다음으로 서버로부터 파일을 수신받는 건 먼저 서버에 있는 Remote File Name을 지정해야하고, Local File 부분에 저장할 파일명을 풀 경로와 함께 써주어야 한다. 그리고 Get Button을 누른다.

 

 

 

 

 

 

 

수신확인 완료

 

이걸 사용해 부트로더를 만들어 보려고하는게 예제로 제공되는 방식을 사용하진 않고 변형하려고 한다.