---
title: "A custom bootloader and FOTA update mechanism for the STM32L152RE."
url: "https://maker.wiznet.io/bruno/projects/a-custom-bootloader-and-fota-update-mechanism-for-the-stm32l152re/"
markdown_url: "https://maker.wiznet.io/bruno/projects/a-custom-bootloader-and-fota-update-mechanism-for-the-stm32l152re/md"
type: "UCC: User Created Content"
author: "Ankit Gote"
author_url: "https://www.linkedin.com/posts/ankit-gote-50b50128a_hi-everyone-for-the-past-few-days-i-was-activity-7399048785156427776-8H8j"
editor: "WIZnet"
editor_url: "https://maker.wiznet.io/"
original_author: "Ankit Gote"
original_url: "https://www.linkedin.com/posts/ankit-gote-50b50128a_hi-everyone-for-the-past-few-days-i-was-activity-7399048785156427776-8H8j"
published: "2025-11-26"
language: "en"
likes: 0
views: 261
comments: 0
source: "WIZnet Makers (https://maker.wiznet.io/)"
---

# A custom bootloader and FOTA update mechanism for the STM32L152RE.

> It supports HTTP updates using the W5500 module from Wiznet.

Original author: Ankit Gote (source: https://www.linkedin.com/posts/ankit-gote-50b50128a_hi-everyone-for-the-past-few-days-i-was-activity-7399048785156427776-8H8j)

## Article

원문 링크 : <https://www.linkedin.com/posts/ankit-gote-50b50128a_hi-everyone-for-the-past-few-days-i-was-activity-7399048785156427776-8H8j>

## 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를 수행할 수 있게 만드는 가장 적합한 솔루션”**이다.

---

Source: https://maker.wiznet.io/bruno/projects/a-custom-bootloader-and-fota-update-mechanism-for-the-stm32l152re/
