페이지 선택

MXOS-Cube는 MiCoder Tool/Micoder를  Compiler로 사용하고 있으며, MiCoder는 GCC Compiler를 기반으로 MXCHIP에서 개정한 것이다.

여느 컴파일러와 마찬가지로 “make” 명령을 사용하고 있다. 이 페이지에서는 MXOS-Cube의 make/makelib 명령에 대한 Manual 이다.

 

 

 

1. Make 명령 매뉴얼

기본적인 make 명령형식은 다음과 같다.

 

make 명령형식: mxos make <target> [total] [download] [run | debug] [JTAG=xxx] [VERBOSE=1] [JOBS=<jobs>]

⊕ 설명에서 컴파일과 빌드를 따로 구분하여 사용하지 않고 있으므로 문맥에 따라 이해 하도록 한다.

⊕ Build 결과 파일은 D:\mxos-project\demos\build 에 만들어진다. → 이 폴더는 최초의 Build 후에 만들어진다.

 

 

♦  <target> 의 형식: application@module_name [RTOS] [Networks Stack] [TLS] [debug]

 

appliation@module_name

application: 프로젝트의 루트디렉터리로 부터 어플리케이션 위치를 지정, 디렉터리 구분은 “ .“으로 한다.

module_name: EMW3070, EMW3080, EMC3080, EMC3280, EMC3380, 등 → \mxos\module 에서 정의

 

예1) 어플리케이션의 위치= D:\mxos-project\demos\demos\helloworld

make 명령  →  프로젝트루트디렉터리>mxos make demos.helloworld@emw3070

또는 프로젝트루트디렉터리>mxos make helloworld@emw3070

 

예2) 어플리케이션의 위치=D:\mxos-project\demos\demos\net\http\client

make 명령 → 프로젝트루트디렉터리>mxos make demos.net.http.client@emw3070

또는 → 프로젝트루트디렉터리>mxos make net.http.client@emw3070

 

[RTOS]  →  \mxos\MXOS\RTOS 에서 정의

어떤 RTOS 커널을 컴파일에 포함 할 것 인지를 결정한다. 따로 지정하지 않으면  FreeRTOS가 적용된다.

make 명령 → 프로젝트루트디렉터리>mxos make helloworld@emw3070@FreeRTOS

make 명령 → 프로젝트루트디렉터리>mxos make helloworld@emw3070@NoRTOS  → Bootloader 이미지만 만들어진다.

 

[Network Stack]  → \mxos\MXOS\net 에서 정의

어떤 네트워크 스택을 적용할 것 인지를 결정한다. 디폴트 값은 LwIP 이다.

make 명령 → 프로젝트루트디렉터리>mxos make helloworld@emw3070@LwIP

 

 

[TLS]  → \mxos\MXOS\security 에서 정의

전송계층(Transport Layer)에 어떤 보안 모듈을 적용할 것 인지를 결정한다.  디폴트 값은 wolfSSL 이다.

make 명령 → 프로젝트루트디렉터리>mxos make helloworld@emw3070@wolfSSL

 

 

[debug | release_log | release]

Debug, release_log, release 중 어떤 기능을 포함할 것 인지를 정한다. 디폴트 값은 release_log 이다

make 명령 → 프로젝트루트디렉터리>mxos make helloworld@emw3070@release_log

⊕ release_log 옵션을 사용하면 어플리케이션이 실행 될 때  UART 디버그 시리얼포트로 log 출력 기능을 갖추게 된다..

 

 

♦ [total] 

total 옵션을 추가하면 total FW 이미지 “*.all.bin” 이 빌드된다. → all.bin=bootloader + wifi driver + application

total이 생략되면 어플리케이션 펌웨어 이미지만 빌드되며 이미지 파일은 “*. ota.bin” 이다.

make 명령 → 프로젝트루트디렉터리>mxos make helloworld@emw3070 total

⊕ 타겟 모듈에 total FW가 적재된 후 bootloader 와 wifi driver가 변경이 없다면 total 옵션 없이 어플리케이션만 빌드하여 모듈에 다운로드하여 실행할 수 있다.

 

♦ [download] 

어플리케이션을 빌드한 후 생성된 이미지파일을 곧바로 Flash 메모리로 다운로드 할 것인 지를 결정한다.

make 명령 → 프로젝트루트디렉터리>mxos make helloworld@emw3070 total download

 

♦ [run | debug] 

run 옵션: 펌웨어를 다운로드 한 후 모듈을 리부팅하여 어플리케이션을 바로 실행

debug 옵션: 펌웨어를 다운로드 한 후 모듈 내장 MCU에 대한 디버깅을 실행 → ex. JLINK(JTAG 에뮬레이터)를 사용해 FW 디버깅 가능

make 명령 → 프로젝트루트디렉터리>mxos make helloworld@emw3070 total download run

 

 

♦ [JTAG=xxx] mxos\makefiles\OpenOCD\interface 에서 정의

어떤 종류의 JTAG 에뮬레이터를 사용할 것인지 지정한다. 디폴트 값으로 jlink_swd 가 지정되어있다.

make 명령 → 프로젝트루트디렉터리>mxos make helloworld@emw3070 total download JTAG=jlink_swd

JTAG Emulator 옵션 통신모듈
JLink SWD (Default) JTAG=jlink_swd 모든 모듈
JLink JTAG JTAG=jlink 모든 모듈
STLink JTAG=stlink-v2 또는 stlink-v2-1 EMW3165, EMW3166, EMW3239

 

 

♦ [VERBOSE=1]  

컴파일 할 때 사용되는 모든 리소스와 명령어, 옵션들에 대한 Log를 보일지 선택한다. 디폴트 값은 VERBOSE=0 이다.

make 명령 → 프로젝트루트디렉터리>mxos make helloworld@emw3070 total download VERVOSE=1

 

♦ [JOBS=<jobs>] 

컴파일러가 동작하는 머신(machin)의 컴파일 할 때 기동할 멀티스레드의 수를 제어한다. 컴파일 속도 향상에 대한 옵션으로 디폴트 값은 4 이다.

⊕ 컴파일 되는 어플리케이션(모듈)에 대한 옵션이 아니다. 

make 명령 → 프로젝트루트디렉터리>mxos make helloworld@emw3070 total download JOBS=1

 

 

 

 

2. Makelib 명령 매뉴얼

소프트웨어 코드를 정적 라이브러리(static library)로 컴파일 하기 위해서는 mxos makelib 명령을 사용한다.

 

makelib 명령형식: mxos makelib [–new] <source>

 

 [–new] 

컴파일 디스크립션(description) 파일dls “.mk” 파일을 생성한다.

♦ <source>

소스파일이 있는 디렉터리(directory)를 지정한다.

 

 

 

정적(static) 라이브러리 생성 과정은 다음과 같이 요약된다. 

Step1. 확장자가 mk인 파일을 생성한다.  → 명령: mxos makelib –new

Step2. mk 파일을 열어 정정 라이브러리를 컴파일하는데 필요한 컴파일러 파라미터, 매크로, 파일 탐색경로, 소스코드 파일들을 추가한다.

Step3. 정적 라이브러리를 만든다. → 명령: mxos makelib <source code>

 

 

 

아래 예시를 따라 정적(static) 라이브러리를 실제로 만들어 본다. 

프로젝트의 디렉터리가 helloworld 이라 가정하면, helloworld\mxos-os\staticlib에 있는 소스코드들을 빌드해야 한다.

이 디렉터리 아래에는 mystaticlib.h” 와 mystaticlib.c이 있다.

먼저 현재의 경로를 프로젝트 루트디렉터리(helloworld)로 변경한다. .

 

step1. .mk 파일을 생성한다.   → 명령: mxos makelib –new mxos-os/staticlib

이 명령을 실행하면 staticlib 디렉터리 아래에 staticlib_src.mk가  생성된다.

 

step3. staticlib_src.mk를 수정한다.

NAME := staticlib

# Add compiler flags here

$(NAME)_CFLAGS :=

# Add definations here

$(NAME)_DEFINES :=

# Add includes path here, should be realtive path to current directory

$(NAME)_INCLUDES := .

# Add sources path here, should be realtive path to current directory

$(NAME)_SOURCES := mystaticlib.c

 

 

step3. 정적 라이브러리 파일들을 생성한다. → 명령: mxos makelib mxos-os/staticlib

이 명령을 실행하면 helloworld/mxos-os에 정적(static) 라이브러리가 생성될 것이다.

$ mxos makelib mico-os/mystaticlib

Compiling mico-os/mystaticlib/mystaticlib.c

Make staticlib.Cortex-M3.GCC.release.a DONE

Compiling mico-os/mystaticlib/mystaticlib.c

Make staticlib.Cortex-M4.GCC.release.a DONE

Compiling mico-os/mystaticlib/mystaticlib.c

Make staticlib.Cortex-M4F.GCC.release.a DONE

 

 

 

 

Viewed Page List