전체 글

전체 글

    Node.js로 라즈베리파이 GPIO 제어하기 (Blink)

    Node.js로 라즈베리파이 GPIO 제어하기 (Blink)

    라즈베리파이에서 GPIO를 제어하기 위해 흔히 쓰는 라이브러리로 WiringPi가 있습니다. WiringPi는 C로 만들어진 라이브러리여서 Node.js에서 바로 사용할 수 없습니다. Node.js의 패키지 관리자인 npm에서 WiringPi를 검색해보면 꽤 많은 패키지가 나옵니다. 하지만 제대로 동작하지 않는 것도 있었습니다. 제가 시도해본 것은 'wiring-pi' 'node-wiring-pi', 'rpio', 'onoff' 인데, 이 중에서 제대로 동작한 것은 'rpio'와 'onoff' 입니다. 저는 둘 중에서 'onoff'를 사용하기로 하였습니다. 'onoff'를 선택한 이유 'rpio'와 'onoff' 중에 'onoff'를 선택한 가장 큰 이유는 인터럽트 가능 여부입니다. 'rpio'는 공식적..

    라즈베리파이에 Node.js 설치하기

    우선 패키지 관리자의 패키지 리스트를 업데이트하고 설치된 패키지를 업그레이드합니다. sudo apt update sudo apt upgrade Node.js 패키지 저장소를 패키지 관리자에 추가합니다. 아래는 2022년 10월 5일 기준 LTS 버전인 16.17.1을 추가하는 과정입니다. curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash - 만약 최신 버전인 18.0을 설치하려 한다면 다음과 같이 명령을 입력합니다. curl -fsSL https://deb.nodesource.com/setup_current.x | sudo -E bash - 저장소 추가가 완료되었다면 Node.js를 설치합니다. sudo apt install nodejs ..

    WSL 환경에 vcpkg로 GTK 라이브러리 빌드할 때 의존성 문제 해결하기

    WSL 환경에 vcpkg로 GTK 라이브러리 빌드할 때 의존성 문제 해결하기

    WSL(Windows Subsystem for Linux) 환경에서 gtk4를 빌드하는 것을 시도해보았습니다. vcpkg를 사용하면 설치하려는 패키지의 의존성을 검사해서 필요한 것까지 모두 설치되는 것으로 알고 있었습니다. 그러나 정작 필요한 도구와 라이브러리를 자동으로 설치하지 못하고 계속해서 에러를 뱉어내는 문제가 있었습니다. 그럴 때마다 에러 로그를 살펴보며 필요한 것들을 하나씩 설치했습니다. 불편하고 시간이 걸리긴 했지만, 문제를 하나씩 해결해나갔고 결국 gtk4를 설치할 수 있었습니다. WSL 환경에서 vcpkg로 gtk4를 빌드하며 따로 설치해준 패키지는 다음과 같습니다. bison pkg-config autoconf libtool libxrandr-dev libx11-dev libxft-de..

    [ODROID] Linaro gcc? ARM 아키텍처를 위한 gcc!

    오드로이드 위키 페이지를 살펴보면 커널 빌드에 필요한 툴 체인이 무엇인지 알려주고 있습니다. "Linaro gcc"라고 하는데요, gcc는 gcc인데, Linaro는 무엇일까요? Linaro는 2010년에 만들어진 ARM 기반 리눅스 오픈 소스를 지향하는 엔지니어 중심의 비영리 단체입니다. 전 세계의 굵직한 회사들이 참여해서 ARM 기반 리눅스 소프트웨어에 필요한 도구를 개발하고 있습니다. 매월 마지막 주 목요일마다 최신 툴 체인을 배포한다고 합니다. 데비안 계열의 리눅스에서 "apt" 패키지 관리자로는 원하는 버전의 arm을 위한 gcc를 설치할 수 없습니다. 하지만 다행히도 Linaro 홈페이지에 방문하면 여태껏 배포된 gcc를 내려받을 수 있습니다. gcc 버전 4.9 ~ 7.5 저장소 gcc 버전..

    임베디드 리눅스 애플리케이션 개발 환경 준비하기

    임베디드 리눅스 애플리케이션 개발을 시작하려고 합니다. 그런데 개발 환경을 어떻게 구성하면 좋을까요? 우리에겐 두 가지 선택지가 있습니다. 타깃 디바이스에서 직접 개발 하는 방법과 호스트 PC에서 개발하는 방법입니다. 보통 타깃 디바이스 성능이 일반 PC보다는 좋지 않으므로 별도로 개발용 PC를 두고 작업을 하시는 게 낫습니다. 반면 당장 호스트 PC를 사용할 수 없거나 아직 개발 환경이 준비되지 않았는데 빨리 검토해봐야 한다면 타깃 디바이스에서 직접 코드를 작성해서 테스트해볼 수 있습니다. 이 글에서는 먼저 타깃 디바이스에 직접 개발 환경을 만들어 "Hello World!"를 출력해보는 예제를 설명할 것입니다. 그리고 호스트 PC에서 크로스 컴파일 개발 환경을 준비하는 과정을 살펴봅니다. 호스트 PC에..

    [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 설치방법은 공식 문서에 자세히 나와 있습니다. '자세히'라고 하였지만 너무 쉬워서 단 두 줄의 명령으로 설치 준비가 끝납니다. 설치를 위해서는 먼저..