みつきんのメモ

組み込みエンジニアです。Interface誌で「Yocto Projectではじめる 組み込みLinux開発入門」連載中

Yocto Honister ラズパイ4でVulkanデモプログラムを動かしてみる

はじめに なんとなく、Raspberry Pi 4 で Vulkan を試すと同様のことをPokyでもやってみた。 使用するのはラズベリーパイ4 動かすデモプログラムはSaschaWillems/Vulkan。これはVulkanのデモとしては有名なものらしい。 run_crops.sh(余談) gistに置いた。 …

Yocot Project CROPSを拡張してkasを使ってみる

はじめに CROPSを使用すると、ホスト環境の差異を気にせずにbitbakeができるようになるので 非常に便利だが、たまにhosttoolsを追加したりCROPSのDockerイメージを拡張したいケースがある。 その際にCROPSの提供物を直接編集することなく、Dockerイメージを…

Yocto Project CROPSでmeta-riscvをビルドしてみる

はじめに "Yocto Project CROPSを使ってみる"を拝見して、、、Fedoraのpodmanでもできました。https://t.co/YGURc1j6hz— nb.o (@Nextremer_nb_o) February 9, 2022 私の記事を参考にして、meta-riscvをビルドしようとしたけどうまくいかないらしかったので試…

Yocto Honister ラズパイ4でTPMエミュレータを使ってみる

はじめに Yocto ProjectでもいくつかのレイヤでTPMをサポートしている。 ラズベリーパイシリーズはTPMモジュールは搭載されておらず、外付けのモジュールを使用するか エミュレータを使用する必要がある。 meta-security配下にあるmeta-tpmではTPMエミュレー…

Yocto Project CROPSでmeta-raspberrypiをビルド

はじめに 前回CROPSを動かしてみた。 CROPSでmeta-raspberrypiをビルドしてみる。今回はラズベリーパイ4を使用する。 run_crops.sh 今回も前回作成したrun_crops.shを使用する。 #!/bin/sh cmd="source /workdir/poky/oe-init-build-env" if [ $# -gt 0 ] ; …

Yocto Project HONISTERの注意点

はじめに 最近やっと時間が取れるようになって(なってない)、HONISTERをいじり始めた。 初っ端から下記のようなエラーが発生して面食らった。 ERROR: Variable DISTRO_FEATURES_append contains an operation using the old override syntax. Please convert…

Yocto Project CROPSを使ってみる

はじめに Yocto Projectではbitbakeを実行するためのDockerコンテナを提供している。 そのコンテナはCROss PlatformS(CROPS)と呼ばれている。CROPSの詳細はSetting Up to Use CROss PlatformS (CROPS)を参照のこと。 使い方 使い方についてのざっくりな説明…

Yocto Zephyrアプリケーションのコンフィグを変更する

はじめに YoctoでビルドするZephyrアプリケーションのコンフィグを設定する方法を調べた。 micro:bitの5x5 LEDを有効化する。 最終的にはmeta-armの修正が必要となった。 作業環境はYocto Zephyrに独自のアプリケーションを追加してみるを使用する。 環境変…

Yocto Zephyrのアプリケーションをqemu + gdbでデバッグ

はじめに Yocto ProjectでビルドしたZephyrのアプリケーション(elf)をqemuとgdbでデバッグしてみる。 環境 下記で作成した環境をベースに作業する Yocto BBC micro:bit V1向けのZephyrを試してみる Yocto Zephyrに独自のアプリケーションを追加してみる gdb-…

Yocto Zephyrに独自のアプリケーションを追加してみる

はじめに Yocto ProjectでビルドするZephyrに独自のアプリケーションを追加してみる。 環境構築 この環境をベースに作業する。 環境変数設定 bitbake関連のツールを使用するために環境変数の読み込みは行う。 $ source poky/oe-init-build-env build レイヤ…

Yocto BBC micro:bit V1向けのZephyrを試してみる

はじめに YoctoでZephyrをビルドできるっぽいことは知っていたが、試したことがなかったのでやってみる。 使用するバージョンはhardknott 構築手順 ソース取得 下記のコマンドでソースを取得する。 $ mkdir -p mb-hardknott && cd mb-hardknott $ git clone …

emacs markdown-modeで表を作成する

はじめに 筆者はemacsでmarkdownを書く時にはmarkdown-modeのパッケージをインストールして、gfm-modeを使用する。 .emacs/init.elは多分こんな感じ。 ;; Markdown mode (use-package markdown-mode :ensure t :init (add-to-list 'auto-mode-alist '("\\.md…

Yocto Project 3.3(Hardknott)で日本語入力

はじめに Yocto Project 3.3(Hardknott)でラズベリーパイ4を動かすの環境をベースに、Hardknottで日本語入力環境を作成してみる。 かなり古いがyoctoで日本語入力も参考にする。 作業環境の準備 meta-oeをビルド環境に設定する。 $ cd rpi-hardknott $ sourc…

Yocto Project 3.3(Hardknott)でラズベリーパイ4を動かす

はじめに Yocto Project 3.3がリリースされていた。 リリースされた事自体は知っていたが、meta-raspberrypiをビルドする際に、bitbake-layers layerindex-fetchがうまく動かなかったので、しばらく様子を見ていた。 具体的には下記のようなこと。 OpenEmbed…

Yocto Chromiumをビルドする時に何回やってもリンカでSegmentation faultする時の対応

はじめに YoctoでChromiumをビルドする時に下記のようにエラーで終了する。 ... (snip) ... nterface.o | ninja: build stopped: subcommand failed. | WARNING: exit code 1 from a shell command. | ERROR: Task (/home/mickey/work/yocto/rpi-gatesgarth/…

Yocto リードオンリーなルートファイルシステムを構築する

はじめに 組み込みシステムの場合、製品として使用するようなケースではルートファイルシステムをリードオンリーとして、 本体が持つデータを書き換えられないようにすることがある。 Yoctoでは簡単に実現することができる。 実機でやったほうが楽しいのでラ…

Raspberry Pi Pico タイマーでLチカ

はじめに Raspberry Pi Pico(Pico)は4つの64ビットタイマーを持っている。それぞれ割り込みを発生させることができる。 ここまででSysTickやその割り込みを使ってLチカをしてきたが、すべてビジーループでタイミングを測っていた。 今回はWFIを使ってスリー…

Yocto UEFIセキュアブート

はじめに Yoctoでx86_64向けのボードを動かす。その際にUEFIセキュアブートも有効にしてみたいと考えた。そこで、meta-efi-secure-bootというレイヤを見つけた。 実機はROCK Pi X V1.4を使用する。 UEFIセキュアブート UEFIセキュアブートは秘密鍵を使用して…

Yocto bitbake-layers layerindex-fetch

はじめに bitbake-layersコマンドの便利なサブコマンドを見つけた(認識した)。 レイヤ間の依存関係 bitbakeで取り扱うレイヤではlayer.confに下記のようにLAYERDEPENDSを記述することで、依存関係を定義することができる。 LAYERDEPENDS_gnome-layer = "core…

Yocto meta-gnomeでpolkitのエラー

はじめに デフォルトの設定でmeta-gnomeをビルドするとエラーが発生する。 エラーの内容 gnome-control-centerとsystmedがそれぞれで/usr/share/polkit-1/rules.dをインストールしようとしてコンフリクトしている。 Error: Transaction test error: file /us…

Raspberry Pi Pico Systick割り込みを使ってLチカをFlashに書く

はじめに 前回作ったプログラムをFlashから実行できるようにしてみる。 RESUSについて追記(2021/3/10) Flash対応 Makefile diff -Narubp blink_ram_int_systick/Makefile blink_flash_int_systick/Makefile --- blink_ram_int_systick/Makefile 2021-02-27 1…

Raspberry Pi Pico Systick割り込みを使ってLチカをする

はじめに SysTick割り込みを使用してLチカをする。 2021-02-26 Raspberry Pi Pico Systickを使ってLチカを正確にするのコードをベースに作業する。 SysTick割り込み SysTick割り込みはm0+のコアで用意されている割り込みで、この割り込みが発生するとベクタ…

Raspberry Pi Pico Systickを使ってLチカを正確にする

はじめに 「PicoでベアメタルのLチカ(RAMバージョン) その2」として。 これまで作ってきたLチカは、適当な値をforでビジーループするだけだったので、タイミングはいい加減だった。 Cortex-M0+ではコアにSysTickを持っていて、これは難しい設定することもな…

Raspberry Pi Pico J-LlinkでOpenOCD

はじめに J-Link EDUが手元にあるので、OpenOCDでPicoのデバッグができないか試してみた。 接続 下記のように接続する。 Pico ARM-JTAG-SWD SWDIO SWDIO(7) SWDCLK SWDCLK(9) GND GND(4,6,8,10,12,14,16,18,20) VSYS VCC(1) 設定ファイル ${PICO_SDK_PATH}/.…

Raspberry Pi Pico ARM-USB-TINY-H + ARM-JTAG-SWDでデバッグ

はじめに ツイッターでRaspberryPi4が無いケースでOpenOCDでデバッグするにはどういう手段があるか。という話題が出た。 ARM-USB-TINY-H + ARM-JTAG-SWD ARMのMCUのデバッグで安価で使い勝手が良いものとしてはARM-USB-TINY-Hが挙げられる。 しかしこのデバ…

Pico ベアメタルをClang(LLVM)でビルド

はじめに ここまで作ってきたベアメタルのLチカはGCCでビルドしてきたが、それをclangでビルドしてみる。 clang-10のインストール Ubuntu 20.04環境でClangをインストールする。バージョンは10。 $ sudo apt install -y clang-10 lld-10 make Makefile ベー…

PicoでベアメタルのLチカ(FLASH + コンパイル済みBoot Stage2バージョン) その1

はじめに Raspberry Pi Pico SDKでのFlashからのブートについて調べたでは、Flashからブートするための仕組みを調査した。 Boot Stage2に相当する部分を自作するのは結構面倒だということがわかったので、コンパイル済み(CRC計算済み)のBoot Stage2である、 …

Pico SDKのリンカスクリプトを眺める

はじめに リンカスクリプト初心者がPico SDKのリンカスクリプトを眺める。今回眺めるのはmemmap_default.ld。 大きく分けて下記のようなブロックに別れている MEMORY ENTRY SECTIONS elfにもリンカスクリプトの詳しくないので間違っている情報があるはず。 M…

PicoでベアメタルのLチカ(RAMバージョン) その1

はじめに picoprobeでRAMに直接プログラムがロードできるようになったので、難しいboot2のことはおいておいて、 ベアメタルでLチカを試みる。 ホントは、コンパイル済みのboot2を組み込んでLチカしようと頑張ったが、現時点では挫折した。 心の師匠の成果物…

Ubuntu 20.04のPCでRaspberry Pi Picoを2台使ってOpenOCDによるデバッグ

はじめに Raspberry Pi Pico(Pico)はRaspberry Pi4を使用して、SWDでデバッグすることが推奨されているようだが、 Picoが2台ある場合、そのうち1台にpicoprobeというプログラムを書き込むことで、デバッガとして使用することができる。 下記のようにPico SDK…