トップ 最新 追記
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|10|12|
2009|02|03|06|07|10|11|12|
2010|01|02|03|04|07|09|10|11|12|
2011|01|03|04|05|06|07|08|10|
2012|01|06|08|09|10|12|
2013|01|02|03|04|07|09|11|12|
2014|01|03|04|05|06|09|
2015|04|
2016|01|08|
ここは旧えびめもです。えびめも2に移行します(2016/12/1)

2006年12月02日

AVR Dragon

先日の自分との戦いの負けによってdigikeyでAVR ATTiny45Vを買ったのだが、同時に注文しておいたAVR Dragonが届いた。

「中華菓子みたいだ」「いやいやシューマイの箱だ」と評されたAVR dragonの箱。

コネクタやケーブルは一本もついてこないようだ。これらは自作する必要がある。

2006年12月05日

ハロ現る


お客さんからの帰り道、夕日に輪ができていた。ハロ(内暈=22度ハロ)だ。

夕日と水平に左右に明るいスポットが見える。幻日(げんじつ)と言う。
名古屋もちょっと外に出るとこんな景色だ。田舎だなぁ。とか言わないように(A^^;; 前にも書いたけれど、こういう天空現象は誰の頭の上にも起きているのに、気がつかずに足早に歩き去る人をみるともったいないなと思う。

過去の天空現象
2005/7/20 虹(台湾)
2005/11/25 幻日
2005/9/6 ハロ
2005/12/22 幻日
2005/6/14 写真無し
2006/1/26 岐阜のかたの写真


2006年12月08日

kinneko氏

と食う、んで飲む。楽しかったです。ありがとうございます。ワインも結構良かったですね。次は蓬莱軒に行ってみましょう。


2006年12月12日

Linux ブロック型デバイスドライバ

Linuxのブロック型デバイスドライバの面白いところは、 request() コールバック関数に集約されるとおもうのだけど、この request() 関数はいったい誰によって呼ばれるのか?調べてみた。request()関数内に
printk("current->pid=%d, current->comm=%s\n",current->pid, current->comm);
というデバック表示をちょっと置いて、mount, cp, sync 等を実行してみた。(i386, linux-2.6.11)
current->pid=592, current->comm=mount
sbd_request()
current->pid=592, current->comm=mount
sbd_request()
current->pid=592, current->comm=mount
sbd_request()
current->pid=592, current->comm=mount
sbd_request()
current->pid=593, current->comm=cp
sbd_request()
current->pid=593, current->comm=cp
sbd_request()
current->pid=593, current->comm=cp
sbd_request()
current->pid=6, current->comm=kblockd/0
sbd_request()
current->pid=6, current->comm=kblockd/0
sbd_request()
current->pid=6, current->comm=kblockd/0
sbd_request()
current->pid=6, current->comm=kblockd/0
sbd_request()
current->pid=6, current->comm=kblockd/0
sbd_request()
current->pid=6, current->comm=kblockd/0
sbd_request()
current->pid=6, current->comm=kblockd/0
sbd_request()
current->pid=6, current->comm=kblockd/0
sbd_request()
current->pid=6, current->comm=kblockd/0
sbd_request()
current->pid=6, current->comm=kblockd/0
sbd_request()
current->pid=6, current->comm=kblockd/0
sbd_request()
current->pid=6, current->comm=kblockd/0
sbd_request()
current->pid=6, current->comm=kblockd/0
sbd_request()
current->pid=6, current->comm=kblockd/0
sbd_request()
current->pid=6, current->comm=kblockd/0
sbd_request()
current->pid=6, current->comm=kblockd/0
sbd_request()
current->pid=6, current->comm=kblockd/0
sbd_request()
current->pid=6, current->comm=kblockd/0
sbd_request()
current->pid=6, current->comm=kblockd/0
sbd_request()
current->pid=6, current->comm=kblockd/0
sbd_request()
current->pid=6, current->comm=kblockd/0
sbd_request()
current->pid=8, current->comm=pdflush
sbd_request()
current->pid=6, current->comm=kblockd/0
sbd_request()
current->pid=6, current->comm=kblockd/0
sbd_request()
current->pid=8, current->comm=pdflush
sbd_request()
current->pid=8, current->comm=pdflush
sbd_request()
current->pid=8, current->comm=pdflush
sbd_request()
current->pid=597, current->comm=sync
mountやcpといったファイルを直接I/Oしているプロセス、それからカーネル内部で走行しているカーネルスレッド kblockd/0、pdflush らが呼び出している。コンテクストの内側である、っていう点で少し安心した。

2006年12月13日

SDカード

職務機密漏洩にならない程度に自分メモ。CQ 出版社 TECH I シリーズ Vol.35 フラッシュ・メモリ・カードの徹底研究 、それからSD Associationから出ているSDカード仕様書(※)によると、
CMD00   idle
CMD55   次がACMDコマンドであることのマーカー
  ACMD41   イニシャル(OCRレジスタで電圧を指定)
CMD02   CID取得
CMD03   RSA取得
CMD07   カード選択
の順で初期化してあげればSDカードが動き出すらしい。長かった。。。
(※)以下で公開されている
http://www.sdcard.org/
 → About SD Memory Card
    → Simplified Version of PHYSICAL LAYER SPEC 
       → confirm (I Accept)
結局、この 「SD Specifications Part 1 Physical Layer Simplified Specification Version 2.00」 に必要はことは書いてある。穴が開くほど読みました。注意しなければならないのは、既存のSDでは Single Sector Read時に指定するのはセクタ番号ではなく、32bitでアドレス指定だと言う事。セクタの途中からでも読み書きできてしまうらしい。キモチワルイ。であるから、自動的に最大は4Gバイトまでってことになる。新規格SDHCではこれがセクタ単位となっている点に注意すること(ただしセクタサイズは512バイトとは限らない)
参考にさせていただいたページ
http://elm-chan.org/docs/mmc/mmc.html

2006年12月14日

Intefece誌 2007年1月号


報告が遅くなりましたが、現在書店に並んでいる、CQ出版社Interface誌2007年1月号に、
  SH-4(SH7760)にみる組み込み向けOHCI制御の実例
 Linux用OHCI USBホスト・ドライバの実装事例
というタイトルで寄稿しましたのでご覧ください。CAT760でohci-USBを苦労した話が載ってます(^^;;

CQ出版社セミナー

広告続きで申し訳ないですが、CQ出版社で組み込みlinuxセミナーを行います。
http://it.cqpub.co.jp/eSeminar/Default.asp?NV=CCM&CI=E01-0061
  組み込みLinux入門(2日間コース)
  2006年12月21日(木) 10:00-17:00
  2006年12月22日(金) 10:00-17:00
内容
  雑談〜SH3,SH4クロスコンパイル〜Linux-2.6キャラクタ型デバイスドライバ 、といった話
まだ受け付けているようです。よろしくお願いします。

2006年12月16日

ATTINY45V

Tiny45で検索していて見つけました。Tiny45で私だけのオルゴール作り。すごい。アイディアだけではなくて、こんなふうに物づくり教室というのを実践しているなんて!すごいなぁ。
http://siva.cc.hirosaki-u.ac.jp/usr/koyama/mymelo/

2006年12月17日

プログラマは膀胱炎になりやすい?

という話を聞いた。確かにトイレに立つタイミングが難しい。ビルドを書けたら(計算を開始したら)休憩にしよう、とか思っていると、あ、エラーだ。直さねば。などなど長時間おしっこを我慢している気がする。というか「今休憩したら何だったか忘れてしまうっ!」という神経の高ぶりなのだろうか。


2006年12月23日

debian etch (debian version 4.0)

etchでの主要パッケージバージョンを調べる(i386)
# apt-get --download-only install binutils gcc
 
libc6 2.3.6.ds1-8
libc6-dev 2.3.6.ds1-8
binutils 2.17-3
gcc-4.1 4.1.1-19
gcc-4.1-base 4.1.1-19

2006年12月25日

SH4 Linux debian etch

漕ぎいでな〜、さんのサイト
が最近止まっているようだ。。。。

とりあえずこちらは gcc-4.0.2 の etch i386 むけクロスが出来た。gcc-4.1にも挑戦してみる。

カーネルヘッダー

include/asm-i486/unistd.h
(2.6.18)
#define __NR_getpmsg            188     /* some people actually want streams */
#define __NR_putpmsg            189     /* some people actually want streams */
 
(2.6.15)
#define __NR_streams1           188     /* some people actually want it */
#define __NR_streams2           189     /* some people actually want it */
なんだこれは?

2006年12月27日

SH4 debian etch

セルフgcc-4.0.2 。 できたらしい。
landy1:~# gcc -v
Using built-in specs.
Target: sh4-linux-gnu
Configured with: ../src/configure -v --enable-languages=c --prefix=/usr --enable-shared 
--with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix 
--enable-nls --program-suffix=-4.0 --enable-__cxa_atexit --enable-checking=release sh4-linux-gnu
Thread model: posix
gcc version 4.0.2 (Debian 4.0.2-2)

sh4 debian etch

ヘッダーの続き
kernel-2.6.19 で調べてみる
include/asm-i386/unistd.h
  #define __NR_getpmsg            188     /* some people actually want streams */
  #define __NR_putpmsg            189     /* some people actually want streams */
 
include/asm-arm/unistd.h
                                          /* 188 reserved */
                                          /* 189 reserved */
 
include/asm-powerpc/unistd.h
  #define __NR_getpmsg            187     /* some people actually want streams */
  #define __NR_putpmsg            188     /* some people actually want streams */
 
include/asm-sh/unistd.h
  #define __NR_streams1           188     /* some people actually want it */
  #define __NR_streams2           189     /* some people actually want it */
__NR_getpmsg, __NR_putpmsg にする流れ?

sh4 debian etch

gcc-4.0.2 で glibc-2.3.6.ds1 をビルドしてみる。
checking for forced unwind support... no
configure: error: forced unwind support is required
make: *** [/root/build-etch/debian-etch-libc6/glibc-2.3.6.ds1/stamp-dir/configure_libc] Error 1
unwind ??? 調べてみる。
> I don't know what is "forced unwind support" ? Thanks for explainations and
> help
>
> Z
 
unwind is a compiler feature, so you need to upgrade or build
your compiler unwind support withikn.
なるほど。gcc-4.1 を先に挑戦するか。

2006年12月29日

sh4 debian etch

gcc-4.1_4.1.1ds2-21 に挑戦
/root/build/gcc-4.1/gcc-4.1-4.1.1ds2/build/./gcc/xgcc 
-B/root/build/gcc-4.1/gcc-4.1-4.1.1ds2/build/./gcc/ 
-B/usr/sh4-unknown-linux-gnu/bin/ -B/usr/sh4-unknown-linux-gnu/lib/ 
-isystem /usr/sh4-unknown-linux-gnu/include -isystem /usr/sh4-unknown-linux-gnu/sys-include 
-O2 -g -O2  -DIN_GCC -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes 
-Wold-style-definition -Wno-strict-prototypes -Wno-error -isystem ./include  -I. -I. 
-I../../src/gcc -I../../src/gcc/. -I../../src/gcc/../include 
-I../../src/gcc/../libcpp/include 
-aux-info SYSCALLS.c.X -S -o tmp-SYSCALLS.s SYSCALLS.c
cc1: internal compiler error: no multiarch mapping for multilib ()
う〜む。 xgcc が動かないらしい。
src/gcc/c-incpath.c を見ると
const struct multiarch_mapping multiarch_mappings[]
= {
#include "multiarch.inc"
  { 0, 0 }
};
のあたりかな。。。

sh4 debian etch

gcc-4.0 を参考にして
--- src/gcc/c-incpath.c~        2006-12-29 02:42:01.000000000 +0900
+++ src/gcc/c-incpath.c 2006-12-29 16:39:09.000000000 +0900
@@ -152,86 +152,88 @@
 add_standard_paths (const char *sysroot, const char *iprefix,
                    const char *imultilib, int cxx_stdinc)
 {
   const struct default_include *p;
   size_t len;
   const char *multiarch;
 
   if (iprefix && (len = cpp_GCC_INCLUDE_DIR_len) != 0)
     {
       /* Look for directories that start with the standard prefix.
         "Translate" them, i.e. replace /usr/local/lib/gcc... with
         IPREFIX and search them first.  */
       for (p = cpp_include_defaults; p->fname; p++)
        {
          if (!p->cplusplus || cxx_stdinc)
            {
              /* Should we be translating sysrooted dirs too?  Assume
                 that iprefix and sysroot are mutually exclusive, for
                 now.  */
              if (sysroot && p->add_sysroot)
                continue;
              if (!strncmp (p->fname, cpp_GCC_INCLUDE_DIR, len))
                {
                  char *str = concat (iprefix, p->fname + len, NULL);
+#if 0 /* EBIHARA */
                  if (p->multilib == 1 && imultilib)
                    str = concat (str, dir_separator_str, imultilib, NULL);
                  if (p->multilib == 2)
                    {
                      multiarch = multilib_to_multiarch (imultilib);
                      if (!multiarch)
                        continue;
                      str = concat (str, dir_separator_str, multiarch, NULL);
                    }
+#endif /* EBIHARA */
                  add_path (str, SYSTEM, p->cxx_aware, false);
                }
            }
        }
     }
 
   for (p = cpp_include_defaults; p->fname; p++)
     {
       if (!p->cplusplus || cxx_stdinc)
        {
          char *str;
 
          /* Should this directory start with the sysroot?  */
          if (sysroot && p->add_sysroot)
            str = concat (sysroot, p->fname, NULL);
          else
            str = update_path (p->fname, p->component);
-
+#if 0 /* EBIHARA */
          if (p->multilib == 1 && imultilib)
            str = concat (str, dir_separator_str, imultilib, NULL);
 
          if (p->multilib == 2)
            {
              multiarch = multilib_to_multiarch (imultilib);
              if (!multiarch)
                continue;
              str = concat (str, dir_separator_str, multiarch, NULL);
            }
-
+#endif /* EBIHARA */
          add_path (str, SYSTEM, p->cxx_aware, false);
        }
     }
 }
強引に上のようにして xgcc が動くようになった。先に進む。
../../src/gcc/fix-header.c: In function 'read_scan_file':
../../src/gcc/fix-header.c:670: warning: passing argument 4 of 'register_include_chains' makes pointer from integer without a cast
../../src/gcc/fix-header.c:670: error: too few arguments to function 'register_include_chains'
む。これってコンパイルできないんじゃねーのか?調べて直す。
--- src/gcc/fix-header.c~       2005-06-25 11:02:01.000000000 +0900
+++ src/gcc/fix-header.c        2006-12-29 16:48:49.000000000 +0900
@@ -666,7 +666,7 @@
     exit (FATAL_EXIT_CODE);
 
   register_include_chains (scan_in, NULL /* sysroot */, NULL /* iprefix */,
-                          true /* stdinc */, false /* cxx_stdinc */,
+                          0, true /* stdinc */, false /* cxx_stdinc */,
                           false /* verbose */);
 
   /* We are scanning a system header, so mark it as such.  */

sh4 debian etch

あ。なんだか gcc-4.1.1 コンパイル成功したらしい。 .deb パッケージはまだ無理だけど。
# gcc -v
Using built-in specs.
Target: sh4-unknown-linux-gnu
Configured with: ../src/configure -v --enable-languages=c,c++ 
--prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib 
--without-included-gettext --enable-threads=posix --enable-nls 
--program-suffix=-4.1 --enable-__cxa_atexit --enable-clocale=gnu 
--enable-libstdcxx-debug --enable-mpfr --enable-checking=release 
--with-multilib-list=m4
Thread model: posix
gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)

2006年12月30日

おおっ

diffとpatchを通してソフトウェアが生物のように見えてきた。