S32K1 + SDK 사용
본 페이지는 사용자가 S32
Configuration Tools 및 S32K1 SDK API를 사용함을 전제하고
있습니다.
STEP
1 : 하드웨어 설정
먼저 사용자 보드 환경에 맞춰 easyDSP, MCU간 통신에 사용될 UART 채널 및 핀을 설정합니다. 채널 및 핀 사용에 제한사항은 없습니다.
만약 easyDSP가 플래시 프로그래밍을 수행하지 않을 경우라면, /BOOT 와 /RESET은 연결할 필요가 없습니다.
기타 주의 사항 :
- /RESET 핀은 MCU에 리셋을 줄 수 있도록 적절히 연결 (/RESET핀의 Low상태 유지 기간은 약 500msec)
- easyDSP /RESET신호와 MCU /RESET 신호사이에 리셋 IC같은 회로가 삽입된다면, 삽입된 회로는 0.5초내에 신호를 전달해야 함.
- easyDSP 헤더 RX, TX 신호는 easyDSP 포드 내부에서 100k 오옴으로 풀업되어 있습니다.
STEP 2 : S32 Configuration Tools 설정
먼저 사용자 보드 환경에 맞춰 easyDSP에서 사용할 UART 채널 및 핀을 설정합니다. 앞서 하드웨어 설정과 일치되어야 합니다.
TX, RX 핀의 Identifier에 각각 EZ_TX, EZ_RX를 입력합니다.
아래 그림에서는 LPUART0을 사용하며 RX는 PTA2, TX는 PTA3를 사용할 경우입니다.
각 핀의 성질을 Rounting Details 탭과 같이 설정합니다. 특히 풀업을 설정하는 것에 주의하세요.
그리고 Drivers에 lpuart 모듈을 추가합니다.![]()
추가된 모듈에 대해서 설정합니다.
이름을 하기 그림과 같이 설정하며, UART 사용 채널을 선정합니다. 여기서는 앞서 그림 예제와 같이 LPUART0을 사용합니다.
또한 각종 설정치를 그림과 같이 설정합니다. Baudrate 설정치는 easyDSP 프로젝트에서 사용될 보드레이트와 동일하게 설정합니다.
![]()
또한 해당 UART 채널에 적절한 클럭이 공급될 수 있도록 설정하여 주세요. 아래 예제 참조하세요.
여기까지는 변수 모니터링을 위한
설정이었습니다. 만약 플래시 프로그래밍을 위해 easyDSP 부트로더를 사용한다면, 하기 작업이 추가로 필요하게 됩니다. easyDSP 부트로더는 Flash
driver를 사용하므로 Drivers에서 flash를 추가하고, 해당 이름을 아래와 같이
설정해주세요.
STEP 3 : easyDSP가 플래시 프로그래밍을 지원하는 경우 소스 코드 수정
앞서 진행된 Configuration tool 설정 및 이로 인한 소스 코드 생성 이후, SDK > platform > drivers > src > flash 폴더내에 flash_driver.c 파일이 생성됩니다.
파일내 여러 함수 중 2가지 함수를 easyDSP가 사용하는데, 이 함수가 램에서 동작하도록 설정해줘야 합니다.
따라서 파일 서두에 하기 빨간색 박스를 추가하여, 함수를 선언해 주시고,
파일 중간에 해당 함수가 정의되어 있는 부분 앞,뒤로 하기 매크로를 추가하여 주시기 바랍니다.
Configuration Tool이 자동 생성한 소스를 수정한 것이므로, Configuration tools이 이를 감지하여, 소스파일을 다시 원래로 되돌릴 지 문의할 경우 이를 허용하지 마십시요.
예를 들어 아래 메시지에서 Keep existing 버튼을 선택해야 합니다.
![]()
STEP 4 : easyDSP 제공 소스 파일 및 함수 호출
먼저 easyDSP 통신 및 플래시프로그래밍을 위해 제공되는 소스파일 (easyS32K1_SDK.h, easyS32K1_SDK_comm.c, easyS32K1_SDK_boot.c)을 프로젝트에 포함하시기 바랍니다.
해당 파일은 easyDSP 프로그램이 인스톨된 폴더 아래 \source\S32에서 찾을 수 있습니다.
만약 easyDSP를 사용하여 플래시 프로그래밍을 수행할 경우, easyS32K1_SDK.h 파일의 아래 부분에서 EZ_BOOTLOADER_USE를 1로 설정하세요. easyDSP로 플래시 프로그래밍을 하지 않는 경우에는 EZ_BOOTLOADER_USE를 0으로 설정합니다.
![]()
main.c 상단에 easyS32K1_SDK.h를 include하여 주시고, main 함수에서 초기화 루틴 이후 easyDSP_init() 함수를 호출하시기 바랍니다. easyDSP_init() 함수에서는 easyDSP 통신을 위한 각종 설정을 수행합니다.
만약 easyDSP가 플래시 프로그래밍을 지원하길 원하시면 클럭 및 핀이 설정된 바로 직후 easyDSP_boot()를 호출하시기 바랍니다.
![]()
STEP 5 : IDE 설정
1. 매 컴파일마다 hex 파일 (인텔 형식) 이 생성되어 출력 파일과 동일한 폴더에 동일한 이름으로 위치하도록 IDE를 설정해주세요. Hex 파일은 플래시 프로그래밍할 때 사용됩니다.
Hex 파일 확장자는 hex 또는 ihex가 될 수 있습니다. easyDSP는 확장자 hex 파일의 존재를 먼저 확인하여 사용하고, 존재하지 않을 경우 확장자 ihex 파일을 사용합니다.
S32DS 기준 하기 옵션 설정 참조하세요.
![]()
2. easyDSP로 모니터링을 수행하기 위해서는, 출력 파일 (예:*.elf)에 debug information이 반드시 포함되어야 합니다.이를 위해 어셈블리/ 컴파일러/링커 옵션을 적절히 선택하시기 바랍니다.
3. 최적화 또는 링커 세팅에 따라, 선언되었지만 실제 사용되지 않는 변수는 debug information에 포함되지 않아 easyDSP에서 모니터링되지 않을 수 있습니다. 이 경우에도 해당 변수를 모니터링하려면 적절한 IDE 세팅이 필요합니다. 예를 들어, S32DS의 프로젝트 설정 > 링커 옵션 하기 항목을 체크하지 않습니다.![]()
STEP 6 : easyDSP 부트로더의 제한 사항
1. S32K1 MCU는 제작업체에서 제공하는 롬부트로더가 없기에 사용자가 부트로더를 별도로 제작 사용해야 합니다. easyDSP는 사용자 프로그램 안에 easyDSP가 제공하는 부트로더 (함수 easyDSP_boot)가 존재하는 구성입니다. 따라서 MCU 플래시에 easyDSP 소스파일이 이미 프로그래밍되어 있어야 새로운 프로그램으로 재 프로그래밍이 가능합니다. 만약 플래시가 전부 지워져 있거나, easyDSP 소스파일이 플래시에 프로그래밍이 되어 있지 않다면, 플래시 프로그래밍이 지원되지 않으며 하기와 같은 메시지가 송출되며, 이 경우 디버거를 사용한 플래시 프로그래밍이 필요합니다. 따라서 처음 한번은 디버거를 이용해서 플래시 프로그래밍을 해야만 합니다.
![]()
2. easyDSP 부트로더는 램에서 동작해야 하기에 약 1.25K바이트 램 영역을 소비합니다 (-O1 최적화 옵션 기준).