1. Introduction
OCD32_MLink는 Keil MDK에서 메가윈(megawin)사가 사용하는 ICE(인서킷 에뮬레이터) 도구입니다. 이 툴은 메가윈의 Cortex®-M0 시리즈 칩만 지원합니다.
본 개발 키트는 OCD(On-Chip-Debug) 실시간 디버깅 기능을 제공합니다. 또한, 패키지에 포함된 “ICP32_Programmer.exe”는 메가윈의 MLink를 위해 설계된 소프트웨어로, 사용자는 실제 제품에 장착된 MCU 칩을 분리하지 않고도 소프트웨어 도구에서 애플리케이션 코드를 업데이트할 수 있습니다. 추가로, 프로그래밍할 데이터를 MLink의 비휘발성 저장소에 저장할 수 있기 때문에, 이 독립형 프로그래머는 호스트(PC) 없이도 동작할 수 있습니다.
이 기능은 현장에서 PC가 없을 때 특히 유용합니다. 사용자는 SWDIO, SWCLK, VCC, GND, RST 등 5개의 핀만 남겨 MLink와 연결하면 됩니다.
참고: MLink의 VCC 핀은 타겟 보드에 전원을 공급하지 않으므로, 사용자가 직접 전원을 공급해야 합니다.

PS1. USB 연결이 정상적으로 이루어지지 않을 경우, 전원 공급이 정상적인지와 시스템에서 해당 장치를 인식했는지 확인해 주시기 바랍니다.
PS2. 장치 초기화가 비정상적으로 이루어진 경우, 오프라인 모드의 내용이 올바르지 않음을 의미합니다. 오프라인 모드를 다시 설정해 주시기 바랍니다.
2. Setup MLink for Keil MDK
2.1. 패키지를 설치하면, 그림 2와 같이 몇 개의 폴더가 생성됩니다.

2.2. “Setup_forKeil” 폴더 내의 “SetupforKeilMDK.exe”를 실행해 주십시오. 프로그램이 그림 3과 같이 표시됩니다. 사용자는 “Update MLink Firmware for CM0”라는 버튼을 눌러 펌웨어를 업데이트할 수 있습니다.

2.3. “Browse” 버튼을 클릭하여 Keil MDK의 루트 디렉터리를 선택해 주세요(이 기능은 MDK4 및 MDK5에서만 사용할 수 있습니다). 그림 4와 같이 선택한 뒤 “OK”를 클릭하면 그림 5와 같이 표시됩니다.


2.4. “Reinstall” 버튼을 클릭하면, 애플리케이션이 “tools.ini” 파일에 설정을 추가합니다.

2.5. 완료되면 “확인(OK)” 버튼을 클릭하세요.
2.6. 설치 절차를 마치려면 “종료(Exit)” 버튼을 클릭하세요.
2.7. “UV4.exe”를 실행한 후 샘플 프로젝트인 “Standard_Project”를 엽니다.
2.8. “Project” 메뉴를 클릭하고 “Options for Target ‘Target 1’…”을 선택합니다.
2.9. 그림 7과 같이 “Debug” 탭을 선택합니다.
2.9.1. “MLink Cortex-M0 Debugger”를 선택합니다.
2.9.2. “Load Application at Startup”를 체크합니다.
2.9.3. “Run to main()”을 체크합니다.

2.10. 그림 7을 참고하여 “ Setting ” 버튼을 클릭하면, 그림 8과 같은 대화 상자가 나타납니다. 그림 8을 참고하여 디버그 어댑터를 설정하세요. 하드웨어가 정상적으로 동작한다면, 대화 상자의 오른쪽 리스트 컨트롤에 SW Device가 표시됩니다.

2.11. 그림 9와 같이 “Flash Download” 탭을 클릭하세요.
2.11.1. “Erase Sectors”를 클릭하세요.
2.11.2. “Program”과 “Verify”를 체크하세요.
2.11.3. “OK” 버튼을 클릭하세요.

프로그램 알고리즘이 그림 9와 같이 표시되지 않는 경우, “ Add ” 버튼을 클릭하여 그림 10과 같이 플래시 프로그래밍 알고리즘을 선택하세요.

2.13. “Flash” 메뉴를 클릭하고 “Download”를 선택하세요.
2.14. 프로젝트 디버그를 시작하세요.
주의 1 : MLink를 처음 사용할 때는 반드시 “ICP32_Programmer.exe”를 실행한 후 “Check ID”를 눌러 MLink의 펌웨어를 업데이트하세요.
주의 2 : 칩이 잠겨 있을 경우, Keil IDE에서 MLink로 디버그 모드 실행이 불가능합니다.
칩 잠금 해제를 위해 “ICP32_Programmer.exe”를 실행한 후 “Update Target”을 클릭하세요.
3. Update Programmer
다음 그림은 PC용 애플리케이션 프로그램의 그래픽 사용자 인터페이스를 보여줍니다. 이어지는 섹션에서는 이 도구를 매우 쉽게 사용하는 방법을 설명합니다.
1단계: "MCU 시리즈"를 선택한 후 "MCU 부품 번호"를 선택하세요.

참고 1: 자동 재로딩(Auto Reload) : 애플리케이션이 비활성 상태에서 활성 상태로 전환될 때 코드 버퍼가 다시 로드됩니다.
참고 2: 버퍼 수정 활성화(Enable Buffer Modify) : 사용자가 키보드를 통해 코드 버퍼를 직접 수정할 수 있습니다.
2단계 : “Load File(파일 불러오기)”를 클릭하여 파일을 선택한 후 AP(코드) 또는 IAP(데이터) 중에서 로드할 항목을 선택하세요. “Load File”은 여러 번 클릭하여 서로 다른 파일을 불러올 수 있습니다. IAP(데이터)를 불러오는 경우, 사용자가 주소를 입력해야 합니다. 파일 불러오기 시 HEX 및 BIN 데이터 형식이 모두 지원됩니다.

3단계: "Insert ISP-Code"를 클릭하면 메가윈에서 제공하는 ISP 코드 또는 사용자가 정의한 ISP 코드를 삽입할 수 있습니다. 만약 ISP 기능이 필요하지 않다면 3단계는 생략해도 됩니다.

4단계 : H/W 옵션 설정
하드웨어 옵션은 전원이 꺼진 후에도 비휘발성인 칩의 기본 동작을 정의 합니다. 하드웨어 옵션의 세부사항은 사용자 가이드를 참조하십시오.

5단계 : MLink에 프로그래밍 데이터를 다운로드 하려면 “Off-Line Mode”를 클릭하십시오.

6단계: "Max Counter"와 "Serial Number" 설정. "Max Counter"는 오프라인 프로그래밍 횟수를 제한하는 데 사용됩니다. "Serial Number"는 코드와 함께 프로그래밍됩니다. 이 기능이 필요하지 않으면, "OK"를 눌러 MLink를 업데이트하십시오.

Serial Number 사용 방법:
(1) Serial Number 기능을 활성화하면 총 16바이트가 사용됩니다. (문자열용 12바이트와 숫자용 4바이트)
(2) 문자열용으로 총 12바이트이며 제조사 또는 제품 문자열로 사용될 수 있습니다.
(3) 숫자용으로 총 4바이트이며 값은 0x00000000부터 0xFFFFFFFF까지 가능합니다.
(4) (3단계에서 설정한) 숫자는 "Download"를 완료하면 자동으로 1씩 증가합니다.
(5) Serial Number의 시작 주소. 칩 크기에서 16을 뺀 값부터 제한되며, 시작부터 끝까지 이 범위가 사용되지 않는지 확인하십시오.
4. Update Target
타겟을 업데이트하는 방법? 사용자는 다음을 할 수 있습니다:
.4.1. "Update Target"을 클릭하여 온라인 업데이트를 프로그래밍합니다. 3. Update Programmer의 1단계부터 4단계를 참조하십시오. 또는
4.2. MLink의 "SW1"을 클릭하여 오프라인 업데이트를 프로그래밍합니다. 3. Update Programmer를 참조하십시오.

5. Note
5.1. ICP32_Programmer를 사용하여 타겟을 업데이트한 후, 칩은 일반적으로 잠금 해제 상태입니다.
5.2. 응용 프로그램이 더 많은 I/O를 사용할 때, PC4, PC5 및 PC6을 GPIO로 구성할 수 있습니다. 그러나 이 3개의 핀은 MLink와 타겟 칩 간의 통신에도 사용됩니다. PC4, PC5 및 PC6을 GPIO로 프로그래밍한 후에는 SWD 인터페이스가 비활성화되고, 디버그 모드(ICE)와의 연결이 끊어집니다. 그리고 SWD 인터페이스가 비활성화되었기 때문에, ICP 기능도 비활성화됩니다. 이 경우, 프로젝트의 다른 모든 기능 디버그를 완료한 다음 디버그 모드 없이 PC4, PC5 및 PC6 GPIO 기능을 테스트할 것을 권장합니다. 수정 후 코드를 다시 로드하여 재테스트하려면 다음 단계를 따라야 합니다:
5.2.1. 타겟 칩의 전원을 끕니다 5.2.2. 타겟 보드의 리셋 버튼(RSTN/PC6 핀)을 누르고 유지합니다 5.2.3. 타겟 칩의 전원을 켭니다 5.2.4. ICP32 Programmer AP에서 "Update Target"을 클릭하고, 2초 후에 리셋 버튼을 놓습니다.
5.3. Auto Reload: 코드 버퍼의 소스가 변경되면, 애플리케이션은 파일을 다시 로드하도록 알림을 받습니다.
5.4. Enable Buffer Modify: 사용자가 코드 버퍼를 수정할 수 있도록 합니다.
5.5. Save Checksum: MG32F02A032, MG32F02A128, MG32F02A064, MG32F02U128, MG32F02U064 및 MG32F02V032만 지원합니다. 코드 버퍼의 체크섬을 특정 위치에 저장합니다.
5.6. Fill in unused bytes: 이 항목이 체크되면, 사용자는 사용되지 않은 바이트를 0x00 또는 0xFF로 채우도록 지정할 수 있습니다. 로드된 파일을 제외하고, 나머지 공간은 사용되지 않은 바이트로 채워집니다. 코드 버퍼 크기는 칩 크기와 동일하게 됩니다.
6. Hardware Option
6.1. Introductiuon
하드웨어 옵션은 칩의 기본 동작을 정의하며, 이 설정들은 전원이 꺼져도 휘발되지 않습니다. 최대 64바이트까지의 온칩 옵션 바이트(OB) 플래시 메모리가 내장되어 있어, 하드웨어 옵션을 설정하는 데 사용되며 이 값들은 임베디드 플래시 메모리에 저장됩니다. 하드웨어 옵션 바이트(OB )는 범용 프로그래머나 “megawin ARM Writer”, 또는 “megawin ARM ICE Adapter”(ICE 어댑터는 ICP 프로그래밍 기능도 지원함)를 통해서만 설정할 수 있습니다.
전체 칩을 소거하면 모든 하드웨어 옵션은 기본값으로 초기화되며, ISP 메모리와 IAP
메모리가 설정되어 있지 않습니다.
옵션 바이트 플래시 메모리(OB )는 칩 구성 옵션 레지스터(OR )로 로드되어, 웜 리셋 또는 콜드 리셋 주기 동안 하드웨어 구성 제어에 사용됩니다. 자세한 내용은 “ System Memory” 챕터의 “Hardware Option Byte Flash Memory” 섹션을 참고하십시오. 옵션 바이트 플래시 메모리(OB )와 칩 구성 옵션 레지스터(OR )에 대한 더 많은 정보를 확인할 수 있습니다.
6.2. Hardware Option Byte
사용자가 설정할 수 있는 하드웨어 옵션 바이트는 다음과 같습니다. ( ~ 권장값)
l BOOT_MS
시스템 콜드 리셋 시 부팅 메모리 선택 및 해당 메모리가 0x0000 0000 주소에 매핑됩니다.
: 애플리케이션 플래시
: 부트 플래시
: 내장 SRAM
l LOCK_DIS
: 활성화. 범용 라이터나 프로그래머에서 코드 덤프 시 보안을 위해 0xFFFFFFFF로 잠깁니다.
: 비활성화. 잠기지 않음.
l IAP_SIZE
IAP_SIZE는 사용자가 정의하는 IAP 메모리 크기를 지정합니다. 값이 0이면 IAP 메모리 크기는 0K바이트입니다.
값이 1이면 MG32F02A132/072/032의 경우 IAP 메모리 크기는 1K바이트,
MG32F02A128/U128/A064/U064의 경우 0.5K바이트입니다.
l ISP_SIZE
ISP_SIZE는 부트로더 코드를 포함하는 ISP 메모리 크기를 지정합니다. 값이 0이면 ISP
플래시 메모리가 없으며, 값이 1이면 MG32F02A132/072/032의 경우 ISP 전체 메모리 크기는 1K바이트,
MG32F02A128/U128/A064/U064의 경우 0.5K바이트입니다.
l BOD0_WE
BOD0 트리거 웜 리셋 활성화. 활성화 시 전압 임계값 감지 이벤트가 발생하면 BOD0가 CPU에 리셋을 발생시킵니다.
감지 이벤트가 발생함.
: 활성화. BOD0가 CPU에 리셋 이벤트를 발생시킴.
: 비활성화. BOD0가 CPU에 리셋을 발생시키지 않음.
l BOD1_WE
BOD1 트리거 웜 리셋 활성화. 활성화 시 전압 임계값 감지 이벤트가 발생하면 BOD1이 CPU에 리셋을 발생시킵니다.
감지 이벤트가 발생함.
: 활성화. BOD1이 CPU에 리셋 이벤트를 발생시킴.
: 비활성화. BOD1이 CPU에 리셋을 발생시키지 않음.
l BOD2_WE
BOD2 트리거 웜 리셋 활성화. 활성화 시 전압 임계값 감지 이벤트가 발생하면 BOD2가 CPU에 리셋을 발생시킵니다.
감지 이벤트가 발생함. (이 비트는 MG32F02A132/072/032에서는 지원되지 않습니다.)
: 활성화. BOD2가 CPU에 리셋 이벤트를 발생시킴.
: 비활성화. BOD2가 CPU에 리셋을 발생시키지 않음.
l IWDT_EN
: 활성화. 전원 인가 후 IWDT가 활성화됩니다.
: 비활성화. 전원 인가 후 IWDT가 자동으로 활성화되지 않습니다.
l IWDT_WP
IWDT 레지스터 쓰기 보호 활성화.
: 활성화. IWDT 레지스터는 쓰기 보호됨.
: 비활성화. IWDT 레지스터는 소프트웨어에서 자유롭게 쓸 수 있음.
l IWDT_WE
IWDT 리셋 생성 활성화 옵션.
: 활성화. IWDT 이벤트 발생 시 시스템 리셋을 생성함.
: 비활성화. IWDT 이벤트 발생 시 시스템 리셋을 생성하지 않음.
l IWDT_SLP
칩이 SLEEP 모드일 때 IWDT 카운팅 제어.
: 정지. 카운팅을 멈추고 IWDT 동작을 비활성화함.
: 유지. 카운팅을 계속하며 IWDT 동작을 활성화함.
l IWDT_STP
칩이 STOP 모드일 때 IWDT 카운팅 제어.
: 정지. 카운팅을 멈추고 IWDT 동작을 비활성화함.
: 유지. 카운팅을 계속하며 IWDT 동작을 활성화함.
l IWDT_DIV
IWDT 내부 클럭 입력 분주기 선택. IWDT_EN이 활성화되면 이 비트들이 IWDT 입력 분주기 제어 레지스터에 로드됩니다.
분주기 제어 레지스터에 적용됩니다.
l PC_IOM
Port C 기본 IO 모드 선택(전원 인가 후). 모든 포트-C PCn 핀은 이 설정에 따라 기본값이 AIO 또는 QB 모드로 설정됩니다. 단, PC4/5/6/13/14 핀은 예외입니다. PC4/5/6 핀의 IO 모드는 항상 QB 모드가 기본입니다. PC13/14 핀의 IO 모드는 XOSC_EN이 활성화되면 칩이 직접 제어합니다. XOSC_EN이 비활성화되면 IO 모드는 이 레지스터 설정에 따라 제어됩니다. (이 비트는 MG32F02A132/072에서는 지원되지 않습니다.)
: AIO. Port-C 핀의 기본값은 아날로그 IO입니다.
: QB. Port-C 핀의 기본값은 Quasi-Bidirectional 출력입니다.
6.3. CFG Option Register
옵션 레지스터( OR )는 칩 하드웨어 설정 제어를 위해 사용됩니다. 이들은 옵션 바이트 플래시 메모리로부터
워밍 리셋 또는 콜드 리셋 시 불러와집니다. 시스템 메모리 챕터의 “하드웨어 옵션 바이트 플래시 메모리” 섹션과 관련 칩의 레지스터 정의 가이드에서 CFG 레지스터 설명을 참고하시기 바랍니다.
자세한 내용은 관련 문서를 참고하세요.
추가 정보는 관련 문서를 참고하세요.
6.3.1. CFG Register Protect and Lock
칩 리셋 후, 모든 CFG 레지스터는 CFG_KEY 레지스터를 제외하고 쓰기 접근이 보호됩니다. 레지스터의 쓰기 보호를 해제하려면 0xA217 값을 CFG_KEY 레지스터에 기록하세요.
0xA217 이외의 값을 기록하면 다시 보호됩니다. CFG_KEY 레지스터를 읽으면 해당 레지스터가 보호됨(=1)인지 0xA217 또는 보호 해제됨(=0)인지 확인할 수 있습니다.
보호 해제됨(=0)
자세한 정보는 시스템 리셋 챕터의 “레지스터 보호 및 잠금” 표와 설명을 참고하세요.
추가 정보는 참고 문서를 확인하세요.
6.3.2. Manufacturer ADC Calibration Value
ADC 기준 전압의 상단, 중간, 하단 세 항목은 ADC 보정을 통해 조정할 수 있습니다.
제조사는 기본 보정 값을 CFG_ADC0_REFT, CFG_ADC0_REFM그리고 CFG_ADC0_REFB 레지스터에 제공합니다. 이 세 레지스터는 칩 리셋 후 옵션 바이트 플래시 메모리에서 기본값으로 불러와집니다.
사용자는 ADC 보정 후 이 레지스터들을 업데이트할 수 있습니다.
[NOTIFY]: CFG_ADC0_REFT, CFG_ADC0_REFM 및 CFG_ADC0_REFB 레지스터는
MG32F02A132/A072에서만 지원됩니다.
6.3.3. Manufacturer Temperature Sensor Calibration Value
ADC에는 칩 내부의 접합 온도를 측정하는 온도 센서가 내장되어 있어 제품 적용에 활용할 수 있습니다.
제품 적용을 위해 칩 내부 접합 온도를 측정합니다. 두 가지 온도에서 온도 센서의 전압이 기록된 두 개의 ADC 코드가 있으며, 이는 칩 설정 옵션 레지스터(OR)의 CFG_TEMP_CAL1 및 CFG_TEMP_CAL1에 저장됩니다.
이 두 레지스터는 칩 리셋 후 옵션 바이트(OB) 플래시 메모리에서 불러와집니다. 두 OR 레지스터는 공장 출하시 보정되어 제조사에서 칩 제작 시 OB 플래시 메모리에 저장됩니다. 사용자는 시스템 온도 보정 후 이 레지스터들을 업데이트할 수 있습니다. 온도 센서 칩 구성에 관한 사항은 megawin으로 문의하시기 바랍니다. 칩 제조 옵션 관련 온도 센서 칩 구성에 관해서는 megawin에 문의하세요. 칩 제조사 옵션에 관한 사항입니다.
ADC 모듈에는 ADC0_TCAL1과 ADC0_TCAL1 두 개의 읽기 전용 레지스터가 있으며, 이는 CFG_TEMP_CAL1 및 CFG_TEMP_CAL1 레지스터에 연결되어 있습니다. 자세한 내용은 ADC 챕터의 “온도 센서” 섹션을 참고하세요.
CFG_TEMP_CAL1 및 CFG_TEMP_CAL1 레지스터에 연결되어 있습니다. 추가 정보는 ADC 챕터의 “온도 센서” 섹션을 참고하시기 바랍니다. 자세한 내용은 ADC 챕터의 “온도 센서” 섹션을 참고하세요.
[NOTIFY]: CFG_TEMP_CAL0 및 CFG_TEMP_CAL1 레지스터는 MG32F02A132/072/032에서는 지원되지 않습니다.
'MEGAWIN' 카테고리의 다른 글
| MLink Write Program (0) | 2026.02.03 |
|---|---|
| USB to Serial (0) | 2023.01.05 |
| MG82F6D Series TIM_T2_Mode4_PWM (0) | 2022.12.28 |
| MG82F6D Series TIM_T2_Mode0_AutoRL_AndEXI (0) | 2022.12.27 |
| MG82F6D SPI Master (1) | 2022.12.26 |