みつきんのメモ

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

c++

ものすごく久しぶりにAutotoolsを使ってみた

c++

はじめに 表題のとおり。 プロジェクト作成 Autotoolsを使用したプロジェクトを作成する。 ディレクトリ構造 ディレクトリ構造は以下のようになる。 hello ├── Makefile.am ├── configure.ac └── src ├── Makefile.am ├── hello.cpp ├── hello.h └── main.cp…

STM32F4Discovery NuttXでC++(libc++)をためす

はじめに make menuconfigで見てみると、NuttXでもlibc++やuClibc++などが使えるようになっているらしい。 ただ、ライブラリのソースはカーネルやアプリからは分離されているようで、別途取得する必要がある。 具体的なやり方はAlan C. Assisさんが紹介して…

可変幅のバイトスワップ

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…

boost program optionsを使ってみた。

まずはチュートリアルを読む。 基本的な使い方 基本的な使い方は以下のようになる。 オプションを定義。"help,h"は「--helpと-h」の意味。 argc, argvをパースして定義したオプションと関連付けし、variable_mapを生成。 variable_mapに、定義したオプション…

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

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