윈도우에서 CMake와 IAR Embedded Workbench를 함께 사용하고 Linux에서 IAR 빌드 툴 사용

기술노트 190701

아키텍처:

8051, Arm, AVR, MSP430, RH850, RISC-V, RL78, RX, V850

컴포넌트:

general

업데이트:

2021-07-15 오후 10:22

고지사항

IAR Systems는 CMake 플랫폼 자체를 지원하지 않습니다. 즉, CMake를 사용하거나 설정하는 데 문제가 있을 경우 공급업체에 문의하십시오.

전제 조건은 커맨드 라인에서 IAR 빌드 도구를 사용하는 방법뿐만 아니라 CMake 개념에 대한 기본적인 이해이다.

소개

CMake는 소프트웨어를 빌드, 테스트 및 패키징하기 위해 설계된 크로스 플랫폼 오픈 소스 툴 제품군이다. 플랫폼 및 컴파일러 독립 구성 파일을 사용하여 소프트웨어 컴파일 프로세스를 제어합니다. 이 기술 노트에서는 IAR Embedded Workbench와 함께 CMake를 사용하는 방법을 보여 주지만 Linux에서 IAR 빌드 도구를 사용할 때도 적용됩니다.

논의

설치해야할 툴

  • IAR Embedded Workbench for 8051, Arm, AVR, MSP430, RH850, RISC-V, RL78, RX or V850 (Windows) or IAR Build Tools for Arm or RH850 (Linux).
  • CMake v3.15.7 or later.
  • Microsoft NMake (CMake is able to generate different makefile and workspace formats and in this example we are using NMake)

편의를 위해 CMake 및 NMake 실행 파일의 경로가 윈도우즈 PATH 환경 변수에 추가되었는지 확인하십시오. 전체 경로를 지정하지 않고도 이러한 실행 파일을 실행할 수 있습니다.

툴 체인 파일 준비 (toolchain-ewarm.cmake)

크로스 컴파일 시나리오에서, 컴파일러, 어셈블러, 링커 및 각각의 옵션 설정에 대한 정보와 함께 '툴체인 파일'(.cmake)을 지정해야 한다. 다음 파일은 IAR Embedded Workbench for Arm 버전 8.x에 사용할 수 있습니다:

### BEGIN CMAKE_TOOLCHAIN_FILE
# "Generic" is used when cross compiling
set(CMAKE_SYSTEM_NAME Generic)

# Set the EW installation root directory
#(Avoid spaces in the path or you need to escape them)
set(EW_ROOT_DIR "c:/ew/arm-8323/arm")

# Compiler flags needed to compile for this CPU
set(CPU_FLAGS "--cpu ARM9E")

# Set up the CMake variables for compiler and assembler
# (The reason for both C and CXX variables is that CMake
# treats C and C++ tools individually)
set(CMAKE_C_COMPILER "${EW_ROOT_DIR}/bin/iccarm.exe" "${CPU_FLAGS} --dlib_config normal")
set(CMAKE_CXX_COMPILER "${EW_ROOT_DIR}/bin/iccarm.exe" "${CPU_FLAGS} --dlib_config normal")
set(CMAKE_ASM_COMPILER "${EW_ROOT_DIR}/bin/iasmarm.exe" "${CPU_FLAGS}")

# Set up the CMake variables for the linker
set(LINKER_SCRIPT "${EW_ROOT_DIR}/config/linker/ST/str91xFx44.icf")
set(CMAKE_C_LINK_FLAGS "--semihosting --config ${LINKER_SCRIPT}")
set(CMAKE_CXX_LINK_FLAGS "--semihosting --config ${LINKER_SCRIPT}")
### END CMAKE_TOOLCHAIN_FILE

예제

다음 두 가지 예는 IAR Embedded Workbench for Arm, CMake, NMake를 사용하여 실행 파일을 작성합니다. 파일 구조는 CMakeLists.txt 파일의 내용과 함께 설명된다.

예제 1 – Mixing C and assembler

이 예에서는 어셈블러 및 C 소스 파일로 구성된 응용 프로그램을 작성하는 방법을 보여 줍니다. 또한 CMake 환경에서 소스 파일에 사용할 전처리기 기호를 설정하는 방법도 보여줍니다.

Function

An integer value returned from an assembler function is printed to the console, in the C main() function.

예제 2 – Creating and using libraries

에서는 라이브러리가 생성된 후 이 라이브러리를 사용하는 데모 프로젝트가 수행됩니다.

Function

라이브러리는 정수(입력 값 + 1)를 반환하는 함수를 포함하는 것으로 작성되었습니다. 다음 단계에서 이 라이브러리를 사용하여 값을 콘솔에 인쇄하는 응용 프로그램이 C main() 함수로 작성됩니다.

예제를 빌드

위의 각 예를 다음과 같이 빌드합니다:

1.   CMake 실행

예제 폴더를 찾아 이 Cmake 명령줄을 사용하여 빌드 폴더에 make 파일을 생성합니다.:

cmake -H. -Bbuild -G "NMake Makefiles" -DCMAKE_TOOLCHAIN_FILE=toolchain-ewarm.cmake

2.    NMake 실행

빌드 폴더로 이동한 후 다음 명령줄을 사용하여 실행 파일 my_program.elf를 생성합니다:

Nmake Makefile

디버깅

위의 예제 다운로드에는 애플리케이션을 빌드하기 위한 배치 파일과 명령줄 utility cspybat.exe를 통해 C-SPY 배치 모드에서 실행하는 파일이 포함됩니다.

IAR Embedded Workbench IDE를 사용하여 IDE 외부에 구축된 애플리케이션(예: CMake로 구축된 애플리케이션)을 사용하여 C-SPY를 로드할 수도 있습니다. 이러한 "디버거 전용" 프로젝트는 실행 파일을 재구성할 때마다 재사용할 수 있으며 디버거와 관련된 프로젝트 옵션만 지정해야 합니다. 자세한 내용은 이 기술노트를 참조하십시오.

결론

이 기술 노트는 IAR Embedded Workbench용 CMake로 빌드하는 기본 지식을 제공하고 CMake로 빌드된 이미지를 디버그하는 방법에 대한 제안을 제공합니다.

CMake는 현재 IAR Embedded Workbench for Arm, RL78, RH850, RX, AVR, RISC-V, MSP430을 지원하도록 조정되었다. 향후 CMake 팀은 다른 IAR Embedded Workbench 제품에 대한 지원을 추가할 수 있습니다.

 

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

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