はじめに bitbake-layersコマンドの便利なサブコマンドを見つけた(認識した)。 レイヤ間の依存関係 bitbakeで取り扱うレイヤではlayer.confに下記のようにLAYERDEPENDSを記述することで、依存関係を定義することができる。 LAYERDEPENDS_gnome-layer = "core…
はじめに デフォルトの設定でmeta-gnomeをビルドするとエラーが発生する。 エラーの内容 gnome-control-centerとsystmedがそれぞれで/usr/share/polkit-1/rules.dをインストールしようとしてコンフリクトしている。 Error: Transaction test error: file /us…
はじめに 前回作ったプログラムをFlashから実行できるようにしてみる。 Flash対応 Makefile diff -Narubp blink_ram_int_systick/Makefile blink_flash_int_systick/Makefile --- blink_ram_int_systick/Makefile 2021-02-27 13:21:52.160613474 +0900 +++ b…
はじめに SysTick割り込みを使用してLチカをする。 2021-02-26 Raspberry Pi Pico Systickを使ってLチカを正確にするのコードをベースに作業する。 SysTick割り込み SysTick割り込みはm0+のコアで用意されている割り込みで、この割り込みが発生するとベクタ…
はじめに 「PicoでベアメタルのLチカ(RAMバージョン) その2」として。 これまで作ってきたLチカは、適当な値をforでビジーループするだけだったので、タイミングはいい加減だった。 Cortex-M0+ではコアにSysTickを持っていて、これは難しい設定することもな…
はじめに 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}/.…
はじめに ツイッターでRaspberryPi4が無いケースでOpenOCDでデバッグするにはどういう手段があるか。という話題が出た。 ARM-USB-TINY-H + ARM-JTAG-SWD ARMのMCUのデバッグで安価で使い勝手が良いものとしてはARM-USB-TINY-Hが挙げられる。 しかしこのデバ…
はじめに ここまで作ってきたベアメタルのLチカはGCCでビルドしてきたが、それをclangでビルドしてみる。 clang-10のインストール Ubuntu 20.04環境でClangをインストールする。バージョンは10。 $ sudo apt install -y clang-10 lld-10 make Makefile ベー…
はじめに Raspberry Pi Pico SDKでのFlashからのブートについて調べたでは、Flashからブートするための仕組みを調査した。 Boot Stage2に相当する部分を自作するのは結構面倒だということがわかったので、コンパイル済み(CRC計算済み)のBoot Stage2である、 …
はじめに リンカスクリプト初心者がPico SDKのリンカスクリプトを眺める。今回眺めるのはmemmap_default.ld。 大きく分けて下記のようなブロックに別れている MEMORY ENTRY SECTIONS elfにもリンカスクリプトの詳しくないので間違っている情報があるはず。 M…
はじめに picoprobeでRAMに直接プログラムがロードできるようになったので、難しいboot2のことはおいておいて、 ベアメタルでLチカを試みる。 ホントは、コンパイル済みのboot2を組み込んでLチカしようと頑張ったが、現時点では挫折した。 心の師匠の成果物…
はじめに Raspberry Pi Pico(Pico)はRaspberry Pi4を使用して、SWDでデバッグすることが推奨されているようだが、 Picoが2台ある場合、そのうち1台にpicoprobeというプログラムを書き込むことで、デバッガとして使用することができる。 下記のようにPico SDK…
はじめに lxdではバージョン4.0から仮想マシン(VM)も扱えるようになった。 コンテナと異なり、CPUやメモリはホストから一部割り当てて使用するためにパフォーマンス的には不利になるが、 カーネル層の機能を使用したい場合など、コンテナでは足りないケース…
はじめに コンテナ技術としてはDockerが有名だが、こちらはアプリケーションコンテナとなっている。 LXDはシステムコンテナという位置づけになっているが、これらがどう違っているのかわからなかった。 DockerとLXDの大きな違いはセッションのライフサイクル…
はじめに USBハブにはper-port power switching(PPPS)という機能に対応しているものがある。 これはポート毎に給電を制御するものであって、これが使えるとそのハブに接続されたUSB機器の電源をPCから制御することができる。 USBハブのポートが供給する電力…
はじめに 私のベアメタルの心の師匠であるdwelch67さんが、さっそく何か作っていたのでパクる勉強するべく中身を眺めていた。 リンカスクリプトの下記の部分のLENGTH = 0xFCが引っかかったので調べてみた。 MEMORY { flash : ORIGIN = 0x10000000, LENGTH = …
はじめに ラズベリーパイPico(RPi Pico)が入手できた。 開発環境としてラズパイ4が必要とされているが実際のところそうでもなさそうなのでUbuntu 20.04に開発環境(SDK)を構築しLチカを動かしてみる。 pico_setup.shについて C/C++の開発環境を構築するために…
はじめに CMakeにはCTestというテストランナーがある。 CTestはテスト用の実行ファイル(テストバイナリ)が1つのテストとして認識される。 GoogleTest(GTest)のようなテストフレームワークの場合、1つのテストバイナリに複数のテストケースが含まれることが常…
はじめに C++でコードを書く時にユニットテストも書きたい。 CMakeにはテストを実行するための仕組みがある。 CTest CTestはいわゆるテストランナーで、CMakeがサポートするテストランナーの中では一番シンプルなもの。 指定されたものを実行するだけのシン…
はじめに SPI接続のILI9341のLCDが欲しくてこれを買ったがSPIではなく届いてみると8ビットパラレルのモジュールだったので絶望した。 きっとポチッとしたときは眠たかったんだと思う。 しかし買ってしまったものは仕方ないので動かしてみることにした。 Plat…
はじめに bitbakeではビルドするパッケージの脆弱性をCVEによってチェックを行う機能がある。 使い方 local.confに下記を追加する。 INHERIT += "cve-check" すると、各パッケージのタスクにdo_cve_checkが追加される。 bitbakeを実行すると、このタスクが実…
はじめに Dockerに入門してみる。 作業環境はUbuntu 20.04 環境設定 aptでも提供されているが、Install Docker Engine on Ubuntuの手順でインストールしたほうがトラブルは少なそう。 apt版のアンインストール $ sudo apt purge docker docker-engine docker…
はじめに Giant BoardをDebian GNU/Linux 9 (stretch)で動かす動かしたGiant BoardをYoctoProjectに対応する。 ここでは新規ボード向けにYoctoProjectのレイヤを作る最小限の手順を紹介する。 新規ボードのレイヤを作る YoctoProjectが未対応のボードに対応…
はじめに カーネルデバッガが便利だという噂は聞いたことがあったが、実際使ったことがなかった。 kdbをすこしだけ試してみたのでメモ。 kdb vs kgdb Linuxのカーネルデバッガを調べるとかならずkdbとkgdbが引っかかる。 これらは別物で、どちらが良い悪いは…
はじめに pandocでマークダウンをPDF化する(LaTexなし)でwkhtmltopdfの存在を知った。 この記事ではWindows環境での話だったので、Ubuntu20.04で同様のことができないか確認した。 wkhtmltopdfのインストール Stableなリリースはここで確認できる。 執筆時点…
はじめに bitbake meta-toolchainや-c populate_sdkで作成したSDKを使用してOut-of-treeのカーネルモジュール(ドライバ)をビルドする時に少しハマったのでメモしておく。 SDKにカーネルソースを含める 作成されたSDKに確実にカーネルのソースコードを含める…
はじめに meta-clangの使い方を調べた。 meta-clangはbitbakeでのパッケージのビルドやSDKでgccの代わりにclangを使えるようにするためのレイヤ。 meta-clangを使う 既存のビルド環境にmeta-clangを組み込むには下記のようにする。 $ git clone https://gith…
はじめに 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でバイナリパッケージを作ってみる。 ちなみに今回は作ることが目的のため、作ったものの動作確認はしていない。 reciptool オプションの確認 $ recipetool create --help NOTE: Starting bitbake server... usage: recipetool create [-…
はじめに u-bootのスタンドアロンアプリのサンプルを動かす。 ターゲットはBeagleBone Black(BBB) ただ、BBBを使うといろいろと罠がある。 動いてるu-bootが違う SDカードにMLOを含めてu-bootやカーネルを入れたはずなのに、UARTコンソールで表示されるu-boo…