みつきんのメモ

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

tips

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

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

lxd入門 VM編

はじめに lxdではバージョン4.0から仮想マシン(VM)も扱えるようになった。 コンテナと異なり、CPUやメモリはホストから一部割り当てて使用するためにパフォーマンス的には不利になるが、 カーネル層の機能を使用したい場合など、コンテナでは足りないケース…

lxd入門

はじめに コンテナ技術としてはDockerが有名だが、こちらはアプリケーションコンテナとなっている。 LXDはシステムコンテナという位置づけになっているが、これらがどう違っているのかわからなかった。 DockerとLXDの大きな違いはセッションのライフサイクル…

USB per-port power switching対応ハブガチャを引いてみた

はじめに USBハブにはper-port power switching(PPPS)という機能に対応しているものがある。 これはポート毎に給電を制御するものであって、これが使えるとそのハブに接続されたUSB機器の電源をPCから制御することができる。 USBハブのポートが供給する電力…

Raspberry Pi Pico SDKでのFlashからのブートについて調べた

はじめに 私のベアメタルの心の師匠であるdwelch67さんが、さっそく何か作っていたのでパクる勉強するべく中身を眺めていた。 リンカスクリプトの下記の部分のLENGTH = 0xFCが引っかかったので調べてみた。 MEMORY { flash : ORIGIN = 0x10000000, LENGTH = …

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…

Ubuntu16.04でローカルのdebファイルを依存関係を解決しながらインストール(gdebi)

debファイルをインストール 例えばUbuntuにgoogle chromeなどをインストールする場合、debファイルをダウンロードしてきてインストールする必要がある。通常だと次のような感じでdpkgコマンドを使用する。 $ sudo dpkg -i ./google-chrome-stable_current_am…

Ubuntu 15.04でtextlint

Twitterでtextlintが良さげと流れてきたので、Ubuntu15.04に導入してみる。 npmでインストールするのだが、apt-getでインストールされるバージョンでは古く、多少手順が必要だったためメモっておく。 npmのインストール Ubuntuに最新のNode.jsを難なくインス…

westonでtouch calibration

RPi3にcocopar 5inch HDMIのLCDを接続してwestonを動かしてみたところ、 うまくタッチできないところがあったのでキャリブレーションを行った。 下記の要領で作業を行う。 タッチデバイスは「ADS7846 Touchscreen」と認識されている。 キャリブレーションはw…

raspbian以外のOSでcocopar 5inch HDMI LCDディスプレイを使用する

cocopar 5 インチIPSハイビジョンLCD ディスプレイを購入した。 HDMI接続のLCDディスプレイとSPI接続のタッチパネルの機能を持つ。 これも基本的にはRaspbianで使用する前提のもののようだが、pokyで動作させたのでメモ。 カーネルは4.1を使用した。 このデ…

pokyでWindowsの共有フォルダをマウントできない

pokyでWindowsの共有フォルダをマウントできないケースがあった。 同じフォルダをUbuntuマシンからmountすると成功するためWindows側の設定は問題なさそう。 例えば下記のような感じだ。 mount -t cifs -o username=mickey //192.168.21.XX/Music /mnt/music…

raspberrypi3のオンボードのbluetoothをRaspbian以外のOSで使用する方法

poky(yocto)などのRaspbian以外のOSでRPi3のオンボードのbluetoothを使用したいと思うケースは多いと思う。 しかし、現時点(20160329)でこれらのOSではおそらくbluetoothはそのままでは機能しない。 (少なくともmeta-raspberrypiの)カーネルからデバイスが見…

yocto master(20160323時点)でsystemd-networkdでエラー

先日、jethroでsystemd-networkdを有効化する方法を紹介したが、このままmasterに適用しても、systemd-networkdの起動に失敗する。 $ systemctl status systemd-networkd * systemd-networkd.service - Network Service Loaded: loaded (/lib/systemd/system…

UbuntuでpandocからPDFを出力する。

ubuntu14.04でpandocからPDFを出力する。 pandocの導入 markdownとpandocに関しては過去の記事に記載している。 Ubuntu 14.04にpandocを導入するには以下のコマンドを実行する。 $ sudo apt-get install pandoc Ubuntuのバージョンは14.10でも問題ない。 PDF…

PlantUMLをemacsから使用する(puml-mode)

以前からPlantUMLには興味が合ったが、emacsから便利に利用できそうなモードを見つけたので試してみる。 依存パッケージのインストール $ sudo apt-get install graphviz default-jre plantuml.jarのダウンロード puml-modeのデフォルトでは~/plantuml.jarに…

emacs-mozcを使用する

emacsでの日本語入力のデフォルトであるQuailは非常に使いづらいので、 Linux環境のインプットメソッドで入力するようにしていた。 今までは-nwで起動していたため気にならなかったが、それだとGUI環境でemacsを起動した際に、 入力中の文字が図のようになっ…

pandocで「openBinaryFile: does not exist (No such file or directory)」

Ubuntuのバージョンを15.04から15.10にあげたらpandocが下記のエラーをはくようになった。 pandoc: Could not fetch github.css github.css: openBinaryFile: does not exist (No such file or directory) いままでcssファイルを「~/.pandoc」において、これ…

minicomでCtrl+A

Linuxホストでマイコンボードと接続するときに、 シリアルコンソールが必要になる場合がある。 GtkTermやcuなどが思い浮かぶが、私はminicomを使うことが多い。 ただ、このminicom キーバインディングに少しだけ癖があり、Ctrl+Aがminicomのメニュー表示のた…

githubからパッチをダウンロード

githubからpatchをダウンロードする際に悩んだのでメモ。 githubの差分表示 githubでこんな感じで差分を見るページがある。 https://github.com/mickey-happygolucky/meta-qt5-rpi-eglfs/commit/66d5968cc2490adc562510184018f5cfb466d8f8 そして、これをpat…

raspaberrypi2でcore-image-sato

yoctoでGUIを動かすための基本的なイメージであるcore-image-satoだが、 RPiではすんなりビルドが通らなかったことや、X-Windowsが古い、重いなどのイメージがあり、 RPiのような非力な環境で動かすために、労力を使うメリットを感じなかったため、 特に深追…

fstab uid,gid指定でエラー

OS起動時にHDDをマウントする時に、マウントポイントに指定のUID、GIDの所有権を設定したいというケースではまったのでメモ。 googleで調べた mount時にuidやgidを指定したい場合は/etc/fstabに以下のように書く。 /dev/sdb1 /media/data ext4 uid=1000,gid=…

yocto QA Issueのあれこれ

パッケージのbbやbbappendを書いている時にQA Issueでエラーになることがある。 とりあえず解消出来たようなので、今回遭遇したエラーと対処をメモ。 QA Issue: userland rdepends on [package] WARNING: QA Issue: userland rdepends on wayland, but it is…

PNBLACKLISTされたパッケージのビルド

gnome-menus3がDEPENDされているlayerをビルドしようとした時に、以下のエラーが出てハマった。 ERROR: gnome-menus3 was skipped: Recipe is blacklisted: CONFLICT: 24 files are conflicting with 原因 meta-oe/meta-gnome/recipes-gnome/gnome-menus/gno…

mediatombで「upnp error -203」

mediatombの謎のエラーでハマったのでメモ。 mediatomb起動時に以下のようなログが出て起動に失敗していた。 2015-02-11 16:59:01 INFO: Loading configuration from: /etc/mediatomb/config.xml 2015-02-11 16:59:02 INFO: Checking configuration... 2015-…

可変幅のバイトスワップ

unionに入れてひっくり返したり、マクロでセコセコとシフトしたりするのは よく見かけるけどどれも使いづらいし、バイト長毎に作ったりする必要があったりする。 unionの例 union { struct { uint8_t b4,b3,b2,b1; } b; uint32_t l; }; 使いづらい。 マクロ…

任意のビットを任意のビット幅で取得する。

ビットマスクとシフトを組み合わせて実現してみたのでメモ。 組み込みで何かする場合や、PCでもハードウェアからのデータなどビットでパッキングされたデータを扱う場合に欲しくなる。 マクロの例 普段はマクロで実現したりする。 #define GET_4BITS(v, s) (…

バイナリ列をstd::ifstreamで読み込む。

バイナリのみのデータをstd::ifstreamで読み込む時にはまったのでメモ。 # 意外とというか忘れている。。。 バイナリデータの読み込み(失敗) 例えば32bitのデータが連続している下記のようなデータがある。 test.dat 12345678 00112233 44556677 8899aabb cc…

autotoolsでmake check

テストを実行させるときにmake checkで行うという慣習があるらしく 今さらだがautotoolsでそれを組み込む方法を試してみたのでメモ。 ディレクトリ構成 . ├── Makefile.am ├── configure.ac ├── src │ └ foo.h └── test ├── Makefile.am └── foo_test.cpp sr…

関数の入り口出口でデバッグログ

関数の入り口と出口でログ出力したいが、 1関数につき必ず2行以上ログのコードを入れる必要がある。 また、途中で抜けた場合など、ケアが難しいケースがある。 boost::scope_exit boost::scope_exitを利用する。 #include <boost/scope_exit.hpp> #define FUNC_IN_OUT_LOG \ std:</boost/scope_exit.hpp>…

markdown記法

現在はemacsのoutline-modeを利用して plain textでメモをまとめているが、blogなどに上げるときに 体裁を整えるのが手間となっている。 markdown記法を使えば、plain textからhtmlなどのマークアップに 簡単に変換できる。 emacsにもmarkdown-mode.elが存在…