Getting started guides¶
유비노스 시작 안내서 (윈도우즈)¶
유비노스 시작 안내서 동영상:
유비노스 관련 문의 및 답변 페이지:
- 유비노스 깃허브 이슈 페이지: (https://github.com/ubinos/ubinos.issues)
1. 운영체제 종속적 패키지 설치¶
1.1. 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 창 닫기
1.2. 필요한 패키지 설치¶
관리자 권한으로 명령 프롬프트(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 은 경로 설정 예를 보여준다.

그림 2 Ubinos Env. Path Setting for Windows 11¶
일반 사용자 권한으로 명령 프롬프트(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. ssh key 생성 및 github에 등록¶
2.1. 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) 창 닫기
2.2. 생성한 공개키를 github에 등록¶
웹브라우저로 https://github.com 에 접속한한 후, 로그인
오른쪽 상단의 프로필 사진을 클릭한 후, Settings 클릭
좌측 메뉴에서 SSH and GPG keys 클릭
New SSH key 클릭
Title에 원하는 이름을 입력
Key에 복사한 공개키를 붙여넣기
Add SSH key 클릭
3. 유비노스 소스트리 다운로드 및 개발용 가상환경 생성¶
3.1. 유비노스 소스트리 다운로드¶
일반 사용자 권한으로 명령 프롬프트(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) 창 닫기
3.2. 개발용 가상환경 생성¶
일반 사용자 권한으로 명령 프롬프트(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) 창 닫기
4. VSCode 설치¶
웹브라우저로 다음 URL에 접속해, VSCode를 다운로드 및 설치
5. GNU ARM Embedded Toolchain 설치¶
웹브라우저로 다음 URL에 접속해, gcc-arm-none-eabi-10.3-2021.10-win32.exe를 다운로드 및 설치
Note
설치 완료 창이 뜨면 “Add path to environment variable”을 반드시 체크 하고 마침 버튼을 눌려야 합니다.
6. VSCode로 유비노스 소스트리 열기¶
일반 사용자 권한으로 명령 프롬프트(cmd.exe) 실행
다음 명령을 실행해 유비노스 소스트리 make 디렉토리로 이동
cd C:\MyWorks\ubinos\ubiworks\make
다음 명령을 실행해 유비노스 개발용 가상환경 활성화
..\output\ubinos_venv\Scripts\activate.bat
다음 명령을 실행해 VSCode로 유비노스 소스트리 열기
code ..
7. 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]"
"###############################################################################"
""
8. 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 메시지가 출력됩니다.
9. 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)
10. 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” 명령 실행
유비노스 시작 안내서 (리눅스)¶
유비노스 시작 안내서 동영상:
유비노스 관련 문의 및 답변 페이지:
- 유비노스 깃허브 이슈 페이지: (https://github.com/ubinos/ubinos.issues)
1. 운영체제 종속적 패키지 설치¶
1.1. 필요한 패키지 설치¶
터미널 실행
다음 명령어 실행해 필요한 패키지 설치
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"
터미널 창 닫기
2. ssh key 생성 및 github에 등록¶
2.1. 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로 변경해서 실행해야 합니다.
터미널 창 닫기
2.2. 생성한 공개키를 github에 등록¶
웹브라우저로 https://github.com 에 접속한한 후, 로그인
오른쪽 상단의 프로필 사진을 클릭한 후, Settings 클릭
좌측 메뉴에서 SSH and GPG keys 클릭
New SSH key 클릭
Title에 원하는 이름을 입력
Key에 복사한 공개키를 붙여넣기
Add SSH key 클릭
3. 유비노스 소스트리 다운로드 및 개발용 가상환경 생성¶
3.1. 유비노스 소스트리 다운로드¶
터미널 실행
다음 명령을 실행해 작업용 디렉토리 생성 후 해당 디렉토리로 이동
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
터미널 창 닫기
3.2. 개발용 가상환경 생성¶
터미널 실행
다음 명령을 실행해 유비노스 소스트리 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
터미널 창 닫기
4. VSCode 설치¶
웹브라우저로 다음 URL에 접속해, VSCode를 다운로드 및 설치
5. 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
다음과 같은 오류가 발생하면 10, 11, 12, 13번 과정을 수행하고, 오류가 발생하지 않으면 이 과정들은 생략
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 설정은 새로 여는 터미널 부터 적용됨)
6. VSCode로 유비노스 소스트리 열기¶
터미널 실행
다음 명령을 실행해 유비노스 소스트리 make 디렉토리로 이동
cd ~/Workspace/ubinos/ubiworks/make
다음 명령을 실행해 유비노스 개발용 가상환경 활성화
. ../output/ubinos_venv/bin/activate
다음 명령을 실행해 VSCode로 유비노스 소스트리 열기
code ..
7. 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]
###############################################################################
8. 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 메시지가 출력됩니다.
9. 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)
10. 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” 명령 실행