A custom bootloader and FOTA update mechanism for the STM32L152RE.
It supports HTTP updates using the W5500 module from Wiznet.
0
Project description
1) Introduction
본 프로젝트는 STM32L152RE MCU에 대해 직접 개발한 커스텀 부트로더를 기반으로, HTTP 프로토콜을 이용한 FOTA(Firmware Over-The-Air) 업데이트 기능을 구현한 사례이다.
특히 무선 통신이 아닌, WIZnet W5500 하드웨어 TCP/IP Ethernet 모듈을 사용하여 안정적인 유선 기반 FOTA 메커니즘을 구축하였다.
본 문서는 다음 질문에 초점을 맞춘다.
“왜 FOTA용 통신 모듈로 W5500을 선택했는가?”
이를 기술적 관점에서 분석하고, 구성 예시와 함께 정리한다.
2) Required Components
STM32L152RE Cortex-M3 MCU
WIZnet W5500 Ethernet 모듈 (WIZ850io, W5500-EVB 또는 커스텀 설계 보드)
SPI 연결 배선
3.3V 전원
HTTP 서버 또는 펌웨어 파일 호스팅 서버
개발 환경: STM32CubeIDE / Keil MDK / GCC
W5500용 ioLibrary_Driver
3) Hardware Setup
W5500은 STM32L152RE와 SPI 기반으로 연결되며, MCU는 완전한 TCP/IP 스택을 소프트웨어로 처리할 필요 없이, W5500의 하드웨어 스택을 그대로 사용해 안정적인 HTTP 통신을 수행한다.
특징:
W5500 내부에 TCP/IP 가속 엔진 존재
STM32L152RE 같은 저전력·저성능 MCU도 고속 네트워크 처리 가능
부트로더 영역에서도 쉽게 동작 (RTOS 필요 없음)
4) Interface Explanation (SPI)
W5500은 SPI를 통해 제어되며, 다음과 같은 이유로 FOTA 시 매우 유리하다.
● Low-overhead 인터페이스
STM32L152RE는 Cortex-M3 기반으로 연산 자원이 제한적이다.
SPI 기반의 단순 I/O 제어만으로도 W5500이 패킷 처리 전체를 오프로드해 주기 때문에 MCU 부하가 거의 없다.
● 하드웨어 안정성
유선 Ethernet 기반 FOTA는 신호 감쇠나 전파 간섭을 받지 않으며, SPI는 MCU에서 구현하기 가장 단순한 유선 프로토콜이다.
5) Wiring Table
| STM32L152RE Pin | W5500 Pin | Description |
|---|---|---|
| PA5 | SCLK | SPI Clock |
| PA6 | MISO | SPI Data In |
| PA7 | MOSI | SPI Data Out |
| PB6 (또는 임의의 GPIO) | CS | Chip Select |
| PB7 | INTn | Interrupt (옵션) |
| PB0 | RSTn | Reset (옵션) |
| 3.3V | 3.3V | Power |
| GND | GND | Ground |
6) Software Environment Setup
WIZnet ioLibrary_Driver 적용
HTTP GET 기반 파일 다운로드 구현
Flash Write 기능이 포함된 커스텀 부트로더 제작
펌웨어 업데이트 단계:
W5500 초기화
DHCP 또는 Static IP 설정
HTTP 서버 접속
이미지 다운로드
CRC/무결성 검사
Flash Write 후 리부팅
7) Full Code Examples
(핵심 로직만 요약)
W5500 Init
wizchip_init(tx_buf, rx_buf);
network_init();
HTTP GET 요청
send(sn, http_get_request, strlen(http_get_request));
수신된 펌웨어 처리
while(recv(sn, buffer, sizeof(buffer)) > 0) {
flash_write(address, buffer, len);
address += len;
}
8) Testing Steps
W5500 정상 링크 확인
HTTP 서버에 최신 펌웨어 업로드
부트로더에서 HTTP GET 요청 수행
Flash 영역에 이미지 저장
재부팅 후 정상 동작 여부 확인
9) Troubleshooting
링크 DOWN → 케이블 및 PHY 상태 점검
HTTP 수신 누락 → 버퍼 크기 설정 확인
Flash Write 실패 → Page Erase 순서 검증
업데이트 중 전원 Off → 부트로더 Dual-Bank 방식 고려
10) Use Cases & Market Potential
산업용 센서, IoT 게이트웨이
현장에서 유지보수가 어려운 장비
저전력 MCU 기반 고신뢰 Firmware Update 시스템
무선이 불안정한 산업 환경
11) Module/Chip Technical Overview
W5500의 강점
하드웨어 TCP/IP Stack
Zero-copy 방식으로 높은 Throughput
안정적인 유선 Ethernet
매우 낮은 MCU 부하
저전력 동작 가능
HTTPS 제외 모든 TCP 기반 프로토콜 구현 가능
STM32L152RE 특성
저전력 L-series
Cortex-M3
Flash 용량 제한
복잡한 소프트웨어 TCP/IP를 돌리기에는 부담
→ 이 조합에서 W5500은 MCU가 하기 어려운 네트워크 업무를 완전히 오프로드하는 핵심 역할을 수행한다.
12) Conclusion
STM32L152RE용 커스텀 부트로더 기반 FOTA 업데이트를 설계할 때 W5500을 선택한 이유는 명확하다.
✔ MCU 부하 없이 안정적인 TCP/IP 처리
✔ 저전력 MCU에서도 고성능 HTTP 다운로드 가능
✔ 유선 기반의 높은 신뢰성
✔ 소프트웨어 스택 구현 부담 제거
✔ FOTA 구조를 단순화해 개발 리스크 감소
결과적으로 W5500은 **“작고 단순한 MCU가 안정적인 네트워크 FOTA를 수행할 수 있게 만드는 가장 적합한 솔루션”**이다.