2013年10月28日月曜日

NameVirtualHost has no effect and will be removed in the next release

Apache 設定してたらこんな、ログ

NameVirtualHost has no effect and will be removed in the next release 




なんだこりゃと思ったら、Apache 2.4 では NameVirtualHost は廃止されて、なくなったようですね。
VirtualHostディレクティブ があれば バーチャルホスト扱いってことのようだ。

一般的には、httpd.conf にこんな感じで書いているとは思うけど。

NameVirtualHost *:80




2013年10月22日火曜日

Cygwin で sphinx もちろん いけます

Cygwin で sphinx もちろん いけます

公式サイトでは、Cygwin で sphinx を使うなんてことに触れてはいませんが、
もちろん Cygwin 上でも動作します。

1. python easy_install コマンドのインストール

$ cd /tmp
$ wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py
$ python ez_setup.py

2. Sphinxのインストール

$ easy_install sphinx
 これでOK。あとは使うだけ。

$ sphinx-quickstart
ってなかんじで。

Cygwin で SSL による wget で失敗する

Cygwin で SSL による wget で失敗する
エラーはこんな感じ。

$ wget https://www.google.com
--2013-10-22 17:03:49--  https://www.google.co.jp/
www.google.co.jp (www.google.co.jp) をDNSに問いあわせています... 74.125.235.120, 74.125.235.127, 74.125.235.119, ...
www.google.co.jp (www.google.co.jp)|74.125.235.120|:443 に接続しています... 接続しました。
エラー: `google.co.jp' の証明書は信用されません。
エラー: `google.co.jp' の証明書の発行者が不明です。

まず、cygwin のパッケージで ca-certificates が入っているか確認をしてみましょう。

そんでもダメなら、$HOME/.wgetrc にこんな感じで書き加える。

ca-directory = /usr/ssl/certs

これは、wget が SSL の証明書を /etc/ssl ディレクトリを探しにいっているが、ファイルは /usr/ssl に有るからこういった問題になってしまう。

これで大丈夫じゃないかな!?






2013年10月6日日曜日

elfイメージをいじるときのコマンド

elfイメージをいじるときのコマンド
マイコンのROMを作成したりHACKするときに...


elfファイルを逆アセンブルする。
objdump input.elf --disassemble-all > output.s


elfファイルのシンボル情報を削除する。
 strip --strip-all input.elf -o output.elf


elfファイルから hexフォーマット(Intel HEX)を作成する。シンボル情報も同時に削除。
 objcopy  --strip-all -O ihex input.elf output.hex


elfファイルから Sフォーマット(Motorola S-record)を作成する。シンボル情報も同時に削除。
objcopy --strip-all -O srec input.elf output.srec


elfファイルのシンボル情報を表示する。
objdump --syms input.elf > output.symbol


2013年10月5日土曜日

Cygwin の ターミナル起動時のディレクトリを変える方法

Cygwin の ターミナルを普通に起動すると、どうしても /home/USER が初期ディレクトリになっている。これを、変更する方法。

まずは、Cygwin 標準パッケージに chere というパッケージがあるので入れてしまう。

そしてターミナルを起動するときに、
C:\cygwin\bin\mintty.exe -e /bin/xhere /bin/bash.exe "C:\your\dir"
という感じに引数を与えればいいようだ。



2013年9月9日月曜日

Lattice MachXO2 QFN32パッケージの放熱パッド

MachXO2 QFN32 のサーマルパッド(放熱パッド) これは、GND に接続して良いと書いてある。
1. 放熱条件を良 く する ために、 ラ テ ィ スは中央の放熱パ ッ ド を PCB のグ ラ ン ド プレーン と 半田付けする こ と を推奨し ています

MachXO2 ™ フ ァ ミ リ デー タ シー ト DS1035J Version 02.0 Page 4-4 に書いてあった。

それにしても Lattice のデータシートはとにかく読みにくい。読みにくいというのも、どこに何が書いてるのかわかんない。そんで、誤字もあったりする。

2013年5月15日水曜日

TI (Texas Instruments) のデータシートってコピーしていって書かれてる

TI (Texas Instruments) さんのデータシートは、コピーしていいようだ。

頭、柔らかいな。








TIのデータ・ブックもしくはデータ・シートの中にある情報を複製することは、その情報に一切の変更を加えること無く、かつその情報と結び付られた全ての保証、条件、制限及び通知と共に複製がなされる限りにおいて許されるものとします当該情報に変更を加えて複製することは不公正で誤認を生じさせる行為です。TIは、そのような変更された情報や複製については何の義務も責任も負いません。
(bq24030 のデータシートより)


その逆で、悩ましいのが、
事前の承諾を得ることなく転載又は複製することを固くお断り致します
なんて書いてあるデータシート。さすがに、固く断られちゃうと、なんか気がひけちゃうんですよね。


 気になるなら最初っから TI を使えばいいわけだな


newlib 1.20.0 for Renesas RX build problem. ビルドできない。

Newlib 1.20.0 を Renesas RX 用にビルドしようとすると、make install で失敗します。
 
次のようなエラーがでました。

$ ../configure    --target=rx-elf                    \
                --prefix=/usr/local/rx-elf            \
                --disable-newlib-supplied-syscalls        \
                --enable-multilib
$ make
$ make install

   (...省略...)

mkdir tmp
cd tmp; \
 for i in argz/lib.a  stdlib/lib.a  ctype/lib.a  search/lib.a  stdio/lib.a      string/lib.a  signal/lib.a  time/lib.a  locale/lib.a  reent/lib.a    errno/lib.a  misc/lib.a          machine/lib.a  ; do \
   rx-elf-ar x ../$i; \
 done; \
rx-elf-ar rc ../libc.a *.o
rx-elf-ar: ../argz/lib.a: No such file or directory
rx-elf-ar: ../stdlib/lib.a: No such file or directory
rx-elf-ar: ../ctype/lib.a: No such file or directory
rx-elf-ar: ../search/lib.a: No such file or directory
rx-elf-ar: ../stdio/lib.a: No such file or directory
rx-elf-ar: ../string/lib.a: No such file or directory
rx-elf-ar: ../signal/lib.a: No such file or directory
rx-elf-ar: ../time/lib.a: No such file or directory
rx-elf-ar: ../locale/lib.a: No such file or directory
rx-elf-ar: ../reent/lib.a: No such file or directory
rx-elf-ar: ../errno/lib.a: No such file or directory
rx-elf-ar: ../misc/lib.a: No such file or directory
rx-elf-ar: ../machine/lib.a: No such file or directory
rx-elf-ar: *.o: No such file or directory
Makefile:979: recipe for target `libc.a' failed
make[8]: *** [libc.a] Error 1

原因は  Newlib の中にある libgloss/rx/Makefile.in ファイルに問題があるようです。
パッチを作りましたので、パッチをあてればビルドできるようになります。

ダウンロード

 

2013年4月25日木曜日

FileFind_maptree() for PHP

コード、ちょとメモっとく。


/**
 * ディレクトリツリーを作成する
 *
 * $dir のディレクトリ 下位ディレクトリ を含む ファイル・ディレクトリの一覧を取得します。
 *
 * 注意: 含まれるディレクトリ・ファイルの数によっては処理に時間がかかり、また多くのメモリを必要とする恐れがあります。
 *
 * @param  $dir  検索するディレクトリ
 * @return       ファイル・ディレクトリの配列
 */
function FileFind_maptree($dir){

    $items = glob($dir . '/*');

    for ($i = 0; $i < count($items); $i++) {
        if (is_dir($items[$i])) {
            $add = glob($items[$i] . '/*');
            $items = array_merge($items, $add);
        }
    }

    return $items;
}

elfファイルをリロケーションの仕組み 概要

elfファイルをリロケーションする仕組み 概要

はじめに

MMU のあるアーキテクチャは、
MMU での仮想メモリのアドレスを書き換えてしまえばいいのでそれほど面倒なことではない。
簡単に言っちゃえば、elfファイルのロード先アドレスにロードして、そこに ジャンプ してしまう方法ができる。


MMU の無いアーキテクチャは、
中身の elf に含まれる プログラムコード の命令セットなどの中でメモリアドレス指定箇所を1個づつかきかえていく。これがリロケーションって作業なんだ。


リロケーションするためどう書き換えてくか?

たとえば hello.o というオブジェクトファイルがあれば

$ arm-none-eabi-objdump -x hello.o

と実行すると ファイルのセクション情報が表示される。

その中に、"RELOCATION RECORDS FOR ..." と書かれた箇所がある。

...
RELOCATION RECORDS FOR [.text]:
OFFSET   TYPE              VALUE
00000094 R_ARM_PC24        main
00000098 R_ARM_PC24        exit
00000144 R_ARM_PC24        msg_send
00000178 R_ARM_ABS32       .rodata
0000014c R_ARM_ABS32       .rodata
000034cc R_ARM_PC24        sys_log
...
これらは elf ファイルに有る、 .text セクション内の実際のデータをに対して、移動先アドレスまでのオフセットを加算すればリロケーションできる。

でも単純に加算すればいいわけではなく、これらは プログラムコード(arm命令セット)になっています。
ですから、プログラムコード(arm命令セット)として適切なビットだけを書き換えなければなりません。

実行するとき

1. elfファイルを分解
2. セクション情報を取得
3. memcpy() でセクションを移動して
4. リロケーション情報をもとにアドレスを書き換え

で、実行先エントリーポイントへジャンプすればプログラムは実行できる。
ってことのようです。



これは仕事じゃないから、そのうち試してみます。





2013年4月15日月曜日

Insight 6.8-1 build problem on Cygwin. ビルドできない。

Insight debugger を Cygwin でビルドしてみました。

が、 そう簡単にはビルドが通りません。

Insight のサイトにある insight-6.8-1 や insight-6.7 、そして cvs (2013/04/14時点) のものでも、Cygwin ではビルドできません。
昔は Cygwin で Insight はビルドできましたが、 今は Cygwin のソースコードはメンテナンスされていないようです。


ソースコードの手直しをして、ビルド通すことができ、使えそうな感じなので、公開しておきます。

元となっているのは cvs (2013/04/14時点) のものに対して修正を加えました。
insight-6.8-1 は、古いし、あまりお勧めしません。


ダウンロード


このパッチは Cygwin でビルドするためのものです。
パッチをあて、他の環境 (Linux) ではビルドできなくなる かも しれません。(テストしていないです)

ビルド方法 (arm クロス開発用)


ビルド方法の例です。

$ cd /home/pkg/insight-cvs20130414
$ tar xvjf insight-cvs20130414-src.tar.bz2

$ patch -p1 -d src < insight-cvs20130414-cygwin.patch

$ mkdir /home/pkg/insight-cvs20130414/.BUILD
$ cd /home/pkg/insight-cvs20130414/.BUILD
$  ../src/configure                            \
        --target=arm-none-eabi                    \
        --prefix=/usr/local/arm-none-eabi            \
        --with-mpfr                        \
        --with-gmp                       
$ make
$ make install




パッチを適用していないと、

パッチを適用していないと、Cygwin でビルドの時に、こんなエラーがでてきます。

gcc -c -g -O2 -Wall -Wconversion   -I"../../../tcl/win/../generic" -I"../../../tcl/win" -mwin32  -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DHAVE_NO_SEH=1 -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1   -DBUILD_tcl ../../../tcl/win/../generic/tclAlloc.c -o tclAlloc.o
In file included from /usr/lib/gcc/i686-pc-cygwin/4.5.3/../../../../include/w32api/winsock2.h:56:0,
                 from ../../../tcl/win/../generic/../win/tclWinPort.h:72,
                 from ../../../tcl/win/../generic/tclPort.h:22,
                 from ../../../tcl/win/../generic/tclAlloc.c:29:
/usr/lib/gcc/i686-pc-cygwin/4.5.3/../../../../include/w32api/psdk_inc/_fd_types.h:100:2: 警告: #warning "fd_set and associated macros have been defined in sys/types.      This can cause runtime problems with W32 sockets"
In file included from ../../../tcl/win/../generic/../win/tclWinPort.h:72:0,
                 from ../../../tcl/win/../generic/tclPort.h:22,
                 from ../../../tcl/win/../generic/tclAlloc.c:29:
/usr/lib/gcc/i686-pc-cygwin/4.5.3/../../../../include/w32api/winsock2.h:986:34: error: conflicting types for ‘select’
/usr/include/sys/select.h:31:5: note: previous declaration of ‘select’ was here
Makefile:423: recipe for target `tclAlloc.o' failed
make[3]: *** [tclAlloc.o] Error 1
make[3]: ディレクトリ `/home/pkg/insight-6.8-1/.BUILD/tcl/win' から出ます
Makefile:15: recipe for target `all' failed
make[2]: *** [all] Error 2
make[2]: ディレクトリ `/home/pkg/insight-6.8-1/.BUILD/tcl' から出ます
Makefile:6631: recipe for target `all-tcl' failed
make[1]: *** [all-tcl] Error 2
make[1]: ディレクトリ `/home/pkg/insight-6.8-1/.BUILD' から出ます
Makefile:705: recipe for target `all' failed
make: *** [all] Error 2



2013年4月13日土曜日

NetBeans7.3.0 + Cygwin gdb 7.5.1 breakpoints do not work. ブレイクポイント止まんない。


NetBeans7.3.0 で、Cygwin 上の gdb 7.5.1 を使っていると、C言語でブレイクポイントを張ってもブレイクしない。

回避方法は NetBeans を起動するときに、"-J-Dgdb.breakpoints.shortpaths=true" というオプションを付けて起動することで回避できた。

netbeans.exe -J-Dgdb.breakpoints.shortpaths=true

このバグ、知らなかったわけではなく知っていた。
が、もうとっくに修正されていると思っていたのに、ぜんぜん修正される感じがない。.

https://netbeans.org/bugzilla/show_bug.cgi?id=201670

2013年4月6日土曜日

Building Linux kernel on Cygwin / menuconfig エラー回避 (2)

またまた、menuconfig でエラー

$make menuconfig

(....省略....)

/usr/lib/gcc/i686-pc-cygwin/4.5.3/../../../../i686-pc-cygwin/bin/ld: final link failed: Invalid operation
collect2: ld はステータス 1 で終了しました
scripts/Makefile.host:113: recipe for target `scripts/kconfig/mconf' failed
make[1]: *** [scripts/kconfig/mconf] Error 1
Makefile:463: recipe for target `menuconfig' failed
make: *** [menuconfig] Error 2
この回避方法は次のように
linux-2.6.14.6/scripts/kconfig/Makefile を書き換える。

122a123,125
> HOSTLOADLIBES_conf     = -L/lib -lintl
> HOSTLOADLIBES_mconf    = -L/lib -lintl
>

ifeq ($(qconf-target),1)
qconf-cxxobjs    := qconf.o
qconf-objs    := kconfig_load.o zconf.tab.o
endif

HOSTLOADLIBES_conf     = -L/lib -lintl
HOSTLOADLIBES_mconf    = -L/lib -lintl
ifeq ($(gconf-target),1)
gconf-objs    := gconf.o kconfig_load.o zconf.tab.o
endif


これで回避できる。




Building Linux kernel on Cygwin / menuconfig エラー回避 (1)

Linux のカーネル (linux-2.6.14.6 にカスタマイズが多少入ってると思われるもの)を cygwin 上でビルドするのに、menuconfig しようとしたら、こんなエラー出てきた。
$ make menuconfig
Makefile:462: *** 暗黙ルールと通常ルールが混ざりました.  中止.


回避方法は Makefile を修正してしまう。


462c462
< config %config: scripts_basic outputmakefile FORCE
---
> %config : scripts_basic outputmakefile FORCE
これで回避できる。


メモでした♪

2013年1月31日木曜日

奥利根スノーパークの3連キッカー!?

年々パークアイテムが安全志向になってきてた奥利根が、
”今年はちゃんとキッカー作ります” って言ってたので、向山のリフトすぐのところにキッカー1発つくるんだろな程度におもっていたら、なんと、ホントにちゃんとつくっちゃってるよ。それも、たぶん3連キッカー。きたよー。きたよー。

 
3連キッカー? 2連キッカー+BOX? 完成まで、ワクワク。 ディガーの人たちが作成中なので、オープンは今週末(2月2日~)かな!?

休日のナイターは、第3リフトが稼働してて流せるし、いいじゃん♪