CodingBox 문서

쓰기 보호 방식과 프로그래밍

폼 팩터는 모듈의 필드가 어디에 있는지를 알려줍니다. 이와 독립적인 두 번째 축은 그것을 바꿀 수 있는지를 결정하는데, 바로 모듈이 쓰기로부터 자신의 메모리를 보호하는 방식입니다. 제조사들은 다섯 가지 방식을 사용하며, 각각 프로그래밍 방법이 다릅니다. 유형을 먼저 파악해 두면 쓰기 실패로 허비하는 시간을 몇 시간이나 아낄 수 있습니다.

다섯 가지 보호 유형

#유형알아보는 방법프로그래밍 방법
1비보호즉시 쓰기가 됩니다직접 쓰기, 단 느린 클록으로
2하드웨어 쓰기 보호 핀어떻게 시도해도 읽기 전용이며 비밀번호도 소용없습니다쓰는 동안 WP 라인을 제어
3비밀번호(펌웨어 컨트롤러)비밀번호를 입력할 때까지 WRITE FAIL먼저 0x7B에 비밀번호 입력
4임시 저장 + 저장 명령쓰기는 “성공”하지만 전원을 껐다 켜면 되돌아갑니다벤더의 저장 시퀀스 전송
5복합형잠금 해제에 벤더 고유의 입출력 시퀀스가 필요합니다벤더의 프로그래밍 알고리즘(스크립트)

1. 비보호

EEPROM에 쓰기 제한이 없습니다. 실무에서 걸림돌이 되는 것은 타이밍입니다: 안정적인 프로그래밍에는 보통 1 kHz 안팎의 2선식 클록이 필요한데, 이는 일반적인 읽기 속도보다 약 10배 느립니다. 표준 속도에서는 쓰기가 간헐적으로 실패하며 일부만 기록된 페이지가 남습니다. 관련 징후로, 일부 단순한 모듈에서는 A0h만 깨끗하게 읽히고 A2h는 오류를 반환합니다.

2. 하드웨어 쓰기 보호 핀

EEPROM의 WP 핀이 저항을 통해 전원에 묶여 있어 칩은 전원이 켜지는 순간부터 잠긴 상태입니다. 잠금을 해제하려면 쓰기가 진행되는 동안 더 낮은 임피던스 경로로 WP 라인을 접지 쪽으로 끌어내려야 하며, 이는 해당 라인을 제어할 수 있는 프로그래머 보드만 할 수 있는 일입니다. 소프트웨어만으로는 이 유형을 뚫을 수 없습니다: 전원을 껐다 켜도, 비밀번호를 시도해도 모듈은 읽기 전용 상태로 남습니다.

3. 비밀번호 보호(펌웨어 컨트롤러)

SFF-8472에 따르면 A2h 블록은 오프셋 0x7B부터 7바이트의 비밀번호 영역을 예약하고 있으며, 대부분의 모듈은 4바이트 비밀번호를 사용합니다. 모듈 내부의 컨트롤러는 이 영역에 기록된 값을 저장된 값과 비교한 뒤에야 EEPROM 쓰기를 잠금 해제합니다. 비밀번호가 없으면 모든 쓰기가 WRITE FAIL을 반환합니다.

  • 올바른 비밀번호를 입력한 다음 씁니다.
  • 모른다면 알려진 벤더 비밀번호를 대상으로 사전 검색을 하거나(흔한 값은 EEPROM 재코딩 참고) 제조사에 문의합니다.
  • 이런 컨트롤러는 클록 속도와 블록 사이의 간격에 민감하므로, 천천히 프로그래밍해야 하는 또 다른 이유가 됩니다.

4. 저장 명령이 있는 임시 저장

쓰기 내용은 휘발성 메모리에 기록됩니다. 겉보기엔 문제가 없어 보이지만, 모듈의 전원을 껐다 켜면 이전 코드가 그대로 돌아옵니다. 벤더의 펌웨어는 임시 이미지를 영구 저장소에 반영하기 위해 명시적인 저장 명령(벤더 고유의 바이트 시퀀스)을 필요로 합니다. 이를 규정하는 표준은 없으며, 벤더마다 시퀀스가 달라 각각 스크립트로 정리해 둡니다.

5. 복합 보호

최신 모듈은 여러 메커니즘을 겹겹이 쌓습니다: 하드웨어 WP 비밀번호 저장 명령 동작 전제 조건이 모두 필요합니다. 예를 들어 쓰기를 받아들이기 전에 모듈을 저전력 모드로 전환해야 하는 경우입니다. 이는 A2h 오프셋 0x80 위로 256개 이상의 페이지를 노출하는 최근 SFF-8472 리비전의 모듈과 CMIS 모듈에서 흔합니다. 프로그래밍에는 제조사의 알고리즘이 필요하며, 보통 대량 구매 고객에게만 공유됩니다.

유형을 식별하는 방법

  1. 단순히 읽어 봅니다: A2h가 깨끗하게 읽힙니까? (유형 1은 흔히 여기서 실패합니다.)
  2. 보호되지 않은 필드에 1바이트를 써 봅니다. 즉시 성공 → 유형 1. WRITE FAIL → 유형 3(또는 5). 겉으로는 성공하지만 전원을 껐다 켜면 되돌아감 → 유형 4.
  3. 알려진 비밀번호를 입력해 봅니다. 그래도 읽기 전용이면 → 유형 2(하드웨어) 또는 유형 5(복합형).
  4. 폼 팩터와 규격 리비전을 확인합니다. CMIS 모듈과 최신 리비전의 SFF-8472 모듈은 대개 유형 5입니다.

CodingBox에서

  • 비밀번호 설정: 테이블 주소, 비밀번호 주소(0x7B), 값을 쓰기 보호된 메모리와 비밀번호에서 설정하며, 알려진 비밀번호는 데이터베이스에서 자동으로 적용됩니다.
  • 스크립트: CodingBox의 프로그래밍 스크립트에는 유형 4와 5를 위한 벤더의 저장 시퀀스와 잠금 해제 알고리즘이 담겨 있습니다.
  • 표준 속도에서 실패하는 모듈을 위한 바이트 단위 쓰기와 저속 클로킹입니다.
  • 하드웨어 WP는 소프트웨어가 아니라 프로그래머 보드가 처리합니다.
  • 쓰기 전에 모든 읽기 결과가 code database에 저장되므로, 실패한 시도도 항상 복구할 수 있습니다.

벤치에서 나타나는 증상, 즉 WRITE FAIL, 되돌아가는 쓰기, 거부되는 비밀번호와 각각에 대한 대처법: EEPROM 읽기·쓰기 오류.

이런 유형이 존재하는 이유, 즉 개별 EEPROM과 MCU 에뮬레이션 맵의 차이, 저장 명령, 펌웨어가 구현하는 방식에 따른 펌웨어 미러와 서명까지: 컨트롤러와 펌웨어.


이 문서에서 부정확한 내용이나 오류를 발견하면 해당 부분을 선택하고 Ctrl+Enter를 눌러 해 주세요.