본문 바로가기
Development/Program

[Zephyr] 제퍼? 제피르? 뭘까? 설명과 개발환경구축

by 루카오리 2022. 9. 5.

ephyr는 2016년 2월 Linux Foundation 에서 소개 되었어요. 리소스 제한적인 장치 및 IoT를 target으로 하고 있으며, Linux FoundationIntel/NXP/Linaro/synopsys/Nordic 등이 주도하는 Linux에 매우 가까운 OS로 볼수 있어요.

실제사용되는 Kernel은 Linux하고는 전혀무관한 Intel WindRiver(VxWorks -> Viper -> Zephyr)를 채용하고 있어 안정성은 확보되었다고 보면 될것 같아요.

또한 현재 350여개 이상의 board를 지원하면서 다양한 SoC및 board관련 코드가 추가 되었어요.

release 후 6년이 지난 현시점(2022.08.10)에서는 v3.1.0까지 release가 되어있어요,

https://github.com/zephyrproject-rtos/zephyr

Zephyr overview(출처 )

Commits(64,944), Contributors(1,251)등 Github에 활발한 활동이 이루어 주고 있다는걸 보실수 있어요.

📌 Code commit등이 많다는것은 관심이 높다는 것이기도 하지만, 오류 or 개발 같은 것들이 많다는것의 의미도 되겠죠?

개발환경

Zephyr에 대한 개발환경은 아래의 Docs 링크에 잘 설명되어있어요.

https://docs.zephyrproject.org/latest/

문서 정리가 잘되어있어서 처음 시작할때 어려움이 없을것 같아요. Zephyr 자체가 개인이나 특정회사가 주도해서 개발한 프로젝트가 아니라 커뮤니티가 중심이 되는 프로젝트들이 많아 진정한 OpenSource RTOS라는걸 알수 있어요.

또한 개발환경 또한 OS로는 Linux, Windows, Mac으로, MCU는 350여개를 컴파일할수 있도록 제공하고 있어요.

요즘 제가 관심같은 micropython 에서도 Zephyr를 지원하고 있어서 초미의 관심사가 되었어요.

<package 설치>

$ sudo apt update

$ sudo apt upgrade

$ sudo apt install --no-install-recommends git cmake ninja-build gperf \

ccache dfu-util device-tree-compiler wget \

python3-dev python3-pip python3-setuptools python3-tk python3-wheel xz-utils file \

make gcc gcc-multilib g++-multilib libsdl2-dev

<cmake upgrade>

📌 cmake version 3.13.1 이상이어야 한다. 따라서 아래 내용을 수행해 준다.

$ wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | sudo apt-key add -

$ sudo apt-add-repository 'deb https://apt.kitware.com/ubuntu/ bionic main'

$ sudo apt update

$ sudo apt install cmake

$ cmake --version

cmake version 3.18.4

<zephyr 설치 및 python 관련 package 설치>

$ pip3 install --user -U west

$ echo 'export PATH=~/.local/bin:"$PATH"' >> ~/.bashrc

$ source ~/.bashrc

📌 python으로 작성된 west는 source code download(마치 repo와 같은 역할)는 물론이고 build 시에도 사용된다.

$ west init ~/zephyrproject

$ cd ~/zephyrproject

rina@irina:~/zephyrproject$ west update

irina@irina:~/zephyrproject$ west zephyr-export

Zephyr (/home/chyi/zephyrproject/zephyr/share/zephyr-package/cmake) has been added to the user package registry in: ~/.cmake/packages/Zephyr ZephyrUnittest (/home/chyi/zephyrproject/zephyr/share/zephyrunittest-package/cmake) has been added to the user package registry in: ~/.cmake/packages/ZephyrUnittest

irina@irina:~/zephyrproject/zephyr$ pip3 install --user -r ~/zephyrproject/zephyr/scripts/requirements.txt

<toolchain 설치>

irina@irina:~/zephyrproject$ cd zephyr

irina@irina:~/zephyrproject/zephyr$ wget https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.14.2/zephyr-sdk-0.14.2_linux-x86_64.tar.gz

irina@irina:~/zephyrproject/zephyr$ tar xvf zephyr-sdk-0.14.2_linux-x86_64.tar.gz

irina@irina:~/zephyrproject/zephyr$ wget -O - https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.14.2/sha256.sum | shasum --check --ignore-missing

irina@irina:~/zephyrproject/zephyr$ ch zephyr-sdk-0.14.2

irina@irina:~/zephyrproject/zephyr/zephyr-sdk-0.14.2$ ./setup.sh

irina@irina:~/zephyrproject/zephyr/zephyr-sdk-0.14.2$ sudo cp sysroots/x86_64-pokysdk-linux/usr/share/openocd/contrib/60-openocd.rules /etc/udev/rules.d

irina@irina:~/zephyrproject/zephyr$ west build -b rpi_pico -s samples/synchronization

옵셥 -b 뒤에는 ./boards/arm내에 있는 보드명을 쓰면되요. 저는 raspberry pi의 pico보드를 선택했어요.

컴파일을 하고..

아래보이는 것처럼..zephyr.uf2 파일이 생성되요...

현재 pico 보드에는 swd관련한 내용은 없기때문에, 부트 모드로 변경 한후 생성된 Zephyr.uf2파일을 Drag & Drop 으로 넣어주면되요

저는 WSL로 컴파일을 돌린거라

\\wsl$\ 보통 엔터키 위에 있는 백슬래시 키 인데 윈도우에서 치면 원화표시로 주소창에 표시될 것이다. 엔터키를 눌러서 디렉토리를 이동하게 되면 다음과 같은 화면이 뜰 거예요.

아래의 경로가면 Zephyr.uf2파일이 생성되어 있어요.

\\wsl$\Ubuntu20.04LTS\home\irina\zephyrproject\zephyr\build\zephyr

기본적인 Blink를 돌려보면..

아래의 파일 위치에 zephyr.uf2가 생성되요.

해당파일을 넣으면 아래 처럼 LED Blink 되는걸 볼수 있어요

'Development > Program' 카테고리의 다른 글

[IPv4]1. CheSum계산 - IPv4  (0) 2013.11.02