みつきんのメモ

組み込みエンジニアです。Interface誌で「My オリジナルLinuxの作り方」連載中

yocto

ざっくりとALSAとPulseAudioの関係(の続きのようなもの)

はじめに 以前に書いた2015-04-04 ざっくりとALSAとPulseAudioの関係が未だにアクセスがあるようなのでちょっと振り返ってみる。 基本的な理解としては、 最終的に音を鳴らすのはデバイス デバイスを叩くためにデバイスドライバ(カーネルランド) サウンド関…

Yocto環境 callgrindでコールグラフを作成する

はじめに Linuxのユーザー空間のアプリをデバッグする際に、関数が実際にどのように呼び出されているのかを見たいことがある。 valgrindにはcallgrindというツールがあり、これを使うとコールグラフを生成することができる。 ターゲットにRPi3 Model Bを使用…

ラズベリーパイ3 warriorのglimagesinkがエラー

はじめに warrior(2.7)でcore-image-baseを作ってgstreamerで遊ぼうとしたら、次のコマンドでエラーが発生した。 $ export GST_GL_WINDOW=dispmanx ; export GST_GL_API=gles2 ; export GST_GL_PLATFORM=egl $ gst-launch-1.0 v4l2src device=/dev/video0 ! …

yoctoでもRust

はじめに 最近流行りのRust。meta-rustを使えばyocto環境でもRustアプリケーションを使えるようにできる。 meta-rustネタとしてはこちらに先を越されたが、試したブランチがsumo、rockoと古めなのと観点がRust開発者よりなので、本記事ではすこしyocto的に見…

yoctoでjetson nanoを動かす

はじめに meta-tegraがjetson nanoに対応したので、yoctoで動かしてみる。 いくつか注意点 readmeに重要な注意点がいくつか書いてある。 jetpackは必要 cuda10を使用する関係でgccは7系固定 Jetson-TX1についても書いてあるけど関係ないので無視。 そして最…

Yocto gdbserverでリモートデバッグ

はじめに gdbserverによるリモートデバッグ環境を今まで真面目に作ったことがなかったので調べてみた。 詳細な手順はここで紹介されている。 ターゲットはラズベリーパイ3。 この方法は、ターゲットにインストールされている既存のアプリケーションのデバッ…

meta-raspberrypyの環境でlinux5.0のdevice-tree-overlaysがビルドできない問題の調査(3/15追記)

はじめに ただしこっちのカーネルでもoverlaysがビルドエラーを起こすので、それは調査する必要がある。 ので調査した。 ログを観察する タスクごとのログファイルはtmp/work/raspberrypi3-poky-linux-gnueabi/linux-raspberrypi/1_5.0.0+gitAUTOINC+00794df…

raspberrypi3 yoctoでLinuxカーネル5.0を試す(ラズパイカーネル編)

はじめに RPiのカーネルはこっちで管理されているが、まだ5.0-rc8なのでバニラカーネルを試すことにした。 もう-rc8が取れてたので、こっちも動かしてみる。 基本的な方針は前回と変わらずに下記のようにする。 meta-raspberrypiのカーネルとはバージョンが…

yocto SSH越しでbitbake virtual/kernel -c menuconfigが失敗する場合の対処

はじめに ubuntuを使っていて、SSH越しにbitbake virtual/kernel -c menuconfigや-c devshellをすると、次のエラーが出て失敗する事がある。 ERROR: linux-raspberrypi-1_5.0.0+gitAUTOINC+00794df915-r0 do_menuconfig: Unable to spawn terminal auto: Exe…

Yoctoターゲットのセルフコンパイル環境でカーネルモジュールをビルド

はじめに Yoctoのセルフコンパイル環境でout-of-treeのカーネルモジュールをビルドする。 普通にビルドしようとエラーが発生するのでその回避方法をメモしておく。 hello-mod 今回はrecipe-skeleton/recipes-kernelにあるhello-modをラズベリーパイ3上でビル…

yoctoでkodiをつくる

メディアセンターのディストリビューションをつくってみる。 環境構築 ラズベリーパイ3向けの環境。いつものやつ。 sumo(2.5)をベースにすると後述のCMAのエラーが発生するため、thud(2.6)をベースにする。 ソース取得 $ mkdir -p rpi-kodi/layers $ cd rpi-…

ラズベリーパイ3 Yoctoでdebパッケージを使用する

Yoctoでは、デフォルトでrpmを使用してレシピごとのパッケージを作成し、 OSイメージを作成する段階で、それらをインストールすることでソフトをインストールしている。 core-image-minimalやcore-image-base、rpi-basic-imageの最小構成のイメージでは、 パ…

ラズベリーパイ3でthudを試す

yoctoの最新版がやっとリリースされた。バージョンは2.6で、コードネームは「Thud」. 早速、ラズベリーパイ3で動かして見る。 環境構築 いつものやつ。 INITはsystemdで。 ソース取得 $ mkdir -p rpi-thud/layers $ cd rpi-thud/layers $ git clone git://gi…

yoctoでセルフコンパイル環境を作成する

yoctoではクロスコンパイル用のSDKを簡単に作成することができる。 実はセルフコンパイル環境もさほど難しくなく作成できるが、こちらはあまり知られていない気がする。 クロスコンパイルできる環境があれば、PCのほうがリソースはリッチなのでコンパイル時…

raspberrypi3 model b+ USBブート

ラズベリーパイ3 Model B+は、初期状態でUSBブートが可能になっている。 もともとのラズベリーパイ3(Model B)では、 OTPという一度だけ書き込みができる特殊なメモリの設定を変更することでUSBブートができるらしいのだが、 間違った設定をすると文鎮化する…

avahi-autoipdでDHCPサーバが無い場所でもIP通信

USB-Ethernet変換を使って、ラズパイなどのボードと1対1で接続するようなケースでは、 DHCPサーバをいちいち用意するのが面倒。 そういう場合でも、SSHでログインなどしたかったりするのでTCP/IPで通信したい。 そこでavahi-autoipdを使うとIPアドレスを解決…

Flask-Bootstrap + Ajax(jQuery) + RPi.GPIOでLEDを制御してみる

ここ何回かにわたって、pythonでFlask-BootstrapやAjaxのお話をしてきた。 Flaskでpythonのウェブアプリケーションを作る Flask-Bootstrapを使ってみる Flask-BootstrapでjQuery Flask-BootstrapでAJAX(jQuery) なぜ急にFlaskでAjaxだったのか。実は今回のこ…

Yocto raspberrypi3でbootchartを試す(systemd編)

Yoctoのbootchartのおはなし systemdを使用する場合は「systemd-bootchart」が使用できる。 本当は、systemdの時もbootchart2を使用して同じ条件で計測してみたいところだけど。 raspbianはsystemdなので、そちらとの比較の場合は有効な手段かもしれない。 l…

yocto raspberrypi3でbootchartを試す(sysvinit編)

bitbakeで作成したlinuxの起動時の状況を知るためにbootchartを使用したい。 pokyには「bootchart2」が収録されているので、これを使用する。 meta-raspberrypiの組み込みおよび、bitbake rpi-basic-imageまで作成できている事を前提とする。 local.confの修…

yocto raspberrypi3でNFSブート

raspberrypi3のルートファイルシステムをNFSでマウントする。 ベース環境の取得 $ git clone git://git.yoctoproject.org/poky.git -b pyro $ cd poky $ git clone git://git.yoctoproject.org/meta-raspberrypi -b pyro 使用するのはpyroブランチ。 oe-init…

yoctoで作ったLinuxでQt5 アプリケーションのフォントが表示されない

yoctoでmeta-qt5を組み込んで、Qt5アプリケーションを起動させた時に、次のようなエラーメッセージが表示され、文字が正しく表示されない問題が発生した。 QFontDatabase: Cannot find font directory /usr/lib/fonts. Note that Qt no longer ships fonts. …

yocto core-image-minimalなどで自動ログイン

core-image-minimalなどのコンソール環境で自動ログインする。 昔はIMAGE_FEATURESにautologinとか入れれば、実現できたらしいが 機能の実現に使用していたパッケージがメンテナンスされてなかったらしく、 この機能が削除されてしまったらしい。 基本的には…

ROCK64をyoctoで立ち上げ

秋月でROCK64ボードを購入した。 今回はコスト優先でメモリ1GBのモデルにした。 このボードはラズパイの40ピンと互換のGPIOヘッダが搭載されているが、電源コネクタがマイクロUSBではなくDCプラグとなっている。 ただ、このDCプラグが曲者で、秋月で売ってい…

yocto raspberrypi3でA2DP レシーバ

スマートフォンなどの音源を、Bluetooth経由でラズベリーパイ3からならす。 OSはいつもどおりyoctoprojectを使用して作成。 BluetoothではA2DPを使用し、sinkとなるようにする。 実際に音を鳴らすのはpulseaudioで、ラズベリーパイ3が他の端末からオーディ…

yoctoで日本語入力

今まで、yoctoで作成したLinuxでは日本語を表示できる環境はよく見かけたが、 meta-oeにはuimとanthyのパッケージが存在するのに、日本語を入力できる環境を見たことがなかった。 今回、仕事がらみで日本語入力環境について調べたところ、uimのレシピに不具…

ラズベリーパイ3 pyroでweston

meta-weston-rpiにRPi3対応しないの?というコメントがついたので、一応調べてみた。 すでに、waylandはrpi-backend.soのサポートをやめてしまっているので、実はmeta-weston-rpiは使えない。 もっと言うと、vc4graphicsが使用できることから、これがなくて…

raspberrypi3 yoctoでavahi

avahiを使うと、DHCPなどでIPアドレスが一定しない環境でも、hostname.localのように固定的な名前でネットワーク越しにアクセスできるようになる。 avahi自体はzeroconfのLinux向けの実装のことらしい。これが、yocto環境でも使えるということなので、試して…

meta-raspberrypi mortyでcore-image-satoが起動できない時の対処 その2

先日の記事の続き。 vc4graphicsを有効化した状態でこれをcocopar 5 インチIPSハイビジョンLCD ディスプレイで動かそうとすると、画面が真っ黒になった。 調査したところ、cocoparのLCDのようにEDIDを取得できないデバイスの場合KMSの初期化で弾かれてしまい…

yocto /lib/firmware以下へのファイルの追加

通常のレシピによるインストールではrootfsに反映されない 以前は、各レシピでdo_install と FILES_%{PN}で/lib/firmwareにファイルを追加すれば、 問題なくrootfsに反映されていたが、oe-coreにlinux-firmware_git.bbが導入されてから、状況は一変した。 li…

meta-raspberrypi mortyでcore-image-satoが起動できない時の対処

素の状態でbitbake core-image-satoで作成したイメージを起動すると、 真っ黒い画面にマウスカーソルのみが表示されるという状態になる。 シリアルコンソールでログインし、/var/log/Xsession.logを表示したところ下記のようになっていた。 $cat Xsession.lo…