Freescale Kinetis K60Xxxx 영구 장치락(Permanent Device Lock)

기술노트 77989

아키텍처:

Arm

컴포넌트:

general

업데이트:

2021-05-28 오전 4:16

소개

IAR Embedded Workbench for ARM 버전 6.30.3 (혹은 하위 버전)에 스크래치(scratch)로 새 프로젝트를 시작할 때, Freescale Kinetis K60Xxxx 장비에선 Target -> Core: "Cortex-M4", 또는 Device -> "Freescale K60Xxxx"를 사용하며, 기본 링커 설정 파일 "generic_cortex.icf"이 선택되어 있습니다. 타깃보드에 코드를 다운로드할 때, 이 링커 설정 파일은 영구적으로 장비 보호(그 즉슨, 장비를 재 프로그래밍 할 수 없도록 만듭니다)를 하게 됩니다.
IAR Embedded Workbench for ARM 버전 6.30.4(혹은 상위 버전)에선, 다른 기본 링커 설정 파일(Freescale\MK60xxxx.icf)이 자동으로 선택되어 있어, 상기의 문제가 발생되지 않도록 합니다.

해결방법

IAR Embedded Workbench for ARM 6.30.3(혹은 하위 버전):

K60Xxxx 장비에 다음의 링커 설정 파일을 사용합니다:

$TOOLKIT_DIR$\examples\Freescale\K60\
TWR-K60\GettingStarted\config\K60X_Flash.icf

IAR Embedded Workbench for ARM 6.30.4(혹은 상위 버전):

기본으로 사용하는 링커 설정 파일(자동으로 선택되어 있음)이 해당 위치에 있습니다:

$TOOLKIT_DIR$\config\linker\Freescale

배경

ARM Cortex를 위한 IAR Embedded Workbench IDE (버전 6.30.3 혹은 하위 버전) 내의 기본 링커 설정 파일은 0 위치에서 시작하는 코드에 배치되어 있습니다. 문제는 코드가 0x40C 주소를 아우르도록 커지면, NVFSEC 레지스터가 프로그래밍 된다는 것입니다.
NVFSEC 레지스터에는 두 개의 비트가 있는데, 이는 칩(chip)의 전체 삭제 기능(mass erase functionality)을 영구적으로 비활성화할 수 있습니다. 이 비트는 Mass Erase Enable Bits (MEEN)으로 불립니다. 또한 이 레지스터에는 Flash security(SEC)를 다룰 수 있는 두 개의 비트도 가지고 있습니다. 함께 사용할 경우, 장비가 영구적으로 락(lock)이 걸립니다.
IAR Embedded Workbench for ARM 버전 6.30.3(혹은 하위버전)에서 Options -> Target -> Device: Freescale K60Xxxx 을 선택할 때, Linker -> Config -> "Linker configuration file" 옵션에서 "generic_cortex.icf"이 기본으로 설정되어 있음에 주의하시기 바랍니다.

다음 사진을 참고하여, 설정을 변경하시기 바랍니다:

참고 1:

IAR K60N512 kit에 포함된 모든 예제 프로젝트는 기본 링커 설정 파일이 "K60X_ram.icf" 나 "K60X_Flash.icf" 로 우선 설정되어 있어 장치락(device lock) 문제가 발생하지 않습니다.

참고 2:

Freescale MQX와 함께 제공되는 예제 프로젝트에는 "vector.c"안에 벡터 테이블이 포함되어 flash 설정 영역을 포괄하도록 확장되어 있고, 적절한 값을 설정합니다.

참고 3:

장비가 Flash security bits에 의해서만 잠겨져있다면, J-Link Commander (jlink.exe)의 다음 명령을 사용하여 장비의 잠금을 해제할 수 있습니다:

J-Link> unlock Kinetis

참고 4:

I-jet과 IAR Embedded Workbench for Arm version 8.40.1 혹은 그 이후 버전부터 잠금 해제(unlocking)는 arm\config\debugger\NXP경로의 디버거 매크로로 부터 자동적으로 수행됩니다. View > Macros > Debugger Macros 윈도우에 MassErase() 매크로를 확인 바랍니다. 이 매크로는 View > Macros > Macro Quicklaunch 윈도우를 통해 수동으로 실행할 수 있습니다. 

IAR Embedded Workbench for ARM 버전 6.60.1부터 8.32.3버전까지, I-Jet을 사용하여 잠금 해제 할 수 있습니다. 다음 명령을 사용하세요:

<installation dir>\arm\bin\jet\bin\Kinetis_unlock_swd.bat

참고 5:

최근 버전의 IAR Embedded Workbench for ARM에선, 플래시 로더(flash loader)는 NVFSEC 레지스터에 대해 쓰기-보호 기능을 내장하고 있습니다. 이 기능을 통해 보호된 flash 영역에 쓰려면, Project > Options > Debugger > Download > Override default .board file > Edit... > Extra parameters 다음 옵션을 지정하시기 바랍니다:

--enable_config_write

매개 변수 설명:

사용자 제공 데이터를 사용하여 0x40C - 0x40F에 대해 프로그래밍을 허용, 다른 경우 블록 0이 지워진 뒤로 flashloader는 0xFFFFFFFE(안전하지 않은 상태)에 쓰게 됩니다.

 

모든 제품 이름은 해당 소유자의 상표 또는 등록 상표입니다.

죄송하지만, 당사 사이트에서는 Internet Explorer를 지원하지 않습니다.보다 편안한 사이트를 위해 Chrome, Edge, Firefox 등과 같은 최신 브라우저를 사용해 주시길 부탁드립니다.