自分用メモ。

・ビットマップファイルのフォーマット(必要なところだけ)
0x0a 4bytes int データオフセット(offset)
0x0e 4bytes int ヘッダーサイズ(bcsize)
0x12 2bytes short 横画素数(bcwidth)
0x16 2bytes short 縦画素数(bcheight)…正ならデータは下から上の順、負なら上から下の順
(正ならy=bcheight - y - 1などとして軸を逆転させないと裏返しの画像になる)
0x1c 2bytes short 色ビット数(bcbitcount)
0x1e 4bytes int 圧縮モード(bicompression)…0なら非圧縮
1ライン分のデータはbcwidth × (bcbitcount / 8)  ※24bitカラーの場合
ただし必ず4の倍数。足りなかったら0で埋める
24bitカラーの場合、データはBlue(1byte)・Green(1byte)・Red(1byte)の順

フレームバッファのメモリマップ
fd=open("/dev/fb1",O_RDWR)でオープン
ioctl("fd,FBIOGET_FSCREENINFO,&finfo)
ioctl("fd,FBIOGET_VSCREENINFO,&vinfo)
で情報取得
vinfo.xres = 横画素数
vinfo.yres = 縦画素数
vinfo.bits_per_pixel = 色ビット数
16bitカラーの場合、Red5ビットGreen6ビットBlue5ビット
1ピクセルのデータはRRRRRGGGGGGBBBBBの16ビット=2bytesになるが
トルエンディアンなのでG(下位3ビット)B(5ビット) , R(5ビット)G(上位3ビット)と逆転するので注意