わいえむねっと

Contents
Categories
Calendar
2026/11
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Monthly Archives
~2000/01
Recent Entries
RSS1.0
Templates
Information
Processed: 0.059 sec
Chashed: -
2014/10/01 Wed
仕出し弁当屋がきている階の廊下にいつもより15分遅れていってみたら、既に片付けられていました。
早すぎる。 明日は人間ドックだというのに、また風邪をもらう。
免疫力なさすぎる。
あと、風邪のときの関節痛とは別の感じで左膝が痛い。



検便が取れてないのでイチジク浣腸を買って帰る。
誰も彼もが一週間に二回もお通じがあると思ったら大間違いなんですよまったく。

ついでにハイチオールCを購入。
いつものように類似品をオススメされて「ハイチオールCでいいです」と返す。
2014/09/30 Tue
一ヶ月ヘルプの予定でしたが例によって延長となったので来月も川崎です。

ただ、発注の関係で10月は2週目から。の予定でした。
なので、まだ取得していなかった夏期休暇を利用して5連休にするつもりだったんだけど、現場責任者殿が外出の通りすがりに「明日来てもらっても大丈夫です!」と言い残していったので結局出社することに。

休むには中途半端な状態だったので、出社して問題ないならそっちのがいい。
2014/09/29 Mon
OpenGL ESメモ@Yocto


前提

  • Ubuntu 12.04
  • Yocto Project 1.6.1 - Daisy
  • qemuarm
  • core-image-x11
  • gcc
  • g++
  • libegl-mesa
  • libegl-mesa-dev
  • libgles2-mesa
  • libgles2-mesa-dev


テストコード


#include <stdlib.h>
#include <EGL/egl.h>

int main()
{
    Display* xdisp = XOpenDisplay(NULL);
    if(xdisp == NULL)
    {
        abort();
    }

    Window rootWin = DefaultRootWindow(xdisp);

    int screen = DefaultScreen(xdisp);
    unsigned long white = WhitePixel(xdisp, screen);
    unsigned long black = BlackPixel(xdisp, screen);

    Window window = XCreateSimpleWindow(
        xdisp, rootWin, 
        100, 100,
        640, 480,
        2,
        black, white);

#ifdef DEFAULT
    EGLDisplay eglDisplay = eglGetDisplay(EGL_DEFAULT_DISPLAY);
#else
    EGLDisplay eglDisplay = eglGetDisplay((EGLNativeDisplayType)xdisp);
#endif
    if(eglDisplay == EGL_NO_DISPLAY)
    {
        abort();
    }
    if(!eglInitialize(eglDisplay, NULL, NULL))
    {
        abort();
    }

    EGLint attr[] = {
        EGL_BUFFER_SIZE, 16,
        EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
        EGL_NONE,
    };
    EGLConfig cfg;
    EGLint numConfigs;
    if(!eglChooseConfig(eglDisplay, attr, &cfg, 1, &numConfigs))
    {
        abort();
    }
    if(numConfigs != 1)
    {
        abort();
    }
    EGLSurface eglSurface = eglCreateWindowSurface(eglDisplay, cfg, window, NULL);
    if(eglSurface == EGL_NO_SURFACE)
    {
        abort();
    }
}


EGL_DEFAULT_DISPLAYで初期化

Native platform type: drm (build-time configuration)


# arm-poky-linux-gnueabi-g++ foo.cpp -lX11 -lEGL -DDEFAULT
# export EGL_LOG_LEVEL=debug
# ./a.out
libEGL debug: Native platform type: drm (build-time configuration)
libEGL debug: EGL search path is /usr/lib/egl
libEGL debug: added egl_dri2 to module array
libEGL debug: added egl_glx to module array
gbm_create_device: invalid fd: -1
libEGL warning: GLX: failed to load GLX
libEGL debug: EGL user error 0x3001 (EGL_NOT_INITIALIZED) in eglInitialize
Aborted

eglInitializeでEGL_NOT_INITIALIZED。


Native platform type: x11 (environment overwrite)


# export EGL_PLATFORM=x11
# ./a.out
libEGL debug: Native platform type: x11 (environment overwrite)
libEGL debug: EGL search path is /usr/lib/egl
libEGL debug: added egl_dri2 to module array
libEGL debug: added egl_glx to module array
libEGL warning: DRI2: failed to authenticate
libEGL debug: DRI2: dlopen(/usr/lib/dri/swrast_dri.so)
libEGL debug: DRI2: found extension `DRI_Core'
libEGL info: DRI2: found extension DRI_Core version 1
libEGL debug: DRI2: found extension `DRI_SWRast'
libEGL info: DRI2: found extension DRI_SWRast version 3
libEGL debug: DRI2: found extension `DRI_TexBuffer'
libEGL info: DRI2: found extension DRI_TexBuffer version 2
libEGL debug: the best driver is DRI2
libEGL debug: EGL user error 0x3003 (EGL_BAD_ALLOC) in xcb_get_geometry
Aborted

eglCreateWindowSurfaceでEGL_BAD_ALLOC。


X11のDisplayで初期化

Native platform type: x11 (autodetected)


# arm-poky-linux-gnueabi-g++ foo.cpp -lX11 -lEGL
# unset EGL_PLATFORM
# ./a.out
libEGL debug: Native platform type: x11 (autodetected)
libEGL debug: EGL search path is /usr/lib/egl
libEGL debug: added egl_dri2 to module array
libEGL debug: added egl_glx to module array
libEGL warning: DRI2: failed to authenticate
libEGL debug: DRI2: dlopen(/usr/lib/dri/swrast_dri.so)
libEGL debug: DRI2: found extension `DRI_Core'
libEGL info: DRI2: found extension DRI_Core version 1
libEGL debug: DRI2: found extension `DRI_SWRast'
libEGL info: DRI2: found extension DRI_SWRast version 3
libEGL debug: DRI2: found extension `DRI_TexBuffer'
libEGL info: DRI2: found extension DRI_TexBuffer version 2
libEGL debug: the best driver is DRI2
libEGL debug: Display 0x1b160 is destroyed with resources

正常終了。


Native platform type: drm (environment overwrite)


# export EGL_PLATFORM=drm
# ./a.out
libEGL debug: Native platform type: drm (environment overwrite)
libEGL debug: EGL search path is /usr/lib/egl
libEGL debug: added egl_dri2 to module array
libEGL debug: added egl_glx to module array
Segmentation fault

eglInitializeでSegmentation fault。


参考サイト

すらりん日記 ≫ Blog Archive ≫ Ubuntuで EGL使えるか?|No:3072|すらりん日記
http://blog.techl​ab-xe.net/archives/3072

Mesa EGL
http://www.mesa3d​.org/egl.html
2014/09/28 Sun
寝付けずに横になったり椅子に座ったりを繰り返しているうちに5時になり気が付いたら落ちていて6時半に目覚ましで飛び起きる。
一路千葉。
某市の卓球大会に参加してくる。



シングルスのみ参加の予定だったけど、K先生がダブルスを組む予定だった教え子が別の教え子と組むことになってK先生自身が余ったからと代替要員として参加することになる。

  • ダブルス
  • 中学生 1-3 ×
  • クラブ所属 2-3 ×
  • 最終セットでデュースにもつれこんだけど、最後の最後にスマッシュをミスって敗北。試合後握手しながら「ミスに救われました!」て笑顔で言われた。ぐぬぬ。
  • シングルス
  • クラブ所属 0-3 ×
  • K先生の教え子 0-3 ×
  • 1、2セット目はデュースで競り負けたけど、3セット目はあっさり取られて敗北。
  • クラブ所属 3-1 ○

かろうじて一勝。
今年はまだ3回しか練習できてなくて圧倒的に練習不足だったけど、それなりに動けた気はする。
サーブとレシーブは駄目すぎた。

いい汗かいた!



そして水分補給@庄や。
K先生が忘れ物というかゴミというかの行方を探しに体育館に戻っている間、弟と二人で飲む。
弟と二人で飲むのとか初めてな気がするなと思いつつ、仕事の話を聞いたりとか。

小一時間してからK先生が合流してさらに飲んだくれ。
さくっと済ませましょうて言ってたけど、ぜんぜんさくっとしてなかった気がするのはいつものこと。
ハイボール大ジョッキ何杯飲んだんだあんた。
2014/09/27 Sat
寝付けずに朝。
最近また生活サイクルが破綻してる。 CMで見かけた「まぜてマジック」を買ってきてタルタル。

商品特長|まぜてマジック まぜマジ100レシピ|ハウス食品
http://mazemagi.h​ousefoods.​jp/ie/product/
2014/09/26 Fri
定時間際になって届いたカーネルパッチを適用したらカーネルクラッシュしなくなったので帰る。 録画タイミングが遅れている気がしたので時計を確認したら1分遅れていました。
自動同期を設定しているはずなのになぁと手動で同期してみたところ時刻が変わらず。
あっれーと思いながら、適当に時計をずらしてから時刻同期をかけてみるとまた1分遅れの時間に。
なんで。

NTPサーバの時計がずれているのかとRTX-1100で show environment してみたけどあってる。

と思ったら、Hyper-Vホストの時刻がずれてた。(※1)
そういえばホストは時刻同期の設定してなかった。
というか、NTPサーバから取得した時刻をホストの時刻で上書くような動きするのか。
なんだそれ。


※1)録画サーバはHyper-Vゲスト。
2014/09/25 Thu
テストボード交換のために昼下がりにダンボール箱を持って外出。
今日は暑すぎる。



No such file or directory を回避したら今度は no devices found と言われるようになってげんなりしていたけどテストボードのリビジョンが上がったことでデバイスが見つかるようになってヒューッ!と思ったけどアクセスを開始した瞬間にカーネルクラッシュして死んだので俺も死んだ。
脂肪増殖の“鍵”を発見 メタボ治療の新たな手がかりに? | 地震予測検証・地震予知情報 / 防災情報【ハザードラボ】
http://www.hazard​lab.jp/know/topics/detail/7/4/7435.html
東京医科歯科大学の研究グループは、病原体センサー分子「Mincle(ミンクル)」が、脂肪肝やメタボリックシンドロームの原因となる脂肪組織の異常増殖を引き起こすことを突き止めた。

都交通局のあいつですか。


というか、あいつ羽生えてたのか。
2014/09/24 Wed

前回までのあらすじ

クロスビルドしたバイナリをボードに持っていって叩くと "No such file or directory" とか言われる。



あるだろ!なにがないのさ!
とかぼやきながら、readelfの出力を小一時間眺めた結果、ld-linux.so.3 が実機にないことに気が付く。

「ダイナミックローダ!」

通常、共有ライブラリが存在しない場合のメッセージは "libXX.so: not found" だけど、大元がいないとこうなるのか。

実機のダイナミックローダは ld-linux-armhf.so.3。
Hard Floatやん…
クロスビルド環境をarmelからarmhfにしたら普通に起動。
やれやれ。


readelf(1): Displays info about ELF files - Linux man page
http://linux.die.​net/man/1/readelf

ld-linux(8): dynamic linker/loader - Linux man page
http://linux.die.​net/man/8/ld-linux
発熱。
なんだかここのところしょっちゅう発熱してる気が。

それはそれとして、人のはけた後の自社に立ち寄って月締めの手続きをしてから帰宅。
2014/09/23 Tue
古いほうの洗濯紐が切れそう。 YoctoでビルドしているARMなカーネルにUSBネットワークアダプタを認識させるメモ。



前提

  • Ubuntu 12.04
  • Yocto Project 1.6.1 - Daisy
  • Logitec LAN-TXU2C
  • チップは ASIX AX88772


カーネルコンフィグ

$ source ./oe-init-build-env
$ bitbake linux-yocto -c kernel_configme -f
$ bitbake linux-yocto -c menuconfig

  • Device Drivers
  • Network device support
  • USB Network Adapters
  • Multi-purpose USB Networking Framework をMで選択
  • Save
  • .configに上書き



メモ

.configのパスは以下。

build/tmp/work/qemuarm-poky-linux-gnueabi/linux-yocto/3.14+gitAUTOINC+09424cee64_d7a5330e50-r0/linux-qemuarm-standard-build/.config


ビルド

$ hob

kernel-module-asix が増えているのでチェックしてビルド。




動作確認

実機がないのでqemu-system-armで。

  • ビルドしたイメージを起動
  • Ctrl+Alt+2 でQEMUモニタに切り替え
  • USBデバイスのIDを確認

(qemu) info usbhost
  Bus 1, Addr 3, Port 2, Speed 12 Mb/s
    Class ff: USB device 0b95:772b, AX88772B
  Bus 1, Addr 2, Port 1, Speed 12 Mb/s
    Class 00: USB device 80ee:0021, USB Tablet

  • ゲストOSにUSBデバイスを接続

(qemu) usb_add host:0b95:772b



  • Ctrl+Alt+1 でゲストOSに復帰
  • asixモジュールがロードされていることを確認。

# lsmod
Module                  Size  Used by
asix                   20571  0
usbnet                 24443  1 asix
libphy                 27955  1 asix
nfsd                  292501  11


参考サイト

Yocto Project Linux Kernel Development Manual
http://www.yoctop​roject.org​/docs/1.6/kernel-dev/kernel-dev.html#generating​-configurat​ion-files

「Yocto Project」の構成を紐解いてみる(その1) : コンピュータ全般情報サイト
http://blog.lived​oor.jp/naokani200​2/archives/52029933.h​tml

その他のメモ
http://www.h7.dio​n.ne.jp/~qemu-win/OtherTips-ja.html#usb
2014/09/22 Mon
朝起きたらK先生の部屋でした。

びっくりするほど記憶ない…!

有休申請しといて良かったわーと思ったけど、翌日休みという意識が飲みすぎを加速させたことを考えると一概に良かったとは言えないな!というか、送る会だったのに送った記憶がまったくないな!と思いながら東京に帰る。