연구 노트

    [ODROID] Vu8M 디스플레이 연결 설정하기

    ODROID에 연결할 수 있는 디스플레이로 Vu8M이라는 제품이 있습니다. 그러나 연결만 한다고 해서 바로 디스플레이가 작동하지 않습니다. Petitboot와 리눅스에서 필요한 설정을 해야만 화면에 영상을 띄울 수 있습니다. 확인 사항 Vu8M을 사용할 수 있는 환경인지 확인해야합니다. Petitboot 버전과 리눅스 커널 버전이 다음과 같아야 합니다. Petitboot: v20220424 이상 리눅스 커널: 4.19.219-202204111511-focal 이상 Petitboot 버전은 ODROID에 HDMI를 연결해서 전원을 켜면 처음에 뜨는 Petitboot 메뉴 화면 상단에서 확인할 수 있습니다. 리눅스 커널 버전은 리눅스 터미널에 아래처럼 명령을 입력해서 알 수 있습니다. dpkg -s linu..

    vcpkg로 GTK 라이브러리 빌드하기

    vcpkg로 GTK 라이브러리 빌드하기

    x64 Windows 환경에서 GTK 라이브러리를 사용하기 위해 빌드하는 과정을 다룹니다. 이전 글에서 소개한 vcpkg를 이용해서 손쉽게 할 수 있습니다. 라이브러리를 빌드하는 데는 시간이 필요하므로 충분한 여유 시간을 두고 진행하시기 바랍니다. 호환성 확인하기 먼저 vcpkg가 GTK 라이브러리를 지원하는지를 확인해보겠습니다. 원하는 라이브러리가 지원되는지는 vcpkg 공식 사이트에서 Browse packages 페이지로 들어가 확인할 수 있습니다. GTK 버전 4.6.0까지 설치 할 수 있고, 호환성(Compatibility)을 보면 x64-windows를 지원한다는 것도 알 수 있습니다. 설치하기 vcpkg를 설치한 경로에 가서 아래처럼 명령을 입력합니다. ./vcpkg install gtk:x6..

    vcpkg로 C/C++ 오픈소스 패키지 관리하기

    Python은 pip, C/C++은 vcpkg! vcpkg는 마이크로소프트에서 만든 Python의 pip, Ruby의 gem, Node.js의 npm 같은 패키지 관리자입니다. Windows, Linux, macOS 그 외 여러 환경에서 오픈소스 C/C++ 라이브러리를 쉽게 설치, 관리할 수 있도록 도와줍니다. 어떤 패키지들이 준비되어 있는지 궁금하다면 공식 사이트의 Browse packages 페이지에서 확인할 수 있습니다. 개인적으로 마이크로소프트의 오픈소스에 대한 이런 행보를 무척 긍정적으로 생각하고 있습니다. vcpkg 설치는 2단계로 끝! vcpkg 설치방법은 공식 문서에 자세히 나와 있습니다. '자세히'라고 하였지만 너무 쉬워서 단 두 줄의 명령으로 설치 준비가 끝납니다. 설치를 위해서는 먼저..

    C++를 사용할 수 있는 GUI 라이브러리 모음

    C++를 사용할 수 있는 GUI 라이브러리 모음

    C++ 언어를 사용할 수 있는 GUI 라이브러리가 어떤 것들이 있는 지 얼마나 알고 계시나요? 저는 기껏해야 Windosws 환경에서 사용할 수 있는 MFC, 크로스 플랫폼을 지원하는 Qt와 GTK 그리고 wxWidgets 정도만 알고 있었습니다. 혹시 위에서 얘기한 라이브러리가 아닌 다른 것들을 찾고 있다면 아래 사이트를 꼭 참고해보시기를 바랍니다. 무려 40여 가지나 되는 C++ GUI 라이브러리를 소개한 페이지입니다. https://philippegroarke.com/posts/2018/c++_ui_solutions/ 윗글을 정리한 사람이 간단하게나마 각 라이브러리의 특징과 사용할 수 있는 운영체제 그리고 라이선스까지 적어두었습니다. 장단점도 적혀있는데 작성자의 개인 의견이기 때문에 참고만 하시면 ..

    Git push 하려는데 나타나는 403 에러 해결하기

    나의 시간과 코드가 날아갔다 어제 반나절 동안 작업한 코드를 날리고 말았습니다. 저장도 제대로 했고, 기능 구현을 마칠 때마다 git commit도 잘했는데 말이지요. 문제는 원격 저장소에 push를 하려는데 자꾸만 실패하는 것입니다. 원격 저장소 주소 설정도 제대로 되어있고 계정도 문제가 없습니다. 서버 문제도 아니고요. 그런데도 코드가 올라가지 않았습니다. 퇴근 시간은 다가오고, 마음은 급해져서 이리저리 git 명령어를 입력해봅니다. 그러다 그만 오늘 작업한 이력을 잃어버리고 말았지요. '어떻게 그럴 수 있지?' 라고 생각하실 수도 있지만... 이 글은 '커밋 이력을 날리는 법'이 아닌 403 에러를 해결하는 법을 설명하는 글입니다. 문제 상황 작업을 마치고 git 서버에 push 하려는데 에러가 났..

    리눅스 커널 빌드를 위한 셸 스크립트 분석

    리눅스 커널 빌드를 위한 셸 스크립트 분석

    시작하기에 앞서 이 글에서 다루는 셸 스크립트는 2장에 소개된 것입니다. 이 스크립트가 제대로 동작하기 위해서는 책에 설명된 환경이 갖춰져 있어야 합니다. 여기서는 커널 빌드 과정이 아닌 커널 빌드를 위한 셸 스크립트에 어떤 내용이 담겨있는지를 분석하는 글을 참고하셔서 읽어주시기를 바랍니다. 먼저 분석하고자 하는 예제 스크립트를 살펴본 다음에 셸 스크립트 문법을 딱 필요한 만큼만 알아보겠습니다. 그리고서 예제 스크립트를 한 줄씩 해석해보도록 하겠습니다. 커널 빌드를 위한 셸 스크립트 책에 소개된 셸 스크립트는 아래와 같습니다. 저자가 공유한 예제 스크립트는 이곳을 클릭하시면 확인하실 수 있습니다. #!/bin/bash echo "configure build output path" KERNEL_TOP_PA..

    STM32 최소 회로를 구성하기 위한 문서

    STM32 최소 회로를 구성하기 위한 문서

    스텝모터 제어 보드에 사용할 MCU로 STM32G030F6P6를 선정했다. 이제 최소 회로를 구성해야 한다. 그런데 데이터 시트를 찾아봐도 최소 회로에 대한 내용이 없다. ST 홈페이지에서 문서 자료를 뒤져보니 적절한 Application note를 찾았다. 문서 제목은 "Getting started with STM32G0 Series hardware development"이고 문서 번호는 AN5096이다. 문서 구하는 방법 ST 공식 홈페이지(https://www.st.com)에%EC%97%90) 접속한다. 상단 검색창에 AN5096을 입력한다. 검색 결과에 나타난 링크를 클릭하면 곧바로 PDF 파일을 다운받을 수 있다. 요약 이 문서에는 STM32G0 시리즈의 전원 공급, 클록 관리, 리셋 제어, 부..

    MCU를 선정하다.

    MCU를 선정하다.

    MCU는 ST사의 STM32G030F6P6로 선택하기로 했다. 아래와 같은 이유로 적당한 제품이라는 생각을 했다. 현재 기준으로 재고가 충분함 (digi-key) 값이 저렴함: $1.68 2개의 UART: 하나는 UUB와 통신용, 다른 하나는 모터 드라이버와 통신용 1개의 Advanced Timer, 4개의 General purpose Timer: PWM 생성할 때 필요함 17개의 GPIO: 여유롭지는 않지만 부족하지 않을 듯함 64MHz CPU: UART 파싱과 PWM 출력을 하기에는 충분하지 않을까 생각한다. ST 홈페이지를 뒤져보면 스텝 모터 제어에 추천되는 제품군을 소개한 것을 찾을 수 있다. 그중 가장 기본이 되는 라인이 64MHz의 CPU를 가지고 있다. 그렇다면, 괜찮지 않을까? 다음은 MC..