STM32F103CBT6 대안: 128 KB 플래시 MCU 가이드
동일한 다이, 동일한 48핀 풋프린트, 두 배의 플래시 — 그리고 대부분이 교체 전에 간과하는 펌웨어 작업.
TL;DR
- STM32F103CBT6C8T6의 128 KB 형제 모델입니다: 동일한 Cortex-M3, 동일한 48-pin LQFP, 동일한 툴체인.
- 이는 여유 공간(headroom)을 추가하는 가장 위험 부담이 낮은 방법입니다 — 보드 변경 없음, 새 드라이버 없음, 메모리 맵 검토만 필요합니다.
- 작업은 링커 스크립트, OTA 파티션 테이블 및 벡터 테이블에 있습니다 — 주변장치에는 없습니다.
- 128 KB를 지원하는 대체 공급원도 존재하지만, 64 KB 제품군과 동일한 "동일 핀, 다른 실리콘" 주의사항이 있습니다.
- 이미지가 계속 커지는 중이라면 두 번 퀄리파이하는 대신 256 KB 클래스를 계획하십시오.
1. CBT6가 존재하는 이유
F103 패밀리는 서로 다른 플래시 밀도로 구성할 수 있는 단일 다이를 기반으로 만들어졌습니다. C6T6, C8T6 및 CBT6가 패키지, 핀아웃 및 주변장치 세트를 공유하는 이유가 바로 여기에 있습니다. 차이는 아키텍처가 아니라 메모리입니다.
설계자에게 이것은 선물과 같습니다. C8T6용으로 퀄리파이된 보드는 레이아웃 변경 없이 CBT6를 받아들이며, 펌웨어는 드라이버 변경 없이 컴파일됩니다. 유일한 질문은 메모리 맵이 여전히 유효한지 여부입니다.
구매자에게 이것은 가격 및 공급 가능성에 관한 결정입니다. 128 KB 부품은 비용이 약간 더 들지만, 나중에 두 번째 스토리지 재설계를 해야 할 위험을 없애줍니다.
2. 세 가지 메모리 변형
| 부품 | 플래시 | RAM | 재고 있음 |
|---|---|---|---|
| STM32F103C6T6 | 32 KB | 10 KB | Yes |
| STM32F103C8T6 | 64 KB | 20 KB | Yes |
| STM32F103CBT6 | 128 KB | 20 KB | Yes |
변하지 않는 점에 주목하십시오: RAM은 C8T6와 CBT6 모두에서 20KB로 유지됩니다. 플래시를 두 배로 늘려도 애플리케이션에 더 많은 스택, 힙 또는 버퍼가 제공되지는 않습니다. 한계가 RAM이라면 답은 더 큰 플래시 제품이 아니라 다른 패밀리입니다.
32KB C6T6은 정반대의 트레이드오프입니다: 가장 저렴하지만 작은 고정 이미지에만 적합합니다. 32KB에서 128KB로 이동하는 것은 4배 증가이며 일반적으로 제약을 영구적으로 해결합니다.
동일하게 유지되는 항목
핀아웃, 패키지, 주변장치 세트, 클록 트리 및 디버그 인터페이스는 C6T6, C8T6 및 CBT6 전반에서 변경되지 않습니다. 동일한 보드, 동일한 크리스털, 동일한 SWD 헤더 및 동일한 USB 회로가 세 가지 모두에서 작동합니다.
그래서 업그레이드가 종종 ‘무료’라고 설명됩니다. 엔지니어링 작업은 실제로 필요하지만 범위는 한정됩니다: 링커 스크립트를 업데이트하고, 파티션 테이블을 검토하고, 인수 테스트를 다시 실행하면 됩니다. 회로도 변경, 재레이아웃, 새 드라이버는 없습니다.
확인할 가치가 있는 유일한 주변장치 차이는 플래시 컨트롤러의 페이지 지오메트리입니다. 페이지 크기가 에뮬레이션된 EEPROM과 부트로더의 소거 방식을 결정하기 때문입니다.
실제로는 C8T6와 CBT6가 유통사 수준에서 종종 상호 교환 가능하며, 선택은 빌드 시점에 어느 부품이 공급 가능한지에 달려 있습니다. 이러한 유연성 자체가 파티션 테이블을 128 KB 기준으로 설계해야 하는 근거입니다. 그래야 펌웨어 변경 없이 어느 부품이든 사용할 수 있습니다.
3. 64 KB로는 더 이상 충분하지 않을 때
펌웨어는 예측 가능한 단계로 증가합니다. 40 KB에서 여유롭게 맞던 프로젝트가 다섯 가지 중 하나가 발생하면 64 KB를 넘을 수 있습니다.
네트워크 스택이 추가됩니다.TLS가 포함된 소형 TCP/IP 스택조차 수십 킬로바이트를 소비합니다.
디스플레이와 폰트 세트가 추가됩니다.중국어 또는 일본어 글리프 세트 몇 개만으로도 전체 애플리케이션 예산을 초과할 수 있습니다.
OTA 스테이징이 추가됩니다.듀얼 뱅크 업데이트에는 두 번째 이미지를 위한 공간이 필요하며, 최소한 압축된 이미지 하나를 위한 공간은 필요합니다.
로깅 또는 구성 저장 공간이 플래시로 옮겨집니다.에뮬레이트된 EEPROM 페이지는 사용 가능한 애플리케이션 공간을 줄입니다.
디버그 심볼 또는 부트로더가 커집니다.부트로더는 누가 측정하든 아니든 플래시의 하단을 차지합니다.
실제로 추가 64 KB를 소비하는 것은 무엇인가
결정하기 전에 공간이 어디로 가는지 확인하는 것이 도움이 됩니다. 이 등급의 MCU에서 일반적인 연결형 애플리케이션은 대략 다음과 같이 나뉩니다: bootloader 16 KB, 애플리케이션 코드 30–50 KB, 소형 TCP/IP 스택 12–20 KB, TLS 15–25 KB, 파일 시스템 및 구성 4–8 KB, 그리고 이미지 크기와 동일한 OTA 스테이징 영역입니다.
그 숫자들을 더하면 한계는 금방 다가옵니다. TLS와 dual-bank 스테이징을 포함한 45 KB 애플리케이션은 로깅이나 폰트 데이터가 전혀 없어도 128 KB 이상이 필요합니다. 그래서 64 KB 부품은 벤치에서는 충분해 보이지만 통합 과정에서 고갈됩니다.
같은 계산으로 “TLS를 그냥 활성화”하는 것이 보안 결정인 동시에 저장 공간 결정인 이유도 설명됩니다. 암호화 스위트와 인증서 저장소는 공짜가 아닙니다.
4. 마이그레이션 작업
| 항목 | 변경되는 사항 |
|---|---|
| Linker script | FLASH length from 64K to 128K |
| Partition table | Application, staging and data sizes |
| Vector table offset | Only if the bootloader or app base moves |
| OTA bank size | A larger image needs a larger staging area |
| EEPROM emulation | Page count changes if the layout moves |
| Production programming | Image size and checksum |
가장 흔한 실수는 링커 스크립트를 변경하고 파티션 테이블을 잊는 것입니다. 그러면 보드는 올바르게 프로그램되지만 OTA 업데이트가 스테이징 영역을 넘어 쓰거나, 부트로더가 너무 크다고 판단한 이미지를 거부합니다.
내구성과 에뮬레이션된 EEPROM
플래시는 EEPROM이 아닙니다. F103 플래시는 제한된 횟수의 소거 사이클을 견디도록 규격화되어 있으며, 일반적으로 페이지당 1만 회대입니다. 전원이 꺼질 때마다 기록되는 구성 블록은 제품의 서비스 수명이 끝나기 훨씬 전에 한 페이지를 소진시킵니다.
에뮬레이션된 EEPROM은 두 가지 기법으로 이 문제를 해결합니다. 첫째, 덮어쓰는 대신 새로운 위치에 기록하므로 마모가 페이지나 블록 전체에 분산됩니다. 둘째, RAM에 작은 인덱스를 유지하고 페이지가 가득 찼을 때만 인덱스를 다시 기록합니다.
두 기법 모두 변수 수와 웨어 레벨링 깊이에 비례하여 플래시를 소비합니다. 64 KB 부품에서는 이는 예산에서 의미 있는 비중을 차지할 수 있습니다. CBT6에서는 추가 공간 덕분에 더 깊은 웨어 레벨링 방식을 감당할 수 있습니다.
제품이 데이터를 지속적으로 로깅한다면 MCU의 내부 플래시를 마모시키는 대신 외부 FRAM이나 작은 SPI 플래시를 고려하십시오. 비용은 적당하고 신뢰성 향상은 큽니다.
클록, 대기 상태 및 체감 성능
더 큰 플래시가 MCU를 더 빠르게 만들지는 않지만, 코드가 실행되는 플래시 대기 상태 수를 바꿀 수는 있습니다. 72 MHz에서 F103은 두 밀도 모두에서 대기 상태가 필요하며, 차이는 코드가 다른 주소에 배치되거나 프리페치 버퍼가 다르게 동작할 때 나타납니다.
대부분의 애플리케이션에서는 이 차이가 보이지 않습니다. 사이클 카운트 루프, 비트뱅잉 인터페이스, 타이트한 제어 루프에서는 중요할 수 있으므로 인수 테스트에는 기능 검사만이 아니라 타이밍 민감 경로도 포함해야 합니다.
설계가 48 MHz 미만으로 동작하면 대기 상태는 보통 0이 되어 차이가 완전히 사라집니다. 이는 많은 산업용 설계가 의도적으로 최대 속도보다 느리게 동작하는 이유 중 하나입니다.
5. 런타임 시 플래시 크기
F103은 펌웨어가 읽을 수 있는 레지스터에 플래시 크기를 보고합니다. 이는 64 KB 또는 128 KB 부품으로 출하되는 플랫폼에 유용하지만, 함정이기도 합니다. 페이지 수나 섹터 주소를 하드코딩한 코드는 다른 밀도에서 오동작합니다.
제품이 두 가지 변형으로 함께 출하될 수 있다면 부팅 시 크기를 읽고 그에 따라 스토리지 계층을 구성하십시오. 한 가지 변형으로만 출하된다면 제조 테스트에서 예상 크기를 검증하여 잘못된 릴이 조립 전에 발견되도록 하십시오.
OTA 설계 옵션
네 가지 패턴이 일반적이며, 플래시 비용은 크게 다릅니다.
듀얼 뱅크.두 개의 전체 이미지 슬롯과 부트로더. 안전하고 단순하지만 이미지 크기의 두 배가 필요합니다. 128 KB에서 40 KB 이미지를 듀얼 뱅크 스테이징으로 사용하면 데이터 전에 80 KB를 소비합니다.
압축 스테이징.다운로드한 이미지는 압축된 상태로 저장되며 부팅 시 제자리에서 확장됩니다. 공간을 절약하지만 압축 해제 단계가 추가되고, 압축 해제기가 중단될 경우 실패 모드가 발생합니다.
외부 스테이징.이미지는 외부 SPI 플래시에 저장되고 MCU가 내부로 복사합니다. 구성 요소가 하나 추가되지만 내부 공간 제약을 완전히 제거합니다.
스테이징 없음.장치는 일반적으로 복구 부트로더를 사용하여 직접 다운로드하고 기록합니다. 플래시 측면에서 가장 저렴하지만 현장에서 가장 위험합니다.
어떤 패턴을 선택하든, 펌웨어를 기록하기 전에 파티션 테이블을 확정해야 합니다. 나중에 이를 변경하면 현장의 모든 장치가 무효화됩니다.
펌웨어 호환성 검사
네 가지 검사로 대부분의 마이그레이션 문제를 현장에 도달하기 전에 잡아낼 수 있습니다.
디바이스 ID.펌웨어의 시작 코드가 ID에 따라 분기할 수 있으므로 새 값을 명시적으로 추가하십시오.
플래시 크기 레지스터.제조 시험에서 기대값을 어서트하여 잘못된 용량의 릴이 프로그래밍 시점에 거부되도록 하십시오.
벡터 테이블 오프셋.부트로더가 애플리케이션을 재배치하는 경우, 오프셋이 새 파티션 테이블과 일치하는지 확인하십시오.
EEPROM 에뮬레이션 페이지 수.구성용으로 예약된 페이지 수는 새 레이아웃과 일치해야 하며, 그렇지 않으면 마지막 페이지가 애플리케이션과 겹치게 됩니다.
6. 128 KB에서의 세컨드 소스
| 제품군 | 플래시 | 참고 |
|---|---|---|
| GD32F103CBT6 | 128 KB | Pin compatible; different flash timing and higher clock capability |
64 KB 기사에서 적용된 동일한 규칙이 적용됩니다: 핀 호환성은 기계적이며, 펌웨어는 검증되어야 합니다. 더 큰 플래시에서는 한 가지 추가 항목이 나타납니다 — 플래시 프로그래밍 알고리즘과 소거 단위가 달라질 수 있어 생산 시간과 OTA 설계 모두에 영향을 줍니다.
복구 경로도 확인하십시오. 부트로더가 USB 또는 UART를 통한 DFU를 지원하는 경우, DFU 설명자가 최대 이미지 크기를 인코딩하는 경우가 많으므로 새 밀도에서 손상된 애플리케이션 이미지로부터의 복구를 테스트하십시오.
디버그 접근은 변경되지 않지만, 옵션 바이트는 확인할 가치가 있습니다: 읽기 보호, 워치독 동작 및 부트 핀 구성은 플래시에 저장되며 로트 간 기본 상태가 다를 수 있습니다. 벤치가 아니라 픽스처에서 확인하십시오.
생산 프로그래밍 및 추적성
밀도를 전환하면 프로그래밍 이미지와 종종 픽스처가 변경됩니다. 라인에서 세 가지 항목을 검증해야 합니다.
이미지 크기 및 체크섬.프로그래머는 더 큰 이미지를 수용해야 하며, 부트로더 영역에 저장된 체크섬이 일치해야 합니다.
읽기 백 검증.프로그래밍 후 전체 검증은 첫 부팅 때가 아니라 즉시 잘못된 밀도의 릴을 잡아냅니다.
고유 ID 로깅.96-bit 고유 ID는 장치를 생산 기록과 연결합니다. 이를 로깅하면 현장 반품을 추적할 수 있고 불량 로트를 식별하는 데 도움이 됩니다.
7. 테스트 계획
| 단계 | 테스트 | 합격 기준 |
|---|---|---|
| 1 | Read flash size and device ID | Matches the expected density |
| 2 | Program the full image | Verifies with zero errors |
| 3 | Boot and run the acceptance test | No timing regressions |
| 4 | OTA update with power cut | Recovers via the bootloader |
| 5 | EEPROM emulation wear test | No page exhaustion after 100k writes |
128KB로도 여전히 부족할 때
예상 이미지 크기가 약 100KB를 넘으면 다음 단계는 또 다른 F103 변형이 아니라 다른 제품군입니다. 72MHz의 Cortex-M3와 20KB RAM을 갖춘 F103은 플래시보다 먼저 제약 조건이 됩니다.
옵션으로는 같은 패밀리의 256 KB 클래스, 더 많은 RAM과 FPU를 갖춘 Cortex-M4 부품, 또는 execute-in-place를 지원하는 외부 QSPI 플래시가 있습니다. 각각은 자체 인증 및 펌웨어 비용을 수반하는 플랫폼 결정입니다.
실용적인 원칙은 현재 이미지 크기가 아니라 향후 2년간의 기능을 커버할 수 있는 용량을 선택하는 것입니다. 동일한 보드를 두 번 재인증하는 비용이 처음부터 약간 더 큰 부품을 구매하는 비용보다 더 비쌉니다.
5년 제품 스토리
2021년에 C8T6에서 40 KB 이미지로 설계된 컨트롤러를 생각해 보십시오. 2023년에는 웹 인터페이스를 추가한 후 이미지가 58 KB에 도달했습니다. 2024년에는 TLS로 인해 64 KB를 넘어섰고, 팀은 맞추기 위해 폰트를 압축했습니다.
2025년에는 OTA 스테이징 영역이 더 이상 들어가지 않았습니다. 그 시점의 해결책은 보드 리비전, 새로운 파티션 레이아웃, 필드 마이그레이션이었으며, 이는 설계를 몇 센트 더 주고 CBT6에서 시작했다면 모두 피할 수 있었던 일입니다.
이것이 헤드룸을 위한 논거입니다. 추가 플래시가 즉시 사용된다는 것이 아니라, 용량이 부족해질 때의 비용이 센트가 아니라 리스핀으로 측정된다는 것입니다.
8. 비용 및 계획
C8T6와 CBT6의 가격 차이는 작습니다. 결정은 단가에 관한 것이 아니라, 추가 64KB가 향후 재설계를 없애 주는지에 관한 것입니다.
CBT6를 선택하라는 세 가지 신호: 현재 이미지가 45KB를 초과함, 로드맵에 네트워크 스택 또는 디스플레이가 포함됨, 또는 제품 수명이 여러 해임. 64KB에 머물라는 두 가지 신호: 이미지가 안정적이고 작음, 그리고 물량이 충분히 많아 센트 단위 비용이 중요함.
이미지가 이미 100KB에 가깝다면 256KB 등급으로 건너뛰십시오. 128KB 부품을 인증한 뒤 1년 후 다시 이동하는 것이 가장 비용이 많이 드는 경로입니다.
새 설계를 위한 결정 규칙
선택하기 전에 세 가지 숫자를 적으십시오: 현재 이미지 크기, 2년 후 예상 크기, OTA 필요 여부. OTA에 대한 답이 '예'이면 이미지 크기를 한 번 더 더하십시오. 예상 총합이 90KB를 초과하면 128KB 이상에서 시작하십시오.
연결성과 OTA가 없는 고정 기능 제품의 경우 64 KB면 보통 충분하며 C8T6이 여전히 더 저렴한 선택입니다. 실수는 제품이 5년 동안 고정되어 있을 것이라고 가정하는 것입니다.
9. FAQ
CBT6는 C8T6의 드롭인 대체품인가요?
물리적 및 기능적으로는 그렇습니다. 펌웨어는 더 큰 플래시에 맞게 링커 스크립트와 파티션 테이블을 업데이트해야 합니다.
RAM이 증가하나요?
아니요. 두 부품 모두 20 KB입니다. RAM이 제약 조건이라면 더 큰 플래시 부품은 도움이 되지 않습니다.
나중에 C8T6로 다시 돌아갈 수 있나요?
이미지가 64 KB에 들어가는 경우에만 가능합니다. 코드 변경 없이 다운그레이드가 가능하도록 파티션 테이블을 계획하세요.
세컨드 소스도 동일한 플래시 크기 레지스터를 갖고 있나요?
일반적으로 호환되는 레지스터가 존재하지만, 값과 세분성은 다를 수 있습니다. 정확한 부품의 데이터시트를 읽으세요.
가장 흔한 마이그레이션 버그는 무엇인가요?
링커 스크립트는 업데이트하지만 OTA 파티션 테이블은 업데이트하지 않는 것으로, 이는 스테이징 영역 밖에 쓰는 업데이트를 발생시킵니다.
새 설계에 CBT6를 주문해야 할까요?
이미지가 32 KB 미만이고 안정적이라면 C8T6로 충분합니다. 성장 가능성이 조금이라도 있다면 — 웹 인터페이스, TLS, 로깅 또는 OTA — 128 KB에서 시작하여 두 번째 설계 사이클을 피하십시오.
공급 관련 참고 사항
이 밀도에서는 더 많은 설계가 사용하기 때문에 32 KB보다 가용성이 좋습니다. 승인된 2차 공급원 하나를 유지하고, 해당 공급원의 플래시 프로그래밍 알고리즘이 생산 픽스처와 일치하는지 확인하십시오. 이미지는 동일하지만 툴링은 다를 수 있습니다. 주문하기 전에 확인하십시오.
10. 출처
- ST STM32F103CB 제품 페이지:st.com
- GigaDevice GD32F103 문서:gigadevice.com
저자 소개— Chip-Seek Supply Chain Intelligence Team 발행. 우리는 하드웨어 엔지니어와 구매 팀을 위해 부품 가용성, 대체품 및 인증 리스크를 추적합니다. 다음 글을 읽어보세요:품질 및 추적성 프로세스.
플래시 여유 공간이 더 필요하신가요?
현재 부품과 이미지 크기를 알려 주세요. 동일한 보드에서 비교할 수 있도록 재고에서 64 KB 및 128 KB 버전을 견적해 드리겠습니다.