종설 성능 실험 설계 모델 · 예시값 · 실측 아님

STM32G474 + W25Q32JV · 3 MB BMP 왕복 · 병목 12 · 요인 17 · A/B 절차 · 측정 계층 · 논문용 흑백 다이어그램 15장 · 3D 장비 구성 3장. 설계 Fable 5.1 · 구현 Opus 5 · 3D Astra · 2026-09-15.

차례 · 1차 발표 브리핑 · 다이어그램 · 장비 구성(3D) · 설계서 본문 · 파일
수치는 전부 데이터시트 typ/max와 닫힌식 모델 예시값입니다. 실측은 3차 발표(11/17) Baseline부터입니다. 열린 문제(사전 소거 포함 여부·F17 스트리밍 허용·허용 오차·채택 baud)는 설계서 8절.

1차 발표 브리핑 (시간표 · 업무분장 · 구매 목록 · 회의 안건)

종설 1차 발표(9/22) 브리핑 — 시간분배 · 업무분장

1. 25분 시간분배

#시간발표자내용교수 요구 항목슬라이드랩 장면
10:00–4:00수현 (통합)목표를 블록도 장에 포함 → 블록도(장치·연결) → 데이터 흐름도(순서·버퍼·완료 조건) → 시간 예산 한 장(개략값·병목 틀)동작 과정, 블록도, 데이터 흐름, 병목 순서3#brief, V01, V07
24:00–9:00UART 담당8N1·baud → DMA 수신 구조 → 청크 프로토콜(길이·순번·CRC·ACK) → PC 프로그램 → 이 구간 병목(baud·브리지 한계)UART 통신 구조, 병목3~4V04, #comm UART·USB
39:00–14:00Flash 담당W25Q32 기하 → 페이지 경계를 넘는 청크 하나의 처리 사례(WREN→PP→WIP, 1~256 B 부분 쓰기 가능, 경계 넘으면 wrap, 소거 단위 ≠ 쓰기 단위) → 소거 정책(섹터·블록·칩 typ/max 비교) → SPI DMA + 짧은 명령·상태 조회는 폴링 검토 → 이 구간 병목(소거 고정비 · Program · 전송을 분리). opcode 전체 나열은 예비 장으로SPI 구조, Flash R/W 구조, 병목3~4V02, V03, #comm SPI·Flash
414:00–19:00BMP 담당지원 형식 선언(24 bpp 무압축, bfOffBits·DIB 크기 확인, 범위 밖 거절) → 행·픽셀 경계(4096 B 청크 ≠ 3072 B 행) → Gray 규약(기준식 + 정수식 오차 허용치) → 출력 형식 → 검증(2차 = 바이트 비교, 3차 = 기준 Gray 픽셀 비교)BMP 구조, 변환 방법3V06, V08
519:00–21:00수현 (통합)역할 분담표 → 4주 개발 일정 → 착수 준비(장비 후보) → 마무리역할 분담, 향후 계획2#plan
Q21:00–25:00전원질의응답 (자기 구간 질문은 그 담당이 답한다)—예비 1—

본문 13~15장 + 예비 2~4장(opcode 표·보드 비교·논문 표). 각 파트가 자기 구간 병목까지 설명하므로 마무리에서 병목을 다시 설명하지 않는다. Flash가 리허설에서 계속 넘치면 BMP 1분을 옮겨 4+5+6+4+2+4로 조정한다.

예상 성능을 말하는 법. "115200이면 수 분, 921600이면 1분 전후, 안정적인 3 Mbps와 흐름 제어가 갖춰지면 수십 초를 목표로 계산했다" 정도로만. 랩의 76 s·32 s는 credit 흐름 제어·W25Q32JV typ·SPI 42 MHz 가정의 모델값이고, 저장 완료 후 ACK 방식이면 각각 82 s·38 s다. 초 단위 숫자를 확정치처럼 내지 않는다. UART 전송 하한(8N1, 왕복)만 확실한 수치다: 115200 = 546 s, 921600 = 68 s, 3 Mbps = 21 s (Gray24 기준. Gray8이면 각 364·46·14 s).

2. 업무분장 — 개발 파트 4개 (랩 roles.json과 동일, 이름만 채우면 확정)

담당맡을 업무완료 기준9/22까지 준비발표
수현: 시스템 통합·성능 분석전체 상태 흐름, 버퍼 소유권(FREE↔FULL), 전체 저장 완료 후 변환 시작 조건(장벽), 모듈 연결, 단계별 시간 측정, 측정 결과로 개선 우선순위 결정, 구간 사이 버퍼·처리 순서 개선전 경로가 동작하고 어디서 시간이 걸리는지 숫자로 설명 가능블록도·데이터 흐름도·시간 예산·역할표·일정 최종본, 슬라이드 병합, 리허설 진행1, 5
조해문: SPI·FlashSPI/DMA 설정, 소거·읽기·쓰기·완료 확인(WIP), 페이지·섹터 경계 처리, tPP·tSE 실측, Flash 구간 성능 개선여러 페이지·섹터에 걸친 데이터를 저장하고 동일하게 읽어옴데이터시트 명령 표·타이밍(tPP·tSE·클럭 상한), 페이지·섹터 분할 설계, SPI DMA 구조 그림3
윤수민: UART·전송 프로토콜MCU UART/DMA 수신·송신, PC 바이트 송수신 프로그램, 길이·순번·오류 확인·흐름 제어, 안정 최대 baud 실측, 전송 구간 성능 개선큰 데이터를 누락 없이 주고받고 전송속도를 측정함baud 후보·브리지 한계 조사, DMA 수신 구조 그림, 청크 프로토콜 초안, PC 프로그램 언어 결정(Python 권장)2
홍석현: BMP·Gray·검증 자동화MCU 변환 코드, BMP 해석·출력 파일 구성, PC 기준 변환(교수 권고 07:53: 먼저 PC에서 C/C++로 변환을 확인하고 그 함수를 그대로 MCU에 이식. 검증 도구는 Python 가능), 원본·복원·Gray 파일 자동 비교 도구(2차 발표 무결성 데모부터 사용), 실패 위치 찾기변환 결과를 자동 판정하고 실패 위치를 찾아냄BMP 헤더 해부 그림, Gray 공식·고정소수점, 표본 BMP(3 MB 이상), 기준 변환 스크립트, 검증 도구 설계4

통합 담당이 오늘 먼저 정할 경계 규칙 4개

다른 팀원 개발이 끝나기 전에 상태 흐름과 연결 코드를 만들려면 이 넷을 먼저 합의해야 한다.

  1. 함수에 넘기는 것: 어떤 데이터와 길이를 넘기나. flash_write(addr, buf, n), flash_read(addr, buf, n), gray_row(in, out, w), 청크 도착 이벤트, 송신 큐.
  2. 완료 신호: 처리가 끝났다는 걸 어떻게 알리나. 콜백·플래그·큐 중 하나로 통일.
  3. 버퍼 반환 시점: DMA에 넘긴 버퍼를 언제 다시 써도 되나. 소유권 FREE↔FULL 규칙.
  4. 오류 처리 주체: 오류가 나면 중단·재시도를 누가 하나. 모듈 안에서 재시도, 한도 초과 시 통합에 보고. 중복 청크·재전송·Flash 오류의 재시도를 한 곳에서만 하도록 정한다.

특히 2번과 3번은 모델 오류로 이미 한 번 밟았다. ACK가 "수신 완료"인지 "Flash 저장 완료"인지에 따라 총시간이 약 5.5 s 달라지고, 저장 완료 ACK면 수신과 프로그램이 겹치지 않는다. 선행 수신을 허용하려면 credit(남은 버퍼 수 보장)이 필요하다. flash_write() 반환이 버퍼 해제 가능·버스 완료·Flash 저장 완료 중 무엇인지도 같이 정한다.

발표 준비 일정

기한일담당
9/15 (오늘)파트·이름 확정, 경계 규칙 4개 합의, 보드·Flash·브리지 1안, 슬라이드 템플릿 공유전원
9/17 (목) 14:00팀 미팅. 각 파트 슬라이드 초안 + 대본 지참. 장비 최종 결정, 경계 규칙 4 합의. 미팅 직후 통합 담당이 병합 시작전원
9/18 (금)교수 사전 제출 마감. 병합본 완성·제출 (블록도·데이터 흐름도·구현 계획 포함)수현
9/19 (토)리허설 1회, 시간 재기, 질문 예상 5개전원
9/21 (월)리허설 2회, 최종본전원
9/22 (화)발표—

내부 마감 (공식 발표일 1주 전 기능 고정)

내부 마감결과물
9/29UART 작은 바이너리 왕복, Flash ID·페이지 읽기 확인, PC 비교 도구
10/6작은 파일 전체 저장·복원 연결, 페이지·섹터 경계 시험
10/133 MB 이상 BMP 저장·복원·자동 무결성 판정 (2차 10/20)
11/3Flash→Gray→PC 전체 경로 동작
11/10Baseline 반복 측정(5~10회, 중앙값·최소·최대·실패 수)·로그 고정 (3차 11/17)
11/24요인별 A/B 개선 실험(소거·Program·전송·출력 형식 분리)
12/1최적화 통합, 최종 구현 고정
12/8최종 반복 측정·개선표·시연 영상·재현 절차 (4차 12/15)

구매 목록 안 (2026-09-15 저녁 논의 결과, 회의에서 확정)

품목수량대략용도
Nucleo-G474RE (STLINK-V3E 온보드, VCP = LPUART1)43만 × 4팀 공통 보드. 캐시 없음, QUADSPI 있음
W25Q64JV QSPI DIP 브레이크아웃 (Adafruit 5633, 디바이스마트 15013111)65,016 × 6팀 Flash. W25Q32JV와 명령 호환, 8 MB, DIP 직결. 해외구매 반품 불가·납기 4~5일
FT232H 브레이크아웃(RTS/CTS 핀, 3.3 V)41~2만 × 4브리지 보험 + F15 비교. 개발 시작은 V3E, 8 M 안정성 실패 시 전환
칩 비교(F14)00제외 결정(9/17). 같은 tPP라 결과 없음
보드 비교(F16)00보유 보드 사용: F411(수현), F746G-DISCO(수현), H7(수현). 참고 표만, 인과 주장 안 함
Nucleo-64 프로토 실드41만 × 4W25Q32·FT232H 납땜 고정 → 점퍼 접촉 불량 제거
예비G474RE 13만Flash 예비는 위 6개에 포함
점퍼·브레드보드·USB 케이블4세트소액
로직 애널라이저 100 MS/s급16~9만파형 디버깅. 실험실 오실로스코프로 대체 가능

합계 25~30만 원. 라이즈 지원 50만 원 안. 비교용 칩·로직 애널라이저는 2차 발표 후 구매해도 됨. 규정(품목 제한·영수증·귀속)은 조교에게 먼저 확인.

3. 오늘 오후 회의에서 반드시 정할 것

  1. ~~4명 이름 → 파트~~ 확정(9/15): Flash 조해문 · UART 윤수민 · BMP 홍석현 · 통합 서수현. roles.json 반영 완료.
  2. 경계 규칙 4개 (위 2절). 함수 입출력과 완료 조건부터 맞춘다.
  3. 보드 1안. 랩 착수 준비 표에 후보 7개(장단점·가격·출처, 추천 없음). 기준 = DMA 채널 수, RAM 크기(버퍼 개수), SPI 최대 클럭, 온보드 Flash 유무, 재고.
  4. Flash 1안. W25Q32 suffix(JV 등)와 모듈 형태. 교수 녹취: 온보드 Flash를 떼고 다른 시리얼 Flash를 붙여도 되고 용량이 커도 된다(JEDEC 명령 호환). W25Q32는 4 MiB라 입력 3 MB + Gray 출력(8 bpp 1 MB)이 꽉 찬다. W25Q64·Q128이면 출력도 Flash에 두는 선택지가 열린다. 랩 착수 준비 표의 Flash 후보 6개 참고.
  5. USB-UART 브리지. ST-LINK VCP만 쓸지, 별도 브리지(CP2102N·FT232 등)로 baud를 올릴지. 이게 UART 병목의 상한을 정한다.
  6. Gray 출력 형식. 8 bpp 팔레트 BMP(파일 1/3) vs 24 bpp 동일값(변환 단순). 송신 시간에 직접 영향.
  7. BMP 헤더 처리 위치. 녹취 04:39: PC에서 헤더를 떼고 픽셀만 보내도 되고, 통째로 보내 MCU가 헤더를 해석해도 된다. 팀 자유. UART 프로토콜과 BMP 파트 양쪽에 걸리므로 오늘 정한다. 픽셀만 보내면 전송량 54 B 차이뿐이라 결정 기준은 MCU 코드 단순성.
  8. 재료비 신청. 라이즈(RISE) 사업단 지원(50만 원 규모, 조교 안내, 녹취 15:41). 신청 담당 1명.
  9. 교수 저서 확보 담당 1명. 도서관·구매. Flash 파트가 5~6장, UART 파트가 7장부터 읽는다.
  10. PC 송신 도구. 직접 짜도 되고 Tera Term 같은 터미널로 보내도 된다(녹취 09:01). 시간 측정을 위해 자체 프로그램 권장.

회의에서 말할 한 문장: "제가 전체 구조랑 통합, 성능 측정을 맡을게요. 각자 모듈은 구현부터 검증·최적화까지 맡고, 오늘 함수 입출력과 완료 조건부터 맞추죠. BMP 담당은 복원 파일 검증 도구도 같이 맡으면 좋겠습니다."

4. 예상 질문 5개 (답하는 사람)

  1. 3 MB가 RAM에 안 들어가는데 Flash 저장 완료를 어떻게 보장하나 → 장벽 + 재독출 CRC. (통합)
  2. 페이지 경계에 안 맞는 마지막 조각은 어떻게 쓰나 → 부분 페이지 쓰기, 소거는 섹터 단위 사전 처리. (Flash)
  3. UART 속도를 얼마나 올릴 수 있나 → 브리지·클럭 오차 실측 계획, 흐름 제어 필요성. (UART)
  4. 변환이 맞는지 어떻게 확인하나 → PC 기준 변환과 픽셀 전수 대조, 실패 위치 출력. (BMP)
  5. 시간 측정 기준점은 → PC 송신 시작 ~ PC 수신 완료, MCU 내부는 단계별 타이머. (통합)

5. 녹취 정리본에서 확인한 것 (2.txt 대비 추가·정정)

6. 논문 5편 사용법 (검토 결과)

1차 본문에는 microSD 실시간 저장 논문(Tran·Choi 2023, 가장 가까운 응용) 1편, 필요하면 Saidi 청크 크기 논문까지 1~2편만 "우리 설계에서 무엇을 참고했는지" 한 문장씩. 나머지는 예비 슬라이드. 논문의 가속비를 STM32 예상치로 옮기지 않는다. YCbCr→RGB 논문은 Gray 정수식의 직접 근거가 아니라 본문에서 뺀다. Gray 근거 = BT.601-7 계수 + 전수 비교 + MCU 실측.

7. 교수 저서 = 과제의 1차 참고서 (목차 대조, 2026-09-15)

주제를 낸 임종수 교수의 책(제목 확인 필요, SJ_MCUBook M0/M4 보드 기반) 목차가 과제와 직접 겹친다. 팀이 한 권 확보해 Flash·UART 파트의 1차 자료로 쓴다. 교수가 자기 책의 순서로 질문할 가능성이 크다.

과제 단계책 장·절담당
W25Q32 소개·사용법·동작 원리·명령 표5.1 ~ 5.4 (p.203~)Flash
JEDEC ID 식별 · 소거 · 읽기 · 쓰기 코드6.1 ~ 6.5 (p.251~)Flash
실행 파일을 외부 Flash에 저장 · Host에서 파일 전송(UART 프로토콜)7.1 ~ 7.2 (p.307~)UART · 통합
MCU 내부 Flash 읽기·쓰기 접근 시간4.2.1 ~ 4.2.3 (p.174~)Flash
Hex 편집기(HxD)로 바이트 대조4.1 (p.159)BMP 검증
보드 회로도부록 2 (p.653)통합

주의 세 가지.

8. 가정과 미검증

실험 장비 구성 (3D 개념도 · Astra)

설계서 본문

A7 · 성능 실험 설계 + 논문용 다이어그램 14장 설계서


1. 측정 대상과 정의

1.1 시간 정의 (측정점 6개)

기호정의시계
T0PC가 첫 데이터 바이트를 브리지에 쓴 시각PC QPC
T1PC가 마지막 입력 바이트를 쓴 시각PC QPC
T2MCU가 마지막 청크의 WIP=0을 확인한 시각(전체 저장 완료)MCU DWT
T3장벽 통과(검증 CRC 완료, 검증 끄면 T3=T2)MCU DWT
T4MCU가 Gray BMP 첫 바이트를 송신 DMA에 넘긴 시각MCU DWT
T5PC가 마지막 출력 바이트를 읽은 시각PC QPC

1.1a 측정 계층 (서로 검증)

층측정기대상해상도한계
평가값PC QPCTtotal = T5 − T00.1 µsOS·USB 지터 수 ms(총시간 대비 < 0.1 %)
내부 단계MCU DWT CYCCNT단계 7개 작업시간5.9 ns펌웨어 자체 측정, 독립 검증 아님
외부 진실로직 애널라이저(≥ 200 MS/s)UART RX 첫 start 비트 = T0, TX 마지막 stop 비트 = T5, CS↑→WIP=0(RDSR 응답)로 tPP, 단계 경계 GPIO 토글(PB0~PB3)2.5~5 ns채널·캡처 메모리

검증 규칙: 각 조건에서 최소 3 run은 LA 동시 캡처. |QPC − LA| < 5 ms, |DWT − LA| < 1 % 이면 나머지 run은 QPC·DWT만으로 인정. 벗어나면 측정 경로부터 고친다. 8 Mbaud 신호 품질(링잉·eye)은 실험실 오실로스코프(≥ 100 MHz)로 조건당 1회.

1.2 성공 판정 (시간을 재기 전에 통과해야 함)

  1. 반환 파일 길이 = 기대 길이(Gray24 3,145,782 B / Gray8 1,049,654 B).
  2. 반환 파일 열림(BMP 파서) + 기준 Gray(PC C 구현, int1000)와 픽셀 전수 비교, 허용 오차 = 팀이 정한 값(0 또는 ±1).
  3. 순번 누락 0, CRC 실패 0, 재전송 횟수 기록.

실패 run은 시간 표에서 제외하고 실패 수만 센다.


2. 병목 지점 전부 (B1~B12)

id병목자원모델 크기(예시 조건)좌우하는 요인A/B 방법비교 장비
B1PC→MCU UART 직렬 전송UART RX115200: 273 s, 921600: 34 s, 4 M: 7.9 sbaud, 8N1baud 5수준같은 보드·브리지, baud만
B2USB 브리지·PC 드라이버 지연브리지 FIFO, USB 폴링(FS 1 ms / HS 125 µs)실측 필요, 4 M 이상에서 드러남브리지 종류, PC 쓰기 단위브리지 3종 교체, PC write 크기 3수준STLINK-V3E(온보드), FT232H, CP2102N
B3흐름 제어 왕복UART 양방향ACK: 청크당 PC 응답 지연 ≈ 1 ms × 769 = 0.77 s + 겹침 손실 5.5 sack / credit, 청크 크기흐름 제어 2수준 × 청크 3수준동일
B3a프로토콜 오버헤드UART8N1 = 10 bit/B(parity 없음). 청크 헤더(순번 2 + 길이 2) + CRC-32 4 B = 8 B/4096 B ≈ 0.2 %. parity(8E1)는 +10 %라 채택 안 함. CRC = STM32 하드웨어 CRC 유닛청크 크기청크 3수준에 포함동일
B4사전 소거Flash 내부49블록 7.35 s / 칩 10 s / 769섹터 34.6 s (typ)소거 단위, 사전/온디맨드소거 정책 4수준, Tprep 포함·제외 둘 다 보고동일 칩
B5Page Program 내부 시간 tPPFlash 내부(WIP)12,289 × 0.4 ms = 4.9 s typ, max 36.9 s정렬(안 A 17회 vs 안 B 16회), 폴링 주기정렬 2수준 (칩 비교 제외)W25Q64JV 고정
B6SPI 프로그램 전송 + WREN·RDSR 트랜잭션SPI 버스, CPU42 MHz: 0.62 s + CS 오버헤드 12,289×3회SPI 클럭, DMA/폴링, WIP 폴링 주기SPI 클럭 3수준, 전송 방식 2수준, 폴링 주기 3수준동일
B7수신·프로그램 겹침 부족RAM 버퍼버퍼 1: 겹침 0, 버퍼 3: UART 지배 조건에서 완전 겹침버퍼 수, 청크 크기, 전략버퍼 4수준(1·2·3·4)동일
B8검증 재독출 + CRCSPI, CPU읽기 0.6 s + CRC 0.15 s (팀 선택)검증 on/off, 블록 크기2수준동일
B9픽셀 읽기SPI3 MB @42 MHz 0.6 s, Quad I/O면 1/4SPI 클럭, 1선/4선2수준(G474 QUADSPI)동일
B10Gray 변환 CPUCPU1M 픽셀 × 10 cyc / 170 MHz = 0.06 s정수식, 컴파일 최적화 -O0/-O23수준동일
B11MCU→PC 반환UART TXGray24 = 입력과 같음, Gray8 = 1/3출력 형식, baud2수준동일
B12인터럽트·HAL 오버헤드CPU청크당 수십 µs, 폴링 방식이면 CPU 100 %IT/DMA/폴링, HAL vs LL3수준동일

모델 근거: lab/src/model/stub.js 예시값. 병목 순서는 조건에 따라 바뀐다(B1 → B4·B5 → B7). 우선순위는 "요인 하나를 바꿨을 때 Ttotal 변화량"으로 정한다.


3. 요인과 수준 (실험 매트릭스)

요인수준기본(Baseline)관련 병목
F1 baud115200 · 921600 · 3 M · 4 M · 8 M115200B1
F2 흐름 제어ack · creditackB3, B7
F3 버퍼 수1 · 2 · 3 · 41B7
F4 청크 크기1 KiB · 4 KiB · 16 KiB4 KiBB3, B7
F5 UART 수신 방식폴링 · IT · DMA폴링B12
F6 SPI 클럭10.6 · 21.25 · 42.5 MHz(보드 최대)10.6B6, B9
F7 SPI 전송 방식폴링 · DMA폴링B6, B12
F8 WIP 폴링 주기busy · 10 µs · 100 µsbusyB6
F9 소거 정책섹터 온디맨드 · 블록 사전 · 칩 사전 · (없음=금지)블록 사전B4
F10 페이지 정렬안 A(오프셋 54) · 안 B(256 정렬)안 AB5
F11 검증 재독출on · offonB8
F12 출력 형식Gray24 · Gray8Gray24B11
F13 Gray 정수식int1000 · int77 · int77bint1000B10
F14 Flash 칩~~W25Q32JV · W25Q64JV · IS25LP032D~~ 제외(2026-09-17 결정). 팀 칩 = W25Q64JV(Adafruit 5633, W25Q32JV와 명령·타이밍 동일). 차이 날 칩(IS25LP032D)은 수급 불가W25Q64JVB5
F15 브리지STLINK-V3E · FT232H · CP2102N (부 요인: HW 흐름 제어 RTS/CTS 없음/있음. V3E는 Nucleo-64에 배선 없음, FT232H는 LPUART1 RTS/CTS에 연결)V3EB2, B3
F16 보드G474RE · F411RE · H743ZI2G474REB6, B12
F17 변환 시점장벽 후(전체 저장 → 재독출) · 청크 재독출 스트리밍(청크 저장 → 그 청크를 Flash에서 다시 읽어 변환·송신, 수신과 겹침)장벽 후B1+B11 겹침

F17 주의: 스트리밍도 데이터는 Flash를 거치고(재독출 주소 = 저장 주소) run 끝에 전체 이미지가 Flash에 남아 있으므로 공지 4절("Flash에 전체 이미지 저장", "RAM만 변환 불인정")을 형식상 만족한다. 그러나 공지 3절의 순서(저장 → 읽기 → 변환 → 재전송)를 문자 그대로 요구하는지는 교수 확인이 필요하다. 1차 발표 질의에서 확인 전까지 Baseline·최종 조합은 장벽 후 방식으로 하고, 스트리밍은 별도 조건으로만 측정·보고한다. UART는 전이중이라 상행 수신과 하행 송신이 동시에 가능하며, 이론상 Ttotal ≈ max(상행, 하행) + 지연으로 최대 약 2배 단축이다. 증거 = 재독출 주소 로그 + run 종료 후 Flash 덤프와 원본 비교.

3.1 실험 순서

  1. Baseline(3차 발표): 모든 요인 기본값. n = 10. 이 값이 대조군.
  2. OFAT(one-factor-at-a-time): Baseline에서 요인 하나씩 바꿔 n = 10. 총 run ≈ Σ(수준−1) × 10 ≈ 30 × 10 = 300 run. 3 MB 왕복 최악 10분/run이므로 baud 115200 조건은 n = 5로 줄인다.
  3. 주요인 3개 2³ 요인 실험: OFAT에서 효과 큰 3개(예상 F1·F9·F12)로 8조합 × n = 5. 교호작용 확인(Jain 1991, 17~18장).
  4. 최종 조합(4차): 효과 있는 수준을 전부 켠 조건 n = 10 → Baseline 대비 배수.
  5. 하드웨어 요인 F15·F16은 최종 조합 위에서만 교체 비교(각 n = 5). F14는 제외.

3.1a 고속 baud 안정성 시험 (F1 수준 채택 조건)

baud를 올리면 세 가지가 깨질 수 있다. (a) 분주 오차: LPUART1은 LPUARTDIV = 256·fck / baud 정수라 fck 170 MHz에서 8 M = 5440, 4 M = 10880으로 오차 0. 브리지 쪽 오차와 합이 ±2 % 안이어야 한다. (b) 수신 처리: 8 Mbaud = 1.25 µs/byte라 바이트 인터럽트는 불가, 순환 DMA 필수. DMA 재시작 공백이 1바이트를 넘으면 overrun. (c) 신호·USB: 온보드 V3E 경로는 PCB라 문제 없고, 외장 브리지는 점퍼 30 cm 이하. USB HS 벌크는 8 Mbaud(0.8 MB/s)에 여유.

시험: baud 수준마다 알려진 패턴 3 MB를 왕복 10회, 프레이밍/오버런 오류 카운터(USART ISR FE·ORE)와 청크 CRC 실패 수를 기록. 채택 규칙 = 10회 모두 오류 0인 최대 baud. 오류가 나면 한 단계 아래 baud와 흐름 제어(RTS/CTS 또는 credit)로 재시험. 전환 규칙: V3E VCP가 목표 baud(8 M)에서 10회 무오류를 못 내면 FT232H + RTS/CTS로 브리지를 바꾸고 같은 시험을 반복한다. FTDI 드라이버 지연 타이머는 1 ms로 설정하고 로그 bridge 필드에 기록(기본 16 ms는 ACK 방식에서 청크당 16 ms 손실). 이 시험은 Baseline 전에 끝낸다(9/29 내부 마감 항목).

참고 단위: 115200 bps = 0.115 Mbit/s ≈ 11.5 kB/s(8N1 10 bit/byte). 8 Mbaud = 0.8 MB/s, 약 70배.

3.2 통제·기록 규칙

3.3 비교 장비 목록

용도장비수량비고
기준 보드Nucleo-G474RE (STLINK-V3E, VCP = LPUART1)4팀 공통
보드 비교보유 보드: F411, F746G-DISCO, H7(모델 확인)0 구매F16. 보드 교체 = 클럭·USART·캐시·브리지 동시 변경 → 참고 표만, 인과 주장 없음
기준 FlashW25Q64JV QSPI DIP 브레이크아웃 (Adafruit 5633, W25Q64JVSSIQ, 3.3 V, 디바이스마트 15013111 · 5,016원)6 (4 + 예비 2)공지 부품 W25Q32JV와 명령·페이지·섹터·tPP 동일. QSPI IO2·IO3 있어 B9 실험 가능. tCE 20 s(Q32는 10 s)
칩 비교—0F14 제외
브리지 비교FT232H 모듈, CP2102N 모듈각 1~2F15
외부 시간 검증로직 애널라이저 ≥ 200 MS/s · 16채널 (Kingst LA2016 7~8만 원 또는 DSLogic Plus 400 MS/s 10만 원대). 24 MHz급 저가품은 SPI 42 MHz 불가11.1a 외부 진실 층. UART RX/TX·CS·MISO·GPIO 토글 4핀
신호 품질실험실 오실로스코프 ≥ 100 MHz대여8 Mbaud·SPI 42 MHz 파형 링잉 확인, 조건당 1회
측정 PC같은 노트북, USB 3.0 포트 고정1QPC 타이머

4. 다이어그램 14장 명세 (전부 흑백 · IEEE 스타일)

공통 계약

D01 sys-block · 시스템 블록도 (type ibd)

PC(프로그램 · USB 호스트) — USB HS — [Nucleo-G474RE: STLINK-V3E(VCP) — LPUART1(RX DMA · TX DMA) — STM32G474 코어(RAM 버퍼 ×3 · DWT 타이머) — SPI1(DMA) — CS·SCLK·MOSI·MISO] — W25Q32JV(4 MiB). 포트는 smallsq, 커넥터는 plain + 신호명 라벨. 측정점 T0·T5(PC 쪽), T2·T3·T4(MCU 쪽)를 text 노드로 표시.

D02 dfd · 데이터 흐름도 (type dfd)

외부 개체 PC(송신)·PC(수신). 프로세스 P1 청크 수신, P2 Flash 프로그램, P3 장벽 확인(+검증 CRC), P4 블록 읽기, P5 Gray 변환, P6 송신. 저장소 D1 RAM 버퍼, D2 W25Q32, D3 Gray 헤더. 흐름 라벨에 바이트 단위(4096 B 청크, ≤256 B 페이지, 3072 B 행). 장벽은 P3에서만 P4로 흐름이 나가도록 그려 "장벽 전 읽기 없음"을 구조로 보인다.

D03 buffer-fsm · 버퍼 소유권 상태기계 (type statechart)

상태 FREE, RX_FILLING(소유 RX DMA), FULL(소유 없음 · 대기), PROGRAMMING(소유 SPI DMA), 그리고 오류 상태 OVERRUN, CRC_FAIL. 전이: DMA 시작 / 청크 도착(순번·CRC 검사) / flash_write() 시작 / WIP=0 → FREE / 빈 버퍼 없음 → OVERRUN / CRC 불일치 → CRC_FAIL → 재전송 요청 → FREE. 각 상태 rrect에 entry 동작 sub. 불변조건 INV-04·05(버퍼 하나에 소유자 하나)를 note로.

D04 seq-ack · ACK 흐름 제어 시퀀스 (type sequence)

라이프라인 PC · MCU(LPUART DMA) · MCU(main) · W25Q32. 청크 k: PC→MCU 데이터 4096 B → 청크 도착 IRQ → flash_write → WREN/PP×16/RDSR 폴링(루프 프레임) → WIP=0 → ACK → PC 다음 청크. 활성 막대로 "PC 대기 구간"을 보이고 note로 "겹침 없음 · 청크당 왕복 지연".

D05 seq-credit · credit 흐름 제어 시퀀스 (type sequence)

같은 라이프라인. PC가 credit 3만큼 선행 송신, MCU는 프로그램 완료마다 credit +1 반환. 수신과 프로그램이 겹치는 구간을 activation 겹침으로 표시. note "빈 버퍼 수 보장 = overrun 방지 조건".

D06 pp-timing · Page Program 타이밍 (type timing)

레인 CS, SCLK(버스트 표시), MOSI(06h | 02h+A23..A0 | D0..D255), DMA TC, SPI BSY, WIP, CPU(RDSR 폴링 펄스). 시간축 0 ~ 약 510 µs(21 MHz 예시) 또는 42 MHz 값. 세 완료 마커(DMA TC · BSY=0 · WIP=0)를 세로 점선 + 라벨. poly로 파형.

D07 flash-write-flow · flash_write(addr, buf, n) 페이지 분할 순서도 (type flowchart)

시작 → n > 0? → 페이지 잔여 = 256 − (addr mod 256) → len = min(n, 잔여) → 섹터 첫 페이지이고 온디맨드? → 섹터 소거·WIP 대기 → WREN → PP(addr, len) → WIP=0 폴링(타임아웃 → 오류 F04) → addr += len, n −= len → 루프 → 완료 신호. 실패 분기(타임아웃·wrap 방지 검사)를 점선.

D08 restore-flow · 복원 경로 순서도 (type flowchart)

장벽 확인 → 헤더·팔레트 송신 → 행 배수 블록 읽기(Fast Read 0Bh, DMA) → 행 단위 Gray(픽셀 3 B 경계 유지, 잔여 이월 0) → TX DMA 큐 → 마지막 행? → 완료. 3단 겹침은 activity(D09)에서, 여기는 논리 순서만.

D09 pipeline-activity · 저장·복원 파이프라인 액티비티 (type activity, 스윔레인 region 3개: PC / MCU / Flash)

fork/join(hbar)으로 수신 DMA와 프로그램의 병행, 장벽 join, 복원 3단(읽기·변환·송신) 병행. 순차 전략과의 차이는 note. F17 스트리밍 변형은 점선 region으로 "교수 확인 후"라고 표기해 같은 그림 오른쪽에 작게(장벽 join을 우회해 청크 재독출 → 변환 → 송신이 수신과 병행).

D10 bottleneck-ishikawa · 병목 원인 계통도 (type ishikawa)

결과 = 총시간 Ttotal. 큰 가지 6: UART 전송(B1·B3·B11), USB·PC(B2), Flash 내부(B4·B5), SPI·트랜잭션(B6·B9), 버퍼·겹침(B7), CPU·소프트웨어(B8·B10·B12). 잔가지에 요인 F번호.

D11 ab-procedure · A/B 측정 절차 순서도 (type flowchart)

조건 설정(요인 1개 변경) → 워밍업 run 폐기 → run i (i = 1..n) → 성공 판정(1.2절) 실패면 실패 수 +1 → 로그 JSON 저장 → n 완료? → 중앙값·IQR 계산 → Baseline 대비 차이 → 다음 요인. 2³ 요인 실험 분기 note.

D12 measure-timing · 측정점과 시계 (type timing)

레인 PC 시계, MCU DWT, 단계(UART RX / Erase / Program / Verify / Read / Gray / UART TX). T0~T5 세로 점선. PC 시계 레인에 Ttotal = T5 − T0 화살표, MCU 레인에 단계 구간. "두 시계를 빼지 않는다" note.

D13 fail-fta · 실패 고장수목 (type fta)

최상위 사건 "반환 Gray BMP 불일치 또는 미완료". OR 아래: 청크 손실(overrun · 순번 누락) / Flash 쓰기 손상(미소거 쓰기 F07 · wrap · WIP 무시) / 장벽 위반(장벽 전 읽기) / 변환 오류(픽셀 경계 이월 누락 · 정수식 오차 초과) / 헤더 오류(stride · bottom-up · 팔레트). 랩 F01~F12 id를 잎에 표기.

D14 module-n2 · 모듈 인터페이스 N² 차트 (type n2)

대각선 4칸: 통합(main) · UART 드라이버 · Flash 드라이버 · BMP/Gray. 비대각 칸에 주고받는 것: 청크 도착 이벤트·송신 큐(UART→통합), 빈 버퍼(통합→UART), flash_write/flash_read/저장 완료 신호(Flash→통합), 버퍼 소유권 규칙(통합→Flash), gray_row·검증 결과(BMP→통합), Flash 읽은 행(Flash→BMP 경유 통합). 경계 규칙 4개를 note.

(선택 D15 schedule-pert · 내부 마감 PERT, type pert: 9/29 → 10/6 → 10/13 → 10/20 → 11/3 → 11/10 → 11/17 → 11/24 → 12/1 → 12/8 → 12/15. 시간 남으면.)

에이전트 분담

각자 diagrams\INDEX.md에 자기 행만 추가(파일 잠금 충돌 방지: INDEX-<A|B|C>.md로 따로 쓰고 Fable이 합친다).


5. 참고문헌 (INDEX의 근거 열에 이 번호로 인용)

[1] S. Saidi, P. Tendulkar, T. Lepley, O. Maler, "Optimizing explicit data transfers for data parallel applications on the Cell architecture," ACM TACO 8(4), 2012. doi:10.1145/2086696.2086716 — 청크 크기·더블버퍼 닫힌식(D05·D09·F4 근거).

[2] J. C. Sancho, D. J. Kerbyson, "Analysis of double buffering on two different multicore architectures," IPDPS 2008. doi:10.1109/IPDPS.2008.4536316 — 겹침 효과 비교 방법(D09).

[3] D. M. Tran, J.-Y. Choi, "A real-time data storage method for AC servo motor drives using micro SD card," IEEE Access 11, 2023. doi:10.1109/ACCESS.2023.3328394 — 저장 매체 busy 은닉·누락률 A/B(D03·D11).

[4] R. Jain, *The Art of Computer Systems Performance Analysis*, Wiley, 1991, ch. 16–18 — OFAT·2^k 요인 실험 설계(3.1절·D11).

[5] T. Hoefler, R. Belli, "Scientific benchmarking of parallel computing systems," SC'15, 2015. doi:10.1145/2807591.2807644 — 중앙값·분위수 보고, 평균 금지(3.2절).

[6] T. Mytkowicz, A. Diwan, M. Hauswirth, P. F. Sweeney, "Producing wrong data without doing anything obviously wrong!," ASPLOS 2009. doi:10.1145/1508244.1508275 — 측정 편향(3.2절).

[7] Winbond, *W25Q32JV Datasheet*, Rev K, 2026 — tPP/tSE/tBE/tCE, Page Program 1~256 B, wrap(D06·D07·B4·B5).

[8] STMicroelectronics, *RM0440 STM32G4 Reference Manual* — LPUART·SPI·DMA·DWT(D01·D06·D12).

[9] STMicroelectronics, *UM2505 STM32G4 Nucleo-64 boards* — STLINK-V3E VCP ↔ LPUART1 배선(D01).

[10] ITU-R BT.601-7, 2011, §2.5.1 — luma 계수(F13).

[11] Microsoft, *Bitmap Storage* / *BITMAPINFOHEADER*, Win32 docs — 헤더·stride·bottom-up(D08).

[12] OMG, *UML 2.5.1*, 2017 — statechart·sequence·activity 표기(D03·D04·D05·D09). IEEE Std 1016-2009 — 설계 기술 뷰(D01·D02·D14).

[13] N. R. Lane, "N² chart," NASA Systems Engineering Handbook SP-2016-6105 rev2, App. F — N² 표기(D14). IEC 61025:2006 — FTA 표기(D13). K. Ishikawa, *Guide to Quality Control*, 1976 — 특성요인도(D10).


6. 산출물 검사 (Fable)

  1. 14장 PNG 전부 Read로 열어 표기 오류·내용 오류 확인. 2. lint 0 확인. 3. INDEX 병합. 4. 발표1차_브리핑 7절 뒤에 "실험 설계 = 실험설계\A7" 링크 한 줄.

7. 하지 않는 것

컬러, 실측값 기입, 랩 파일 수정, 논문 본문 작성(이 문서는 설계·방법론까지).

8. 이 설계의 열린 문제 (팀 회의 · 교수 확인)

사전 소거 Tprep 포함 여부(교수 확인), 청크 재독출 스트리밍(F17) 허용 여부(교수 확인, 1차 질의), 허용 오차(0 또는 ±1), 검증 재독출 on/off 기본값, 안 A/B 정렬 기본값, 채택 baud(3.1a 시험 결과).

9. Astra(3D) 메모 → ASTRA_MEMO.md

파일