みつきんのメモ

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

2020-01-01から1年間の記事一覧

Giant BoardをYoctoに対応する

はじめに Giant BoardをDebian GNU/Linux 9 (stretch)で動かす動かしたGiant BoardをYoctoProjectに対応する。 ここでは新規ボード向けにYoctoProjectのレイヤを作る最小限の手順を紹介する。 新規ボードのレイヤを作る YoctoProjectが未対応のボードに対応…

kdb入門

はじめに カーネルデバッガが便利だという噂は聞いたことがあったが、実際使ったことがなかった。 kdbをすこしだけ試してみたのでメモ。 kdb vs kgdb Linuxのカーネルデバッガを調べるとかならずkdbとkgdbが引っかかる。 これらは別物で、どちらが良い悪いは…

pandocのpdf出力にwkhtmltopdfを使ってみる

はじめに pandocでマークダウンをPDF化する(LaTexなし)でwkhtmltopdfの存在を知った。 この記事ではWindows環境での話だったので、Ubuntu20.04で同様のことができないか確認した。 wkhtmltopdfのインストール Stableなリリースはここで確認できる。 執筆時点…

YoctoのSDKでOut-of-treeのカーネルモジュールをビルドする

はじめに bitbake meta-toolchainや-c populate_sdkで作成したSDKを使用してOut-of-treeのカーネルモジュール(ドライバ)をビルドする時に少しハマったのでメモしておく。 SDKにカーネルソースを含める 作成されたSDKに確実にカーネルのソースコードを含める…

meta-clangの使い方

はじめに meta-clangの使い方を調べた。 meta-clangはbitbakeでのパッケージのビルドやSDKでgccの代わりにclangを使えるようにするためのレイヤ。 meta-clangを使う 既存のビルド環境にmeta-clangを組み込むには下記のようにする。 $ git clone https://gith…

meta-qt6を試す

はじめに Qt 6 in OpenEmbedded and Yoctoが気になったので試してみる。 ここを見る限りまだdevっぽい。 meta-qt6を覗いてみる layer.conf ...(snip)... LAYERDEPENDS_qt6-layer = "core" LAYERSERIES_COMPAT_qt6-layer = "zeus dunfell gatesgarth" ...(sni…

recipetoolでバイナリパッケージを作る

はじめに recipetoolでバイナリパッケージを作ってみる。 ちなみに今回は作ることが目的のため、作ったものの動作確認はしていない。 reciptool オプションの確認 $ recipetool create --help NOTE: Starting bitbake server... usage: recipetool create [-…

BBBでu-bootのスタンドアロンアプリを試す

はじめに u-bootのスタンドアロンアプリのサンプルを動かす。 ターゲットはBeagleBone Black(BBB) ただ、BBBを使うといろいろと罠がある。 動いてるu-bootが違う SDカードにMLOを含めてu-bootやカーネルを入れたはずなのに、UARTコンソールで表示されるu-boo…

YoctoProjectのライフサイクル

はじめに YoctoProjectのリリースバージョンを確認するにはReleasesのページを参照する。 その際にSupport LevelがEOLになっているものは既にサポートが切れていると言えそう。 1つ気になったのはDunfell(3.1)のSupport Levelを見るとLong Term Supportとな…

YoctoProject 自分のレイヤから既存のbbclassの挙動を上書きする

はじめに 例えば既存のbbclassにデバッグ用のログを追加したり独自の改造を実験したい場合でも、 既存のレイヤのソースコードに手を加えるのは避けたい。 そのような場合、ちょっとした工夫で自分のレイヤから既存のbbclassの挙動を上書きすることができる。…

DarlingをUbuntu 18.04で試す

はじめに ちょっと前にツイッターでLinux上で動くmacOSのエミュレータDarlingというやつの情報が流れてきた。 wineのmacOS版みたいな感じのようだ。興味が湧いたので自分でも試してみる。 環境はUbuntu 18.04。 依存パッケージのインストール sudo apt insta…

CMakeLists 覚書 (2020年版)

はじめに 以前にもCMakeLists.txtの書き方をまとめたが内容が古くなったので改めて調べ直した。当時の理解が甘かったところやCMakeが3になってできることなども対応した。 Ubuntu 20.04では3.16に対応しているため、そのバージョンで使用できる機能を紹介す…

Kasのコンフィグファイルを提供してみる

はじめに なにか適当なレイヤをでっち上げて、kasのコンフィグファイルを作ってみる。 サンプルのレイヤとしてラズパイ向けにハローワールドプログラムを追加したレイヤを作成する。 環境の作成 ソース取得 ラズパイ環境のビルドのためのレイヤをダウンロー…

Yocto meta-raspberrypi環境の作成にkasを使ってみる

はじめに meta-raspberrypiのQuick Startを眺めていると、Quick Start with kasという項目ががあった。 kasというコマンドに見覚えがなかったので調べてみると、下記のようにあった。 This tool provides an easy mechanism to setup bitbake based projects…

Yocto meta-raspberrypi環境の書き込みにbmaptoolを使ってみる

meta-raspberrypiでbitbakeして作成されるイメージがいつの間にかrpi-sdimgからwic.bz2になっている。 イメージを書き込む手順もddやEtcherからbmaptoolになっている。 dunfellのブランチを使用して、最近の手順で試しにラズパイ4を動かしてみる。 構築手順 …

YoctoのSDKでスタティックライブラリしか提供していないパッケージを使う

はじめに meta-oeなどには様々なライブラリのパッケージが提供されている。 その中には依存関係のあるパッケージのビルド時にだけ使用する、*.aしか提供しないパッケージも存在する。 SDKを使用してアプリケーションを開発する際にそのようなパッケージの提…

Yocto環境でLogitech Unifyingデバイスが動かない場合

はじめに Jetson NanoにYocto環境を作ってLogtech Unifyingのキーボード・マウスを接続したが、 全く反応しなかった。 原因 イメージに必要なドライバがインストールされていないことが原因だった。 下記のコマンドでカーネルコンフィグを確認したところ必要…

Giant BoardをDebian GNU/Linux 9 (stretch)で動かす

Giant Boardが届いた。 このボードにはCortext-A5コアのATSAMA5D27-D1G-CUが搭載されている。 MICROCHIPによると、こういうものらしい。 The SAMA5 series are high-performance, ultra-low power ARM Cortex-A5 core based MPU devices. They support multi…

Bashスクリプトで複数のテーブルを組み合わせて使用する

はじめに タイトルいったい何のことか伝わらないと思うので。 いわゆる2次元配列っぽいことをしたいというか、要素数の異なる複数のテーブルを多重ループで回す感じ。 2次元配列が近いと思って調べたけど、自分のやりたいこととうまく合致しないかな。と。 b…

PlatformIO Digisparkを動かす

はじめに ShigezoneでDigisparkを購入したのPlatformIOで動かしてみる。 書き込みの時にコツがいるのでメモっておく。 プロジェクトの作成 作業用ディレクトリを次のように作成する。 $ mkdir -p ~/pio/digispark $ cd ~/pio/digispark このボードのCPUはATT…

ASF傘下に入ったNuttXをビルド

はじめに NuttXはASFのIncubatorプロジェクトへ採択され、リポジトリがBitBucketからGitHubに変更された。 今後はプルリクエストなどもGitHubで受け付ける。 ソースコードを取得 GitHubからソースコードを取得するには次のようにする。 $ git clone https://…

PlatformIO mbedのビルド時間を短縮するスクリプトを作った

はじめに 2020/3/6 追記 PlatformIOでframeworkをmbedにすると必要のない機能のソースコードもコンパイルするため、 ビルド時間がかなり長くなってしまう。 | Mbed for STM32 compiles toooooo long | mbed + PlatformIO = too long compilation これは度々…

PlatformIO AE-ATmegaを動かす

はじめに 秋月のATmega168/328マイコンボードキットをPlatformIOでLチカしてみる。 かなり昔に購入したので、使用するMCUはATmega168P。 プログラムの書き込みにはAVRISP mkIIを使用する。最近では純正品は入手が難しいっぽい。 PlatformIOの設…

STM32F4Discovery向けのNuttXをClangでビルドする

はじめに NuttXは次のボードについてClangでのビルドに対応している。 nucleo-f446re nucleo-f4x1re stm32f746g-disco 筆者的によく使用するSTM32F4DiscoveryもClangでビルドできないか試してみる。 今回はclang-9を使用している。 clangの設定方法はここを…

PlatformIO nRF52840-DKをmbedで動かす

はじめに nRF52840-DK(pca10056)をPlatoformIOで動かそうとしたところ、 デフォルトのframework(arduino)ではGPIOのピン割り当てが思ったようにならなかった。 そこで、frameworkをmbedに設定して試してみた。 プロジェクト作成 まずはプロジェクトを作成す…

Ubuntu 18.04にaptでLLVM-9をインストール

はじめに LLVM 9環境をUbuntu 18.04で構築する。 google先生に聞いても手動で設定する方法ばかり見つかったので、aptでインストールする方法を調べた。 2020/1/8 修正 リポジトリの設定 $ sudo apt-add-repository "deb http://apt.llvm.org/bionic/ llvm-to…