728x90

2023/08 8

BMW의 소프트웨어 플랫폼 (node0)

이전 글에서 BMW가 다른 독일 OEM에 비해 전반적인 기술을 도입하는 속도나 성숙도가 느리다고 이야기 했었다. 하지만 계속 느끼고 있었고 오늘 EOSS (Embedded Open Source Summit) 2023에서 다시 한번 확인해본 결과 그렇지 않다는 결론을 스스로 내렸다. 지속적으로 오픈소스 컨퍼런스에 활동한 내용들을 발표했고, 이제는 스폰서도 하고, 데모도 지속적으로 한다. 여기서 만난 친구들과 여러 이야기를 나누면 소프트웨어에 대한 성숙도는 다른 독일 자동차 회사보다 훨씬 더 난거 같기도 하다. Node0 - BMW 소프트웨어 플랫폼 위의 데모는 최신 건 아니지만 Cluster에서 Linux를 사용하고 많은 곳 (IVI, RSU, 뒷좌석 양쪽 컨트롤러)에서 자체 리눅스 플랫폼인 Node0를 ..

Automotive 2023.08.30

jfrog (artifactory) CLI 도구 사용

회사에서 바이너리를 저장하고 관라하는 공간으로 jfrog aftifactory를 사용한다. URL에서 직접 다운로드 받거나 CURL을 통해서 다운받을 수 있지만 jfrog에서 제공하는 jf라는 CLI도구를 사용하여 여러 옵션과 함께 파일을 다운로드 받을 수 있다. 사용방법은 간단하다. 우선 jf 툴을 OS 버전에 맞게 https://jfrog.com/getcli/ 에서 다운로드 받을 수 있다. jf 파일을 다운받게 되고 각자의 OS에 맞게 실행권한을 주고 실행하면 된다. 필자는 MacOS ARM 버전을 받았고, 신뢰할 수 있는 어플리케이션으로 Security 설정을 풀어주었다. 그리고 바로 실행하면 help 메뉴가 나온다. 실제 다양한 옵션을 지원하고 필자는 특정 디렉토리하의 파일을 병렬로 다운받고자 다..

Development 2023.08.29

QT LTS Commercial 버전과 QT LTS LGPL 버전

프로젝트를 하다가 QT LTS Commercial 버전과 LGPL 버전이 궁금하게 되어 몇가지 조사를 해보고 나름대로 내린 결론을 아래와 같이 적어본다. QT는 Commercial과 LGPL Dual License를 모두 지원한다. Commercial 버전과 LGPL 버전의 코드는 거의 동일하지만 commit이 정확히 일치하지는 않는다. 오픈소스의 qt 저장소 커밋을 보면 한꺼번에 Commercial 저장소 commit들을 merge한 merge commit 들이 보인다. QT Commercial 버전과 LGPL 버전 차이 저장소 위치가 다름 (Commercial 버전은 로그인 해야 접근 가능) 5.15와 같은 경우 지속적인 지원 여부 (2023년 5월 26일 이후에 오픈소스 저장소 즉 LGPL 버전은..

Development 2023.08.28

EKC (Europe-Korea Conference) 2023 참석 후기

EKC (Europe-Korea Conference) 2023이 독일 뮌헨에서 2023년 8월 14일 부터 18일까지 개최되었다. EKC2023 - Europe-Korea Conference on Science and Technology2023 www.ekc2023.org EKC 소개 미국에는 UKC 미국에 있는 과학자들이 1년에 한번씩 모여 서로의 기술을 공유하고 네트워킹을 한다면, EKC는 유럽 전역에 있는 과학자들이 1년에 한번씩 모여 정보를 공유하며 서로의 정보를 공유한다. 유럽의 각 지역에 과학자 협회(재독과협, 재영과협, 프랑스과협 등)가 돌아가면서 EKC를 개최한다. 2022년에는 프랑스 마르세유에서, 2024년에는 영국에서 개최될 예정이다. 건축, 재료, 정보통신, 생명, 화학 등 다양한 ..

Development 2023.08.21

Yocto에 ccache 사용 - 1부

Yocto 프로젝트는 가능한 모든 컴포넌트를 직접 빌드하여 사용한다. 그렇기 때문에 빌드 시간이 오래 걸리고 이를 보완하기 위해 PREMIRROR와 Shared State Cache를 사용하여 빌드 시간을 단축한다. 하지만 여전히 의존성 등의 문제로 수정하지 않은 컴포넌트를 전체 컴파일하기도 한다. 이를 보완하기 위해 ccache를 사용할 수 있다. ccache ccache (https://ccache.dev/) 는 컴파일러 캐시이다. 이전에 컴파일 했던 캐시를 저장했다가 다시 재사용하여 컴파일 속도를 빠르게 한다. GCC, Clang 등의 컴파일러를 지원하고 윈도우, 맥, 리눅스 등의 운영체제에서 동작한다. Yocto에 ccache 적용하기 yocto에는 ccache.bbclass가 있다. 그 파일 안..

Yocto 2023.08.11

하이퍼바이저 (Hypervisor) Type1, Type2 차이

차량용 ECU 아키텍처가 분산 아키텍처에서 중앙집중형, 도메인, Zonal 아키텍처로 움직이고 있다. OEM 마다 약간씩 다르지만 목적은 작은 수십/수백개의 ECU를 성능 좋은 수/수십개로 줄이는 것이다. 하드웨어 비용을 줄이고 소프트웨어 업데이트 등을 조금 더 자유롭고 편하게 하고자 하는 목적이다. 이렇게 함으로써 ECU 하나에 들어있는 소프트웨어의 복잡도는 늘어나고 각기 다른 기능을 위한 OS도 하나의 ECU에 여러개가 서로 고립되면서 돌아가야 한다. 이 때 하이퍼바이저 (Hypervisor)을 사용한다. 하이퍼바이저 쪽 전문가는 아니지만 최근 프로젝트를 하면서 Type1, Type2 하이퍼바이저에 대한 구분 및 장단점 그리고 전 가상화 (Full Virtualization)와 반 가상화 (Para ..

Development 2023.08.05

Yocto Overrides 문법 변화

honister 3.4 버전에서 Yocto 오버라이드 문법이 변경되었다. "_"를 사용 하던 것이 ":" 로 변경되었다. 예를 들면 아래와 같다. 기존 문법 SRC_URI_qemux86 = "file://somefile" 신규 문법 SRC_URI:qemux86 = "file://somefile" 물론 기존 변수 이름에 _를 사용하여 약간 헤깔리는 경우가 있다. BBFILE_PATTERN, SRC_URI, PREFERRED_VERSION_xxx, SRCREV_xxx 등이 있다. 위의 것들은 변경 없이 기존과 같이 사용한다. 문법 변경사항을 쉽게 적용하기 위해 Yocto에서는 script를 제공하니 한꺼번에 변경하려면 아래 스크립트를 사용하면 된다. $ /scripts/contrib/convert-overr..

Yocto 2023.08.04

Yocto 빌드 통계 (buildstat) 시각화

Yocto에서는 빌드 과정 중 각 컴포넌트의 태스크를 빌드할 때 사용한 리소스(CPU, Disk) 사용량 및 빌드 시간을 저장할 수 있다. 이는 빌드 시간을 최적화하는데 많은 도움을 준다. 빌드 통계를 활성화 하는 방법은 conf 파일 (ex, local.conf)에 다음 라인을 추가하여 빌드하면 된다. INHERIT += "buildstat" 빌드를 하면 아래 그림과 같이 build/tmp/buildstats/[timestamp] 디렉토리에 레시피 디렉토리가 있고 그 디렉토리 안에 태크스 별로 파일이 생성된다. 아래는 zip 컴포넌트의 do_compile 태스크 결과 파일이다. 이 파일들만을 가지고는 분석하기 어렵기 때문에 yocto에서는 시각화할 수 있는 python 스크립트를 제공한다. 다음 명령어..

Yocto 2023.08.03
728x90
반응형