You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
나는 openVela에서 ThorVG가 어떻게 관리되고 있고, 어떤 설정을 활성화해야 펌웨어의 일부로 빌드되는지 살펴보았다.
Repo
openvela는 여러 Git 저장소를 하나의 소스 트리로 구성하기 위해 repo를 사용한다.
repo는 모노레포나 깃 서브모듈과는 다르게 서로 다른 독립적인 여러 프로젝트들을 동시에 관리하기 위해 만든 도구다.
구글이 수백개의 안드로이드 저장소를 관리하기 위해 만들었다고 한다.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
openVela
openVela는 샤오미가 개발한 임베디드용 경량 운영체제이다.
구체적으로는 NuttX라는 자원이 제한된 임베디드 시스템을 위해 개발된 오픈소스 커널 기반이다.
NuttX는 리눅스 코드를 갖다 쓰지 않고 처음부터 새로 만든 커널이다.
다만 POSIX와 ANSI 표준을 지키고 있기 때문에 유사 소형 리눅스 느낌으로 사용할 수 있다.
openVela는 여러 저장소와 선택형 구성요소를 묶어 하나의 펌웨어를 만드는 OS 플랫폼으로 깃허브 저장소를 들어가면 굉장히 많은 레포들이 나열되어 있다.
이 선택형 구성 요소를 잘 버무려서 실제 제품 펌웨어에 필요한 기능과 라이브러리만 포함시킬 수 있는 것이다.
특히나 이 목록에 'ThorVG'와 내부적으로 ThorVG를 사용하는 'LVGL'이 포함되어 있는 점이 이번 조사의 계기가 된다.
(참고로 LVGL에 ThorVG가 어떻게 통합되어 있는지는 다른 멘티분이 작성한 글이 있다.)
나는 openVela에서 ThorVG가 어떻게 관리되고 있고, 어떤 설정을 활성화해야 펌웨어의 일부로 빌드되는지 살펴보았다.
Repo
openvela는 여러 Git 저장소를 하나의 소스 트리로 구성하기 위해 repo를 사용한다.
repo는 모노레포나 깃 서브모듈과는 다르게 서로 다른 독립적인 여러 프로젝트들을 동시에 관리하기 위해 만든 도구다.
구글이 수백개의 안드로이드 저장소를 관리하기 위해 만들었다고 한다.
repo는 manifest를 통해 관리되는데 간단히 예시는 이렇게 된다.
위 manifest 예제는
myteam밑에 있는app-core를src/core경로에,app-ui를src/ui경로에 채크아웃하라는 뜻이다.openVela는 repo의 manifest를 사용해 펌웨어 제작에 사용할 수 있는 부품을 목록화 한다.
repo 설정을 보면
openvela.xml에서 ThorVG를 외부 라이브러리로 제공하고 있다.Kconfig
Kconfig는 리눅스 커널에서 시작된 이 커널/펌웨어에 어떤 기능을 넣을지를 정의하고 선택하게 해주는 빌드 설정 도구다.앞서 openVela는
NuttX라는 경량 os 기반이라고 했는데,repo로 프로젝트를 땡겨온 후nuttx/.config파일을 보면 Kconfig 옵션들을 볼 수 있다.Kconfig에 비활성화되어 있다면 위처럼 적혀있고, 반대로 활성화되어 있다면 아래처럼 =y로 켜저있다.
external/thorvg경로에도Kconfig파일이 있는데ThorVG는 기본값이 비활성화 되어 있는 것을 볼 수 있다.
만약 커널에 ThorVG 옵션을 포함시키려면 주석을 풀고
CONFIG_LIB_THORVG=y로 설정하기보다는kconfig-tweak --file nuttx/.config --enable CONFIG_LIB_THORVG명령어를 쓰는 것이 안전하다고 한다.빌드
블루투스나 와이파이 같은 모든 기능을 제외하고 파일 시스템과 같은 기본 옵션만 켜저있는 상태에
ThorVG만 포함시켜 기본 제공되는 Hello 라는 앱에 간단히 로그를 찍어서 리눅스 호스트에서 돌아가는 일반 실행 파일로 빌드해봤다.
커널에 포함이 되어서 정상 호출된 것을 확인할 수 있었다.
마무리
openVela 운영체제에 포함되는 라이브러리로 ThorVG가 어떻게 관리되고 있는지 살펴보았다.
여러 선택형 구성요소를 조합해 제품별 펌웨어를 만드는 openVela의 구조를 잘 보여주는 사례라고 생각한다.
All reactions