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