Getting started guides¶
유비노스 시작 안내서 (윈도우즈)¶
- 유비노스 관련 문의 및 답변 웹페이지:
- 유비노스 깃허브 이슈 웹페이지: (https://github.com/ubinos/ubinos.issues)
운영체제 종속적 패키지 설치¶
Chocolatey 설치¶
관리자 권한으로 PowerShell 실행
- 다음 명령어 실행
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
PowerShell 창 닫기
필요한 패키지 설치¶
관리자 권한으로 명령 프롬프트(cmd.exe) 실행
- 다음 명령어 실행해 필요한 패키지 설치
choco feature enable -n allowGlobalConfirmation
choco install ninja make gperf git dtc-msys2 wget 7zip python311 python3-virtualenv cmake qemu
명령 프롬프트(cmd.exe) 창 닫기
- 시스템 변수의 PATH에 다음 경로를 추가한다.
- 시스템 변수의 PATH 설정 메뉴
윈도우 설정 -> 시스템 -> 정보 -> 고급 시스템 설정 -> 환경 변수 -> 시스템 변수 -> Path
- 추가할 경로
C:\Program Files\qemu
그림 2 은 경로 설정 예를 보여준다.
일반 사용자 권한으로 명령 프롬프트(cmd.exe) 실행
- 다음 명령을 수행해 git 사용자 이름과 이메일 설정
Note
“Your Name”과 “your-email@example.com”을 본인의 이름과 이메일로 변경해서 실행해야 한다.
git config --global user.name "Your Name" git config --global user.email "your-email@example.com"
명령 프롬프트(cmd.exe) 창 닫기

그림 2 Ubinos Env. Path Setting for Windows 11¶
SSH key 생성 및 github에 등록¶
SSH key 생성¶
일반 사용자 권한으로 명령 프롬프트(cmd.exe) 실행
- 다음 명령어를 실행해 ssh key를 생성
ssh-keygen -t rsa -b 4096
file을 입력하라는 메시지가 나오면 엔터를 눌러 기본값을 선택한다.
passphrase를 입력하라는 메시지가 나오면 엔터를 눌러 no passphrase를 선택한다.
- 다음 명령어를 실행해 생성한 공개키를 클립보드에 복사
type %USERPROFILE%\.ssh\id_rsa.pub | clip
file을 기본값인 id_rsa가 아닌 다른 것을 선택했다면 해당 file로 변경해서 실행해야 한다.
명령 프롬프트(cmd.exe) 창 닫기
생성한 SSH 공개키를 github에 등록¶
웹브라우저에서 https://github.com 에 접속한한 후, 로그인
오른쪽 상단의 프로필 사진을 클릭한 후, Settings 클릭
좌측 메뉴에서 SSH and GPG keys 클릭
New SSH key 클릭
Title에 원하는 이름을 입력
Key에 복사한 공개키를 붙여넣기
Add SSH key 클릭
유비노스 소스트리 다운로드 및 개발용 가상환경 생성¶
유비노스 소스트리 다운로드¶
일반 사용자 권한으로 명령 프롬프트(cmd.exe) 실행
- 다음 명령을 실행해 작업용 디렉토리 생성 후 해당 디렉토리로 이동
mkdir C:\MyWorks\ubinos cd C:\MyWorks\ubinos
- 다음 명령어를 실행해 유비노스 소스트리 다운로드
git clone https://github.com/ubinos/ubiworks.git
- 다음 명령어를 실행해 다운로드한 유비노스 소스트리 디렉토리로 이동
cd ubiworks
- 다음 명령어를 실행해 유비노스 소스트리 서브모듈 다운로드
git submodule update --init git submodule foreach git switch ubinos-main
명령 프롬프트(cmd.exe) 창 닫기
개발용 가상환경 생성¶
일반 사용자 권한으로 명령 프롬프트(cmd.exe) 실행
- 다음 명령을 실행해 유비노스 소스트리 make 디렉토리로 이동
cd C:\MyWorks\ubinos\ubiworks\make
- 다음 명령을 실행해 “Ubinos config selecgtor”를 실행
make xsel
- “Ubinos config selecgtor” 창이 뜨면 다음을 선택한 후 Select 버튼을 클릭
ubinos project의 ubinos_venv
- 다음 명령을 실행해 빌드
make rebuildd
- 빌드가 정상적으로 완료되면 다름과 같이 가상환경 활성화, 비활성화 명령이 출력됨
"" "* env activate command: " "C:\MyWorks\ubinos\ubiworks\output\ubinos_venv\Scripts\activate.bat" "" "* env deactivate command: " "deactivate" ""
- 가상환경 활성화 명령을 실행해 ubinos_venv 활성화
C:\MyWorks\ubinos\ubiworks\output\ubinos_venv\Scripts\activate.bat
- 위 명령처럼 절대경로로 실행해도 되지만, 아래 명령처럼 상대경로로 실행해도 된다.
..\output\ubinos_venv\Scripts\activate.bat
명령 프롬프트(cmd.exe) 창 닫기
VSCode 설치¶
- 웹브라우저로 다음 URL에 접속해, VSCode를 다운로드 및 설치
GNU ARM Embedded Toolchain 설치¶
- 웹브라우저로 다음 URL에 접속해, gcc-arm-none-eabi-10.3-2021.10-win32.exe를 다운로드 및 설치
-
Note
설치 완료 창이 뜨면 “Add path to environment variable”을 반드시 체크 하고 마침 버튼을 눌려야 한다.
VSCode로 유비노스 소스트리 열기¶
일반 사용자 권한으로 명령 프롬프트(cmd.exe) 실행
- 다음 명령을 실행해 유비노스 소스트리 make 디렉토리로 이동
cd C:\MyWorks\ubinos\ubiworks\make
- 다음 명령을 실행해 유비노스 개발용 가상환경 활성화
..\output\ubinos_venv\Scripts\activate.bat
- 다음 명령을 실행해 VSCode로 유비노스 소스트리 열기
code ..
VSCode로 유비노스 hello_world 예제 선택, 빌드¶
Note
VSCode에서 “Run build task” 등 실행, 각종 View 선택 방법은 VSCode 활용 팁 참조
- VSCode에서 “Run build task” 실행 후, 다음 명령을 선택해 “Ubinos config selecgtor”를 실행
make xsel
- “Ubinos config selecgtor” 창이 뜨면 다음을 선택한 후 Select 버튼을 클릭
ubinos project의 hello_world_netduinoplus2_qemu
- VSCode에서 “Run build task” 실행 후, 다음 명령을 선택해 빌드
make rebuildd
- 빌드가 정상적으로 완료되면 다름과 같이 빌드 정보가 출력됨
[100%] Linking C executable app.elf entry address = 0x0800043c ( 134218812) isr vector start = 0x08000000 ( 134217728) isr vector end = 0x08000188 ( 134218120) isr vector size = 0x00000188 ( 392) bytes relocated isr vector start = 0x20000000 ( 536870912) relocated isr vector end = 0x20000200 ( 536871424) relocated isr vector size = 0x00000200 ( 512) bytes text start = 0x08000000 ( 134217728) text end = 0x080204a0 ( 134349984) text size = 0x000204a0 ( 132256) bytes data start = 0x20000200 ( 536871424) data end = 0x2000053c ( 536872252) data size = 0x0000033c ( 828) bytes bss start = 0x2000053c ( 536872252) bss end = 0x200019e8 ( 536877544) bss size = 0x000014ac ( 5292) bytes heap base = 0x200019e8 ( 536877544) heap limit = 0x2001f800 ( 536999936) heap size = 0x0001de18 ( 122392) bytes stack limit = 0x2001f800 ( 536999936) stack top = 0x20020000 ( 537001984) stack size = 0x00000800 ( 2048) bytes flash start = 0x08000000 ( 134217728) flash size = 0x00100000 ( 1048576) bytes flash usage = 0x000207dc ( 133084) bytes ram start = 0x20000000 ( 536870912) ram size = 0x00020000 ( 131072) bytes ram static usage = 0x000019e8 ( 6632) bytes [100%] Built target app make[1]: Leaving directory 'C:/MyWorks/ubinos/ubiworks/output/hello_world_netduinoplus2_qemu' "" "# [End common-build - hello_world_netduinoplus2_qemu]" "###############################################################################" ""
VSCode로 유비노스 hello_world 예제 실행¶
Note
VSCode에서 “Run build task” 등 실행, 각종 View 선택 방법은 VSCode 활용 팁 참조
- VSCode에서 “Run build task” 실행 후, 다음 명령을 선택해 빌드된 elf 파일을 load
make load
정상적으로 load가 완료되면 QEMU과, qemu-system-arm 창이 나타난다.
- VSCode에서 “Run build task” 실행 후, 다음 명령을 선택해 load된 elf 파일을 실행
make xrun
정상적으로 실행되면 arm-none-eabi-gdb 창이 뜨고, qemu-system-arm 창에 hello world 메시지가 출력된다.
VSCode로 디버깅하기 위해 필요한 확장 프로그램 설치 및 설정¶
Note
VSCode에서 “Run build task” 등 실행, 각종 View 선택 방법은 VSCode 활용 팁 참조
- VSCode에서 “Extensions” View를 선택한 후, 다음 확장 프로그램을 설치
C/C++ (by Microsoft)
C/C++ Themes (by Microsoft)
C/C++ Extension Pack (by Microsoft)
Python (by Microsoft)
CodeLLDB (by Vadim Chugunov)
ARM Assembly (by dan-c-underwood)
CMake (by twxs)
MemoryView (by mcu-debug)
Open (by sandcastle)
CMake Tools (by Microsoft)
Makefile Tools (by Microsoft)
- 다음 확장 프로그램을 비활성화
CMake Tools (by Microsoft)
Makefile Tools (by Microsoft)
VSCode로 유비노스 hello_world 예제 실행 및 디버깅¶
Note
VSCode에서 “Run build task” 등 실행, 각종 View 선택 방법은 VSCode 활용 팁 참조
VSCode에서 “Run and Debug” View를 선택한 후, “Run and debug” 구성으로 “ARM Target (build load)”을 선택
“F5” 키를 눌러 “Start Debugging” 명령 실행
- VSCode의 Breakpoints 창으로 마우스를 옮기면 나타나는 “+” 버튼을 누른 후, 다음을 입력해 main, appmain 함수 symbol에 breakpoint를 설정
main
appmain
다시 “F5” 키를 눌러 “Continue” 명령 실행
유비노스 라이브러리 업데이트¶
Note
VSCode에서 “Run build task” 등 실행, 각종 View 선택 방법은 VSCode 활용 팁 참조
- VSCode에서 “Run build task” 실행 후, 다음 명령을 선택해 “Ubinos library manager”를 실행
make xmgr
“Ubinos library manager” 창이 뜨면 “Hide ubinos default library list” 체크
“Fetch and check for update all” 버튼 클릭
“Done” 메시지가 뜨면 “OK” 버튼 클릭
Update 가능한 library 는 “U” 항목이 “O” 로 표시됨
Update 가능한 library 가 있으면, 선택 후 “Update” 버튼 클릭
“Update library commands” 창이 뜨면 “Run” 버튼 클릭
“Success” 메시지가 뜨면 “OK” 버튼 클릭
“Update library commands” 창의 “Close” 버튼 클릭, “Ubinos library manager” 창의 “Close” 버튼 클릭을 차례로 클릭
유비노스 시작 안내서 (리눅스)¶
- 유비노스 관련 문의 및 답변 웹페이지:
- 유비노스 깃허브 이슈 웹페이지: (https://github.com/ubinos/ubinos.issues)
운영체제 종속적 패키지 설치¶
필요한 패키지 설치¶
터미널 실행
- 다음 명령어 실행해 필요한 패키지 설치
sudo apt update
sudo apt install build-essential libncurses-dev bison flex libssl-dev libelf-dev bc bzip2 -y sudo apt install git ccache wget zip 7zip xclip xterm -y sudo apt install cmake cmake-curses-gui cmake-qt-gui -y sudo apt install python3 python3-tk python3-pip python3-virtualenv python-is-python3 python3-pil python3-pil.imagetk -y sudo apt install qemu-system -y
- 다음 명령을 수행해 git 사용자 이름과 이메일 설정
Note
“Your Name”과 “your-email@example.com”을 본인의 이름과 이메일로 변경해서 실행해야 한다.
git config --global user.name "Your Name" git config --global user.email "your-email@example.com"
터미널 창 닫기
SSH key 생성 및 github에 등록¶
SSH key 생성¶
터미널 실행
- 다음 명령어를 실행해 ssh key를 생성
ssh-keygen -t rsa -b 4096
file을 입력하라는 메시지가 나오면 엔터를 눌러 기본값을 선택한다.
passphrase를 입력하라는 메시지가 나오면 엔터를 눌러 no passphrase를 선택한다.
- 다음 명령어를 실행해 생성한 공개키를 클립보드에 복사
cat ~/.ssh/id_rsa.pub | xclip -selection clipboard
file을 기본값인 id_rsa가 아닌 다른 것을 선택했다면 해당 file로 변경해서 실행해야 한다.
터미널 창 닫기
생성한 SSH 공개키를 github에 등록¶
웹브라우저에서 https://github.com 에 접속한한 후, 로그인
오른쪽 상단의 프로필 사진을 클릭한 후, Settings 클릭
좌측 메뉴에서 SSH and GPG keys 클릭
New SSH key 클릭
Title에 원하는 이름을 입력
Key에 복사한 공개키를 붙여넣기
Add SSH key 클릭
유비노스 소스트리 다운로드 및 개발용 가상환경 생성¶
유비노스 소스트리 다운로드¶
터미널 실행
- 다음 명령을 실행해 작업용 디렉토리 생성 후 해당 디렉토리로 이동
mkdir -p ~/Workspace/ubinos cd ~/Workspace/ubinos
- 다음 명령어를 실행해 유비노스 소스트리 다운로드
git clone https://github.com/ubinos/ubiworks.git
- 다음 명령어를 실행해 다운로드한 유비노스 소스트리 디렉토리로 이동
cd ubiworks
- 다음 명령어를 실행해 유비노스 소스트리 서브모듈 다운로드
git submodule update --init git submodule foreach git switch ubinos-main
터미널 창 닫기
개발용 가상환경 생성¶
터미널 실행
- 다음 명령을 실행해 유비노스 소스트리 make 디렉토리로 이동
cd ~/Workspace/ubinos/ubiworks/make
- 다음 명령을 실행해 “Ubinos config selecgtor”를 실행
make xsel
- “Ubinos config selecgtor” 창이 뜨면 다음을 선택한 후 Select 버튼을 클릭
ubinos project의 ubinos_venv
- 다음 명령을 실행해 빌드
make rebuildd
- 빌드가 정상적으로 완료되면 다름과 같이 가상환경 활성화, 비활성화 명령이 출력됨
* python interpreter path: /home/<user name>/Workspace/ubinos/ubiworks/output/ubinos_venv/bin/python * env activate command: . /home/<user name>/Workspace/ubinos/ubiworks/output/ubinos_venv/bin/activate * env deactivate command: deactivate
- 가상환경 활성화 명령을 실행해 ubinos_venv 활성화
Note
<user name>을 본인의 사용자 이름 변경해서 실행해야 한다.
. /home/<user name>/Workspace/ubinos/ubiworks/output/ubinos_venv/bin/activate
- 위 명령처럼 절대경로로 실행해도 되지만, 아래 명령처럼 상대경로로 실행해도 된다.
. ../output/ubinos_venv/bin/activate
터미널 창 닫기
VSCode 설치¶
- 웹브라우저로 다음 URL에 접속해, VSCode를 다운로드 및 설치
GNU ARM Embedded Toolchain 설치¶
터미널 실행
- 다음 명령을 실행해 툴체인을 다운로드
mkdir -p ~/Downloads cd ~/Downloads
wget https://developer.arm.com/-/media/Files/downloads/gnu-rm/10.3-2021.10/gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2
- 다음 명령을 실행해 툴체인을 설치
sudo mkdir -p /opt/toolchain
cd /opt/toolchain
sudo tar xfj ~/Downloads/gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2
sudo ln -s gcc-arm-none-eabi-10.3-2021.10 gcc-arm-none-eabi
- 다음 명령을 실행해 그놈 편집기로 bash 설정 파일 열기
gnome-text-editor ~/.bashrc
- bash 설정 파일 마지막 부분에 다음 내용을 추가, 저장, 후 그놈 편집기 종료
export PATH="/opt/toolchain/gcc-arm-none-eabi/bin:$PATH"
터미널 창 닫기 (bash 설정은 새로 여는 터미널 부터 적용됨)
터미널 다시 실행
- 다음 명령을 실행
arm-none-eabi-gdb --version
- 다음과 같은 오류가 발생하면 이후 과정을 수행하고, 오류가 발생하지 않으면 생략
arm-none-eabi-gdb: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory
- 터미널에서 다음 명령을 실행
mkdir -p ~/lib ln -s /lib/x86_64-linux-gnu/libncurses.so.6 ~/lib/libncurses.so.5 ln -s /lib/x86_64-linux-gnu/libtinfo.so.6 ~/lib/libtinfo.so.5
- 다음 명령을 실행해 그놈 편집기로 bash 설정 파일 열기
gnome-text-editor ~/.bashrc
- bash 설정 파일 마지막 부분에 다음 내용을 추가, 저장, 후 그놈 편집기 종료
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/lib
터미널 창 닫기 (bash 설정은 새로 여는 터미널 부터 적용됨)
VSCode로 유비노스 소스트리 열기¶
터미널 실행
- 다음 명령을 실행해 유비노스 소스트리 make 디렉토리로 이동
cd ~/Workspace/ubinos/ubiworks/make
- 다음 명령을 실행해 유비노스 개발용 가상환경 활성화
. ../output/ubinos_venv/bin/activate
- 다음 명령을 실행해 VSCode로 유비노스 소스트리 열기
code ..
VSCode로 유비노스 hello_world 예제 선택, 빌드, 실행¶
Note
VSCode에서 “Run build task” 등 실행, 각종 View 선택 방법은 VSCode 활용 팁 참조
- VSCode에서 “Run build task” 실행 후, 다음 명령을 선택해 “Ubinos config selecgtor”를 실행
make xsel
- “Ubinos config selecgtor” 창이 뜨면 다음을 선택한 후 Select 버튼을 클릭
ubinos project의 hello_world_netduinoplus2_qemu
- VSCode에서 “Run build task” 실행 후, 다음 명령을 선택해 빌드
make rebuildd
- 빌드가 정상적으로 완료되면 다름과 같이 빌드 정보가 출력됨
[100%] Linking C executable app.elf entry address = 0x0800043c ( 134218812) isr vector start = 0x08000000 ( 134217728) isr vector end = 0x08000188 ( 134218120) isr vector size = 0x00000188 ( 392) bytes relocated isr vector start = 0x20000000 ( 536870912) relocated isr vector end = 0x20000200 ( 536871424) relocated isr vector size = 0x00000200 ( 512) bytes text start = 0x08000000 ( 134217728) text end = 0x08020558 ( 134350168) text size = 0x00020558 ( 132440) bytes data start = 0x20000200 ( 536871424) data end = 0x2000053c ( 536872252) data size = 0x0000033c ( 828) bytes bss start = 0x2000053c ( 536872252) bss end = 0x200019e8 ( 536877544) bss size = 0x000014ac ( 5292) bytes heap base = 0x200019e8 ( 536877544) heap limit = 0x2001f800 ( 536999936) heap size = 0x0001de18 ( 122392) bytes stack limit = 0x2001f800 ( 536999936) stack top = 0x20020000 ( 537001984) stack size = 0x00000800 ( 2048) bytes flash start = 0x08000000 ( 134217728) flash size = 0x00100000 ( 1048576) bytes flash usage = 0x00020894 ( 133268) bytes ram start = 0x20000000 ( 536870912) ram size = 0x00020000 ( 131072) bytes ram static usage = 0x000019e8 ( 6632) bytes make[3]: Leaving directory '/home/<user name>/Workspace/ubinos/ubiworks/output/hello_world_netduinoplus2_qemu' [100%] Built target app make[2]: Leaving directory '/home/<user name>/Workspace/ubinos/ubiworks/output/hello_world_netduinoplus2_qemu' make[1]: Leaving directory '/home/<user name>/Workspace/ubinos/ubiworks/output/hello_world_netduinoplus2_qemu' # [End common-build - hello_world_netduinoplus2_qemu] ###############################################################################
VSCode로 유비노스 hello_world 예제 실행¶
Note
VSCode에서 “Run build task” 등 실행, 각종 View 선택 방법은 VSCode 활용 팁 참조
- VSCode에서 “Run build task” 실행 후, 다음 명령을 선택해 빌드된 elf 파일을 load
make load
정상적으로 load가 완료되면 QEMU과, qemu-system-arm 창이 나타난다.
- VSCode에서 “Run build task” 실행 후, 다음 명령을 선택해 load된 elf 파일을 실행
make xrun
정상적으로 실행되면 arm-none-eabi-gdb 창이 뜨고, qemu-system-arm 창에 hello world 메시지가 출력된다.
VSCode로 디버깅하기 위해 필요한 확장 프로그램 설치 및 설정¶
Note
VSCode에서 “Run build task” 등 실행, 각종 View 선택 방법은 VSCode 활용 팁 참조
- VSCode에서 “Extensions” View를 선택한 후, 다음 확장 프로그램을 설치
C/C++ (by Microsoft)
C/C++ Themes (by Microsoft)
C/C++ Extension Pack (by Microsoft)
Python (by Microsoft)
CodeLLDB (by Vadim Chugunov)
ARM Assembly (by dan-c-underwood)
CMake (by twxs)
MemoryView (by mcu-debug)
Open (by sandcastle)
CMake Tools (by Microsoft)
Makefile Tools (by Microsoft)
- 다음 확장 프로그램을 비활성화
CMake Tools (by Microsoft)
Makefile Tools (by Microsoft)
VSCode로 유비노스 hello_world 예제 실행 및 디버깅¶
Note
VSCode에서 “Run build task” 등 실행, 각종 View 선택 방법은 VSCode 활용 팁 참조
VSCode에서 “Run and Debug” View를 선택한 후, “Run and debug” 구성으로 “ARM Target (build load)”을 선택
“F5” 키를 눌러 “Start Debugging” 명령 실행
- VSCode의 Breakpoints 창으로 마우스를 옮기면 나타나는 “+” 버튼을 누른 후, 다음을 입력해 main, appmain 함수 symbol에 breakpoint를 설정
main
appmain
다시 “F5” 키를 눌러 “Continue” 명령 실행
유비노스 라이브러리 업데이트¶
유비노스 시작 안내서 (윈도우즈)의 “유비노스 라이브러리 업데이트” 참조