macOS 개발환경 구성 - nRF / ESP

빌드 환경을 구성하기 위해 cmake, ninja, dfu-util을 설치하도록 한다.

% brew install cmake ninja

M1 / M2 사용하는 macOS에서 Intel PC에서 빌드한 바이너리를 실행하기 위해 Rosetta를 설치해야 한다. Rosetta를 설치하지 않는다면 arm cross 컴파일러 실행시 아래 이미지와 같은 에러가 발생한다.

% /usr/sbin/softwareupdate --install-rosetta --agree-to-license

ESP 빌드 환경을 구성하기 위해 esp-idf를 설치해야 하며, 아래 GitHub에서 다운받아 설치가 가능하지만, 의존성 문제로 파이썬 3.10 버전이 설치되어 있어야 한다.

% brew install python@3.10
% vi ~/.zshrc

... 
export PATH="/opt/homebrew/opt/python@3.10/libexec/bin:$PATH"

Espressif는 GitHub 직접 받아서 설치가 가능하지만, 개발 소스에 Espressif 4.4 버전이 서브모듈로 등록되어 있어 따로 설치할 필요는 없다. 하지만 최초 개발 소스를 받은 Espressif를 설치해야 하기 때문에 개발소스의 esp-idf 디렉토리로 이동하여 install.sh을 실행하도록 한다.

% cd <working_dir>
% cd external/esp-idf
% ./install.sh
% cd ../..
% source load_env.sh # 환경변수 등록 빌드 전에 한번은 실행 필요

nRF52 빌드 환경을 구성하려면 arm compiler를 설치해야 하며, arm-developer에서 컴파일러 버전은 맥용으로 10.3 버전을 다운받도록 한다.

% cd Downloads
% tar xvf gcc-arm-none-eabi-10.3-2021.10-mac.tar.bz2
% sudo gcc-arm-none-eabi-10.3-2021.10 /opt/arm-none-eabi-10.3-2021.10
% cd /opt
% sudo ln -s arm-none-eabi-10.3-2021.10 arm-none-eabi

% vi ~/.zshrc

...
export PATH="/opt/arm-none-eabi/bin:$PATH"
...

그리고 nRF 이미지 다운로드를 하기 위해 노르딕에서 제공하는 J-Link를 설치해야 한다. 노르딕 Command Line Tool은 윈도우, 리눅스, macOS를 모두 지원하며, macOS 버전을 받아 설치하도록 한다.

다운받은 파일을 실행하면 nRF 도구와 J-Link를 설치할 수 있으며, CLI 환경에서 이미지 다운로드 명령어인 nrfjprog 사용하려면 nRF 도구를 설치해야 한다. J-Link 설치된 앱중 RTT View를 주로 사용한다. 디버거를 사용하여 런타임 트레이스도 가능한 것 같으나, 아직 사용해보지 않아 어떤지는 모르겠다.

 

사내 펌웨어 다운로드가 파이썬으로 개발되어 실행시 필요한 아래의 라이브러리를 설치하도록 한다.

% brew install pyhton-tk@3.10
% brew install pyqt5
% pip install sip
% pip install pynrfjproj
% pip install intelhex
% pip install cryptography
% pip install pyserial
% pip install pillow

% vi ~/.zshrc

...
export PATH="/opt/homebrew/opt/pyqt@5:$PATH"

참고로 arm-none-eabi 크로스 컴파일러 실행시 확인되지 않은 개발자가 배포한 앱으로 인식되어 차단되는 경우가 있는데, 이것은 시스템 설정 -> 개인정보 보호 및 보안 항목에서 실행 파일을 허용해야 한다.

 

 

macOS 개발자를 확인할 수 없어 실행 불가 수정

arm-developer에서 arm-none-eabi 컴파일러를 다운받아 실행할 경우 아래와 같은 메시지가 출력되며 실행이 불가하다. 아무 생각없이 클릭하여 휴지통으로 이동시키는 불상사가 발생하는 경우가 생긴

memories.tistory.com