Kinetis V 사용
본
페이지는 사용자가 Configuration Tools 및 MCUXpresso SDK 사용함을 전제하고
있습니다.
하드웨어 설정
먼저 사용자 보드 환경에 맞춰 easyDSP, MCU간 통신에 사용될 UART 채널 및 핀을 설정합니다. 채널 및 핀 사용에 제한사항은 없습니다.
만약 easyDSP 제공 부트로더(하기 부분 참조)를 사용해 플래시 프로그래밍을 수행하지 않을 경우라면, /BOOT 와 /RESET은 연결할 필요가 없습니다.
기타 주의 사항 :
- /RESET 핀은 MCU에 리셋을 줄 수 있도록 적절히 연결 (/RESET핀의 Low상태 유지 기간은 약 500msec)
- easyDSP /RESET신호와 MCU RESET_b 신호사이에 리셋 IC같은 회로가 삽입된다면, 삽입된 회로는 0.5초내에 신호를 전달해야 함.
- easyDSP 헤더 RX, TX 신호는 easyDSP 포드 내부에서 100k 오옴으로 풀업되어 있습니다.
Configuration Tools 설정
먼저 사용자 보드 환경에 맞춰 easyDSP에서 사용할 UART 채널 및 핀을 설정합니다. 앞서 하드웨어 설정과 일치되어야 합니다.
TX, RX 핀의 Identifier에 각각 EZ_TX, EZ_RX를 입력합니다.
아래 그림에서는 UART1을 사용하며 RX는 2번핀, TX는 1번핀을 사용할 경우입니다.
각 핀의 성질을 Rounting Details 탭과 같이 설정합니다. 특히 풀업을 설정하는 것에 주의하세요.
Configuration Tool에서 Peripherals이 활성화되어 있지 않으면 이를 활성화시킵니다.
그리고 Drivers에 UART 모듈을 추가합니다.![]()
추가된 모듈에 대해서 설정합니다.
Custom name 박스를 클릭하고 이름을 UARTez로 설정합니다.
인터럽트 모드를 사용하며, UART 채널을 선정합니다. 여기서는 앞서 예제와 같이 UART1을 사용합니다.
또한 각종 설정치를 아래 그림을 참조하여 설정합니다.
적절한 클럭 설정도 필요합니다. 필요시 ConfigTools>Clocks 메뉴에서 해당 UART의 클럭을 활성화 및 설정해주세요.
Baudrate 설정치는 easyDSP 프로젝트에서 사용될 보드레이트와 동일하게 설정합니다.
FIFO watermark는 그림처럼 TX는 0, RX는 1로 설정합니다.
인터럽트는 Receiver data register full interrupt만 사용하며 그 순위는 최하위로 설정합니다. KV1x의 경우 3을, KV3x, KV4x, KV5x의 경우 15를 입력합니다.
인터럽트 핸들러 이름은 UARTez_SERIAL_RX_TX_IRQHANDLER으로 설정합니다.
![]()
여기까지는 변수 모니터링을 위한
설정이었습니다. 만약 플래시 프로그래밍을 위해 easyDSP 제공 부트로더를 사용한다면, 하기 작업이 추가로 필요하게
됩니다.
easyDSP 부트로더는 Flash driver를 사용하므로 프로젝트 폴더 밑에 drivers 폴더내에 flash
모듈을 추가하기 위해 아래 + 버튼을 누르고
'Open the SDK ...' 버튼을 클릭하여
Drivers 아래
flash를 선택합니다.
본 대화상자를 나와서 다시 이전
대화상자(Add Configuration Component Instance)로 가면 Cancel 버튼을 눌러 나옵니다.
이로서
프로젝트 폴더 밑 drivers
폴더내에 flash 모듈이 추가되어 easyDSP 부트로더가 이를 사용 가능하게
됩니다.
먼저 easyDSP 통신 및 플래시프로그래밍을 위해 제공되는 소스파일 (easyKinetisV.h, easyKinetisV_comm.c, easyKinetisV_boot.c)을 프로젝트에 포함하시기 바랍니다.
해당 파일은 easyDSP 프로그램이 인스톨된 폴더 아래 \source\Kinetis에서 찾을 수 있습니다.
만약 easyDSP 제공 부트로더를 사용하여 플래시 프로그래밍을 수행할 경우, easyKinetisV.h 파일의 아래 부분에서 EZ_USE_BOOTLOADER를 1로 설정하세요. 아니라면 0으로 설정합니다.![]()
앞서 Configuration Tools에서 설정한 바 easyDSP와 통신할 UART의 설정이 main.c의 첫부분에서 제대로 수행되었는지 확인합니다.
아래에서 BOARD_InitBootPins, BOARD_InitBootClocks, BOARD_InitBootPeripherals 함수는 각각 UART의 핀, 클럭, 통신관련 설정을 담당합니다.
만약 easyDSP 제공 부트로더 사용한다면, 바로 뒤에 easyDSP_boot()를 호출하시기 바랍니다.
이후 기타 초기화가 완료된 후, easyDSP_init() 함수를 호출해주세요.
각 함수를 참조하기 위한 헤더파일도 #include하여 주세요.
![]()
easyDSP 부트로더
플래시 프로그래밍을 위해 업체가 제공하는 다양한 방법이 있습니다 (예 : JTAG 디비거).
또한 easyDSP는 개발 과정에서 빈번한 프로그램 수정을 간편하게 easyDSP 통신 채널 UART를 이용하여 수행하는 부트로더를 제공합니다.
하지만 이 방식은 여러 제한 및 주의 사항이 있으므로, 사용 여부를 잘 판단하시기 바랍니다.
만약 easyDSP 제공 부트로더를 사용하지 않는다면 (즉, easyKinetisV.h에서 #define EZ_USE_BOOTLOADER 0으로 설정) 본 챕터는 생략하여 주세요.
제한 및 주의 사항 :1. 사용자 프로그램 안에 easyDSP가 제공하는 부트로더가 존재하는 구성이므로 MCU 플래시에 easyDSP 소스파일이 이미 프로그래밍되어 있어야 부트로더도 동작할 수 있습니다. 만약 플래시가 전부 지워져 있거나, easyDSP 소스파일이 플래시에 프로그래밍이 되어 있지 않다면, 플래시 프로그래밍이 지원되지 않으며 (즉, 부트로더 진입이 불가하며), 이 경우 디버거를 사용하여 플래시를 프로그래밍해야 합니다. 따라서 처음 한번은 반드시 디버거를 이용한 플래시 프로그래밍이 수행되야 합니다.
2. 만약 플래시 프로그래밍 중 오류가 발생하면 (예를 들어 먼저 플래시를 지운 후 프로그래밍에 오류가 발생) 부트로더는 더 이상 플래시 내 존재하지 않아 사용이 불가하게 됩니다. 이 경우 앞 서 주의사항 1번처럼 디버거로 플래시 프로그램을 수행해야 합니다.
3. 플래시 억세스시 사용하는 함수 및 변수를 램에 위치시키기 위해, 일정 크기의 램용량을 소모합니다. 최적화하지 않을 경우 약 3.2K바이트입니다.
사용 준비 사항 :
1. 상기에서 언급했듯이, easyKinetisV.h에서 EZ_USE_BOOTLOADER를 1로 선언하고, easyKinetisV_boot.c 파일을 사용자 프로젝트에 포함하고, main 함수에서 easyDSP_boot 함수를 호출합니다.
2. 매 컴파일마다 hex 파일 (인텔 형식) 이 생성되어 출력 파일과 동일한 폴더에 동일한 이름으로 위치하도록 IDE를 설정해주세요. Hex 파일은 플래시 프로그래밍할 때 사용됩니다.
Hex 파일 확장자는 hex 또는 ihex가 될 수 있습니다. easyDSP는 확장자 hex 파일의 존재를 먼저 확인하여 사용하고, 존재하지 않을 경우 확장자 ihex 파일을 사용합니다.
예를 들어 MCUXpresso IDE 사용시 Post-build steps에 헥스파일 생성을 지정할 수 있습니다.
![]()
3. easyDSP 부트로더에서 사용되는 함수가 램에 위치하도록 MCUXpresso SDK 소스 파일을 변경해야 합니다.
프로젝트내 drivers 폴더의 fsl_ftfx_flash.h , fsl_ftfx_controller.h 파일이 대상입니다. 각 파일 중간부분에서 API 함수를 선언하기 직전에 아래 빨간색 상자처럼 코딩을 추가합니다.
즉, fsl_ftfx_flash.h에는 아래를
fsl_ftfx_controller.h 파일에는 아래를 추가합니다.![]()
사용 방법 : 플래시 대화상자 사용법은 여기를 참조합니다.
'MCU > Load Symbol' 메뉴
easyDSP 제공 부트로더를 사용하지 않을 경우, MCU 플래시가 디버거 등으로 다시 프로그래밍될 때마다, 본 메뉴를 실행하여 재프로그래밍된 변수 정보를 업데이트해야 합니다.
easyDSP 제공 부트로더를 사용할 경우, 플래시 프로그래밍시 업데이트된 사용자 프로그램 변수 정보를 다시 취득할 지 묻는 메시지 박스에 대해 Yes를 선택하므로서 본 메뉴를 대체합니다.
IDE 설정
1. easyDSP로 모니터링을 수행하기 위해서는, 출력 파일 (예:*.axf)에 debug information이 반드시 포함되어야 합니다. 이를 위해 컴파일러/링커 옵션을 적절히 선택하시기 바랍니다.
2. 최적화 또는 링커 세팅에 따라, 선언되었지만 실제 사용되지 않는 변수는 debug information에 포함되지 않아 easyDSP에서 모니터링되지 않을 수 있습니다. 이 경우에도 해당 변수를 모니터링하려면 적절한 IDE 세팅이 필요합니다. 예를 들어 GNU 링커 옵션에서 --gc-sections를 제거합니다.