pigweed

Sijin·2025년 8월 10일

pigweed란

  • 32bit 마이크로컨트롤러용 임베디드 어플리케이션 개발을 위한 오픈소스 라이브러리 모음
  • open-dice는 pigweed를 런타임으로 사용한다

Setup

requires

  • git
  • python > 3.8
  • bazelisk
  • gcc, clang

Bazel 설치

  • bazel & bazelist
    • bazel은 make와 비슷한 빌드, 테스크 도구이다
    • bazelisk는 bazel의 공식 CLI 도구이다
      • Go로 작성된 bazel의 wrapper이다
      • 현재 작업 디렉토리에 따라 적절한 버전의 bazel을 자동으로 선택한다
      • 이후 단계부터 bazel이 아닌 bazelisk를 실행시킬 것이다
  • Go 설치
wget https://go.dev/dl/go1.24.6.linux-amd64.tar.gz

sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go1.24.6.linux-amd64.tar.gz

export PATH=$PATH:/usr/local/go/bin

go version
# go version go1.24.6 linux/amd64
  • bazelisk 설치
go install github.com/bazelbuild/bazelisk@latest

export PATH=$PATH:$(go env GOPATH)/bin

bazelisk && bazelisk --version
# bazel 8.3.1

pigweed setup

git clone https://pigweed.googlesource.com/pigweed/pigweed ~/pigweed
cd ~/pigweed

source ./bootstrap.sh
  • bootstrap.sh
    • 환경 설정 및 툴체인 다운로드
    • 한번만 수행하면 되고, 그 이후에는 active.sh만 실행하면 bootstrap없이 바로 개발이 가능하다

예제: LED-blinking

https://cs.opensource.google/pigweed/quickstart/bazel

예제 다운로드

git clone https://pigweed.googlesource.com/pigweed/quickstart/bazel pw_quickstart
cd pw_quickstart

시뮬레이터 빌드 & 실행

bazelisk run //apps/blinky:simulator_blinky # 펌웨어 시뮬레이터

bazelisk run //apps/blinky:simulator_console # 콘솔 접속
  • 콘솔에 접속하면 아래처럼 보인다

  • 프롬프트로 LED를 제어할 수 있다
device.toggle_led()
device.blink(blink_count=3)

unit test 실행

bazelisk test //...
  • modules/blinky/blinky_test.cc같은 project에 정의된 unit test가 실행된다

0개의 댓글