2010年11月30日火曜日

軽量ブラウザDilloを使う

buntuでお試しで入れてみたかったのでレポジトリを探したらここへたどり着いた。

内容:

"Dillo 2.2 (.deb) - Super Fast Light Weight"
- Ubuntu-Linux: Dillo 2.2 (.deb) - Super Fast Light Weight Browser & Midori - Light Weight Browser - A ReviewGoogle サイドウィキで表示

次世代AMDのネットブックCPUについて

CPUクロック下がる変わりにグラフィックが一気に強化されるぽい。そしてUSBは2.0のまま。

内容:

"現行の“Nile”(Athlon II Neo K325, K125)と比較すると“Brazos”はグラフィック性能が大幅に強化されます。一方でCPU性能の指標と位置づけられているであろうPC Mark VantageのスコアはDual-CoreのE350でもAthlon II Neo K325よりも数%劣るようです。"
- 北森瓦版 - “Zacate / Ontario”の詳細が公開されるGoogle サイドウィキで表示

使ってないけど、使えそうなソース

Pythonで直接Videoにアクセスできるコード。pyv4lライブラリが必要らしい

内容:

"Python-v4l"
- Python-v4l: neat!Google サイドウィキで表示

Linux上でRAMディスクを作成する。

すごく簡単。/dev/shmをマウントするのみ。
パラメータは
-t tmpfs -o size=256m
のように割り当てサイズを指定する。

内容:

"# mkdir /mnt/ramdisk# mount -t tmpfs -o size=256m /dev/shm /mnt/ramdisk# chmod 777 /mnt/ramdisk$ df -h"
- MARUのてくめも  Debian(Ubuntu)上にRAMディスクを作ってみるGoogle サイドウィキで表示

Python+OpenCVでWEBカメラ操作

Lenny環境でOpenCV1.1の時はエラーがでて動かないけどメモ。

内容:

"import Image; import cv; camcapture = cv.CreateCameraCapture(0) cv.SetCaptureProperty(camcapture,cv.CV_CAP_PROP_FRAME_WIDTH, 640) cv.SetCaptureProperty(camcapture,cv.CV_CAP_PROP_FRAME_HEIGHT, 480); if not camcapture:         print "Error opening WebCAM"         sys.exit(1) while 1:     frame = cv.QueryFrame(camcapture)     if frame is None:         break     cv.ShowImage('Camera', frame)     k=cv.WaitKey(10);"
- Developer Station: Reading data from WebCam on Python using OpenCVGoogle サイドウィキで表示

Swap領域設定

linuxでキーバインドを変更する

Debian lenny環境を使っていて、デフォルトだと日本語キーボードに設定されていない。
例えば、「WINキー」や「無変換キー」など割り当てが無いので
awesomeを動かすと「WIN+ENTER」キーが使えなくて「xterm」すら開けない自体が起きてしまう。
そこでWINキーを復活させようと思って調べてみたら
「xmodmap」コマンドを使えばできるそうです。

まず、コンソールからXを開いてキーマップを出力する
$ X &
$ xterm -display 0:0 &

X内のxterm上で
$ xmodmap -pke > ~/.xmodmaprc

コンソールからxevを使って割り当てたいキーコードを調べて、.xmodmaprcに書き込む。
$ xev -display 0:0

起動時に設定が反映されるようにしておく。
vim .xinitrc
---
xmodmap .xmodmaprc
...
awesome
---

参考資料
http://forums.fedoraforum.org/archive/index.php/t-251748.html

2010年11月29日月曜日

X上でWEBカメラ動作チェック

自分で使う時は、
luvcview -s 320x240 -f yuv -i 4 --display 0:0 &

内容:

"luvcview -s 640x480 -i 30 -d /dev/video0"
- luvcview - HomeGoogle サイドウィキで表示

Mini2440用最新版ダウンロード先

KernelやCross toolchainなどが手に入る。

内容:

"mini2440 update(2010-8-18)"
- mini2440 update(2010-8-18) - FriendlyARMGoogle サイドウィキで表示

これはひどい。

Mini2440でこのフォルダ使ってるのにw

内容:

"[PATCH] ARM: S3C: Remove old plat-s3c directory and unused contents"
- [PATCH] ARM: S3C: Remove old plat-s3c directory and unused contentsGoogle サイドウィキで表示

mini2440でWEBカメラを使う。

Kernelバージョンが2.6.32以降かつ、
コンパイルした時、V4L(Video for Linux)をビルド済であるのが前提。

1.モジュールロードの確認
まずlsmodコマンドでロードモジュール一覧を表示する。
・uvcvideo
・v4l2_int_device
・v42_common
・videodev
・v4lcompat
・gspca_main
このあたりが無かったら
modprobe uvcvideo
modprobe v4l2_int_device
・・・
で追加していく。
上記モジュールがうまく登録できない場合は、モジュールが存在していない場合ある。
確認するパスは、
/lib/modules/2.6.xx.xx/kernel/drivers/media/video/


Module Size Used by
gspca_spca561 11132 0
gspca_main 23504 1 gspca_spca561
v4l2_common 16936 0
videodev 35560 2 gspca_main,v4l2_common
v4l1_compat 14780 1 videodev


無ければカーネルビルド。
make menuconfig
でmultimedia付近の設定でV4Lを追加してイメージ作成すればモジュール生成される。

Mini2440のCrossChain GCCコンパイラ4.4.3にする。

以前の記事でGCC4.3.2にしたやり方と同じ方法で出来る。

1.ダウンロード
http://arm9download.cncncn.com/mini2440/linux/arm-linux-gcc-4.4.3-20100728.tar.gz

2.インストール
$ sudo tar xvzopf [置き場所パス]/arm-linux-gcc-4.4.3.tgz
$ vim ~/.bashrc
最後の行に
export PATH=$PATH:/opt/FriendlyARM/toolschain/4.4.3/bin
を追加。

2010年11月26日金曜日

Video追加

#cd /dev
#mknod video0 c 81 0
#mknod radio0 c 81 64
#mknod vtx0 c 81 192
#mknod vbi0 c 81 224
#mknod i2c0 c 89 0
#ln -s video0 video
#ln -s radio0 radio
#ln -s vtx0 vtx
#ln -s vbi0 vbi
#ln -s i2c0 i2c
#chmod 666 video0 一般ユーザーがアクセスできるようにする
#chmod 666 radio0
#chmod 666 vtx0
#chmod 666 vbi0
#chmod 666 i2c0

内容:

"#cd /dev#mknod video0 c 81 0#mknod radio0 c 81 64#mknod vtx0 c 81 192#mknod vbi0 c 81 224#mknod i2c0 c 89 0#ln -s video0 video#ln -s radio0 radio#ln -s vtx0 vtx#ln -s vbi0 vbi#ln -s i2c0 i2c#chmod 666 video0 一般ユーザーがアクセスできるようにする#chmod 666 radio0#chmod 666 vtx0#chmod 666 vbi0 #chmod 666 i2c0"
- LinuxでテレビGoogle サイドウィキで表示

テキストベースユーザインターフェース(TUI)をするには

Curses(カーシス)というのがある。

内容:

"Curses(カーシス)はUNIX系システムでの端末制御ライブラリである。"
- Curses - WikipediaGoogle サイドウィキで表示

2010年11月24日水曜日

Mini2440用Kernelコンパイル設定編

今までMenuConfigは公式BBSにアップされていたものを使っていたので、
どんな設定変更が加えられているのか分からなかったから、自分で最初から設定してみた。
やり方は公式バージョンのカーネルソースからmenuconfig開いて1つずつチェックする方法で結構大変。

主な設定はざっとこんな感じ。
・SDHCサポート
・CPU可変クロック設定を有効
・USBデバイスサポートの追加(USBカメラなど)
・組み込み用の小さいカーネル設定を有効
・ハングした時やUSB挿されたり?したときのログ出力を有効
・不要な機能(ラジオやキャプチャーボードなど)を無効

上の2つ以外の設定は好みで変えてもよさそうな気がした。

そしてデフォルト設定から変えたものリスト
・General setup
 Configure standard kernel features (for small systems):[*]

・Enable the black layer
 Supprt for large(2TB+) block devices and files:[ ]

・Kernel Features
 Use kernel mem{cpy,set}() for {copt_to,clear}_user():[*]

・CPU Power Management
 CPU Freqency scaling:[*]
 'powersave' governor:[M]
 'userspace' governor:[M]
 'ondemand' cpufreq policy governor:[M]
 'conservative' cpqfreq governor:[M]
 CPUfreq driver for Samsung S3C24XX series CPUs:[*]
 Support CPUfreq changing of PLL frequency:[*]
 Debug CPUfreq Samsung driver core:[*]
 
・System Type(CPU Power Managementを設定してから開く)
 S3C2440/S3C2442 CPU Frequency scaling support:[*]

・Device Drivers
 Hardware Monitoring support:[ ]
 Generic Thermal sysfs driver:[ ]
 Multifunction device drivers:[ ]
 ・Mulrimedia support:[M]
  Video For Linux:[M]
  Customize analog and hybrid tuner modules to build:[ ]
 ・Video capture adapters
  Autoselect pertinent:[*]
  V4L USB devices
   USB Video Class (UVC):[M]
 ・Radio Adaprts:[ ]
 ・Graphics support
  Direct Rendering Manager:[M]
 ・Special HID drivers
  全部チェック外し
 ・USB support
  USB device filesystem:[ ]
  SanDisk SDDR-09:[ ]
  SanDisk SDDR-55:[ ]
  Lexar Jumpshot Compact Flash Reader:[ ]
  Olympus MAUSB-10/Fuji DPC-R1 support
  ・USB Gadget Support
   Audio Gadget:[M]
   MIDI Gadget:[M]
   Printer Gadget:[M]
   USB Webcam Gadget:[M]
  ・MMC/SD/SDIO card support
   SDHCI support on the platform specific bus:[*]
   SDHCI support on Samsung S3C SoC
   SDHCI DMA support on S3C SDHCI
・Kernel hacking
 Detect Hard and Soft Lockups[*]
 Detect Hung Tasks:[*]
 Verbose BUG() reporting (adds 70K):[ ]

1つ1つ設定を追いかけていったらKernelの仕組みがほんのり味わえた気がした。

2010年11月22日月曜日

django+Apache+sqliteでエラーが出た『unable to open database file』

エラーの内容どおり、ApacheでDjangoで使うDBが開く事が出来ないというエラー。
Linuxにはファイルやフォルダに権限が設定されているので、
Apacheが読み書きできるように権限を与える必要がある。

ちゃんとDB用フォルダを作るべきだけど、説明用に簡略化

$ cd /var/www/mysite/
$ chmod 777 mysite.db


参照URL:
NewbieMistakes - Django - Trac

debian環境でdjango用のApacheサーバ設定をする

libapache2_mod_pythonが既にインストールされていて、
mod_enablesにモジュールがリンクされている前提。

1.ページが見れるように設定する
以下のファイルを編集し、
virtualhostタグ内にLocationタグを追加する。

$vim /etc/apache2/site-enables/000-default

<VirtualHost *:80>
...

    <Location "/mysite">
        SetHandler python-program
        PythonHandler django.core.handlers.modpython
        SetEnv DJANGO_SETTINGS_MODULE mysite.settings
        PythonOption django.root /mysite
        PythonDebug On
        PythonPath "['/var/www'] + sys.path"
    </Location>
</VirtualHost>

上の設定は、
「/var/www/mysite」フォルダにDjangoプロジェクト一式が入っている状態で、

http://127.0.0.1/mysite/
にアクセスすると表示される設定になっている。

---
Admin管理者用ページもApacheで行うなら、このままだと
スタイルシートやテンプレート関係が全滅になる。
Adminページのソースを見るとドキュメントルート下のMediaディレクトリにアクセスしているので、
LocationタグでMediaを設定してあげれば良いので、

<VirtualHost *:80>
...
</VirtualHost>
<Location "/media">
    SetHandler None
</Location>

これでMediaディレクトリの用意は整えた。

次は中身を入れればいいので

まるごとコピー
$ mkdir /var/www/media/
$ cp -Rp /usr/lib/python2.5/site-packages/django/contrib/admin/media/* /var/www/media/

シンボリックリンク(ショートカット)でもおk。
$ cd /var/www
$ ls -s /usr/lib/python2.5/site-packages/django/contrib/admin/media media

$ /etc/init.d/apache2 restart
アパッチ再起動してAdminページを開いてみる。

Apacheでこんなエラーが出た「apache2: Could not reliably determine the server's fully qualified domain name」

# /etc/init.d/apache2 restart
Restarting web server: apache2apache2: apr_sockaddr_info_get() failed for mini2440
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
... waiting .apache2: apr_sockaddr_info_get() failed for mini2440
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName

問題の意味は、127.0.0.1時のドメイン名がうまく取れなかったという話。
ならばHostsで127.0.0.1時のドメイン名を設定して、apacheの設定にサーバー名を教えてあげれば良い。

解決方法は以下のとおり。

$vim /etc/hosts
---
127.0.0.1 mini2440 localhost.localdomain localhost
---

$vim /etc/apache2/httpd.conf
---
ServerName mini2440:80
---

mini2440のところは統一しておく。

[ubuntu]apache2でmod_pythonを使う

Synapticでlibapache2-mod_pythonを入れただけの状態だとMod_Pythonは
「利用可能」だけど「使用できない状態」になっている。

これをApacheに設定に説明を置き換えると、

「/etc/apache2/mods-available」に「python.load」はあるけど
「/etc/apache2/mods-enabled」に「python.load」がないということ。

つまり他のモジュールと同様にmods-enabledフォルダ内にリンクを入れてあげればいいので、

$ cd /etc/apache2/mods-enabled
$ sudo ln -s ../mods-available/python.load ./python.load
$ sudo /etc/init.d/apache2 restart

これで使用可能になる。

2010年11月19日金曜日

ログイン後にプログラム起動させる方法

ホームディレクトリに.bash_profileに起動させたいプログラムを書く。

$ ~/.bash_profile


Xウィンドウ起動させたいなら一番最後に
startx

を入れる

Python + Webkit でブラウザを作る

スタートアップにブラウザnetsurfやaroraをフルスクリーン起動してブラウザOSぽいものが
作れるけど、ツールバーなども表示されてしまう。
そこでWebkitを使って自分でシンプルブラウザを作ってしまえばいいと思って書いてみた。

1.インストール
apt-get install python gtkmozembed

2.プログラム作成
#!/usr/bin/env python

import pygtk
import gtk
import gtk.gdk
import gtk.glade
import gtkmozembed

win = gtk.Window()
browser = gtkmozembed.MozEmbed()
win.add(browser)
win.show_all()

gtk.main()

Pythonラクでいいなー。

参考サイト:
・リファレンス
http://www.pygtk.org/pygtkmozembed/class-gtkmozembed.html

・他のWebkit
http://code.google.com/p/pywebkitgtk/

Mini2440にDebian(Lenny)をインストールする。(完全版)

DebootStrapを使ってDebianインストールの最終版が出来たので乗せておく。
今回はMini2440ボード使用した場合だけど、他のボードも
u-bootを使ってSDカードによる起動のであれば同じ方法で出来ると思う。

インストールする流れは3ステップ。
準備として、
SDカードのパーティション設定(やり方は過去記事参照)
 SDB1:Kernel用領域
 SDB2:Rootfs用領域
 SDB3:Swap用領域



1.Ubuntu上でDebian(Lenny)のDebootstrapインストール
sudo mount /dev/sdb2 /mnt/arm
sudo mount /mnt/arm/boot
sudo mount /dev/sdb1 /mnt/arm/boot
sudo debootstrap --arch=armel --foreign lenny /mnt/arm http://ftp.de.debian.org/debian
sudo cp -Rp ~/emv/kernel/kernel-modules/lib/* /mnt/arm/lib/
sudo cp ~/emv/kernel/mini2440/uImage /mnt/arm/boot/
cd ~/
sudo umount /mnt/arm/boot /mnt/arm

2.Mini2440にSDカードを入れ、Debootstrap起動
Mini2440起動してターミナル上で作業を行う。

・u-boot設定(Mini2440+T35液晶使用の場合)
setenv bootcmd 'mmcinit ; fatload mmc 0:1 0x31000000 uimage ; bootm 0x31000000'
setenv bootargs 'console=ttySAC0,115200n8 rootdelay=3 mini2440=3tb root=/dev/mmcblk0p2 rw rootfstype=ext3 rootwait'
saveenv
setenv bootargs 'console=ttySAC0,115200n8 noinitrd root=/dev/mmcblk0p2 rootwait=4 rw ip=dhcp init=/bin/sh'
boot
---
(追記)
パーティションを1つにまとめたい時はext3フォーマットして
setenv bootcmd 'mmcinit ; ext2load mmc 0:1 0x31000000 /boot/uImage ; bootm 0x31000000'
setenv bootargs 'console=ttySAC0,115200n8 rootdelay=3 mini2440=3tb root=/dev/mmcblk0p1 rw rootfstype=ext3 rootwait'
saveenv
setenv bootargs 'console=ttySAC0,115200n8 noinitrd root=/dev/mmcblk0p1 rootwait=4 rw ip=dhcp init=/bin/sh'
boot

・ブートし終わったら、
mount /proc /proc -t proc
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
/debootstrap/debootstrap --second-stage
40分くらいまってインストール完了。

3.最後に初期設定を行う。
(Swap有効にする場合)
mkswap /dev/mmcblk0p3
swapon /dev/mmcblk0p3
---
mknod dev/ttySAC0 c 204 64
printf "ttySAC0" >> /etc/securetty
printf "T0:123:respawn:/sbin/getty 115200 ttySAC0\n" >> /etc/inittab
printf "auto lo\niface lo inet loopback\n" > /etc/network/interfaces
printf "auto eth0\niface eth0 inet dhcp\n" >> /etc/network/interfaces
printf "nameserver 192.168.1.1" > /etc/resolv.conf
printf "proc /proc proc none 0 0" > /etc/fstab
printf "mini2440" > /etc/hostname
printf '127.0.0.1 mini2440 localhost.localdomain localhost' > /etc/hosts
printf 'deb http://ftp.jp.debian.org/debian lenny main contrib non-free' > /etc/apt/sources.list
4.Xインストール
apt-get install hal xorg xserver-xorg-input-evtouch
・タッチパネル設定
cd /usr/lib/xf86-input-evtouch/
mini2440:/usr/lib/xf86-input-evtouch# cp /usr/share/xf86-input-evtouch/empty_curssor.xbm /
mini2440:/usr/lib/xf86-input-evtouch# ./calibrate.sh
設定ファイルが生成されたものをXConfに書く。
・XConf設定
vim /etc/X11/xorg.conf

これでインストール完了。

2010年11月18日木曜日

Pythonで最小2乗法を使う

Pythonならライブラリを使うだけでn次方程式の解を計算できる。

#!/usr/bin/python
# codin: UTF-8

#プロット点を出力
t = [  0,  0.3,  0.8,  1.1,  1.6,  2.3]
y = [0.6, 0.67, 1.01, 1.35, 1.47, 1.25]
plot(t,y,'o')

# y = a*x^2 + b*x^1 + cの解を求める
(a, b, c) = polyfit(t, y, 2)
print "Y=(%f * X^2) + (%f * X^1) + %f" % (a, b, c)

#最小二乗法のグラフを出力
tx = []
ty = []
for xx in range(0, 300, 1):
    v = float(xx) / 100
    tx.append(v)
    ty.append( (a*v*v) + (b*v) + c )
plot(tx,ty,'-')
show()

掃出し法や連立方程式を解く行列式のプログラムを実装しなくていいし、すごく便利。
これにロバスト法で、誤差の大きい入力データの仕分けが出来たら実用的だよなあ。

「corrupted filesystem tarfile - corrupted package archive」が出る

アップグレードしている最中にこんなエラーが出た。

$ aptitude upgrade
...

Preparing to replace coreutils 6.10-6 (using .../coreutils_8.5-1_armel.deb) ...
Unpacking replacement coreutils ...
dpkg: error processing /var/cache/apt/archives/coreutils_8.5-1_armel.deb (--unpack):
 corrupted filesystem tarfile - corrupted package archive
configured to not write apport reports
                                      dpkg-deb: subprocess paste killed by signal (Broken pipe)
Errors were encountered while processing:
 /var/cache/apt/archives/coreutils_8.5-1_armel.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
A package failed to install.  Trying to recover:

corrupted filesystem tarfile - corrupted package archive

ログを見てみると、coreutils_8.5-1_armel.debファイルをtar解凍中にエラーが出たらしい。

一度そのファイルを削除してもう一度アップデートしてみる。

$ rm /var/cache/apt/archives/coreutils_8.5-1_armel.deb
$ aptitude upgrade

エラーが解消された。

2010年11月17日水曜日

PythonでCSVファイルを読み込む

PythonでCSVファイルを読み込むプログラムを書いてみた。
区切り文字はデミリッターで設定する。(ソースはタブ区切り)

#!/usr/bin/python
# coding: UTF-8

import csv

filename = "table01.csv"
csvfile = open(filename)
for row in csv.reader(csvfile, delimiter = '\t'):
 print row
 for elem in row:
  print elem,
 print

csvfile.close()

今までC#でやってたけど、

TextFieldParser parser = new TextFieldParser("text.csv", System.Text.Encoding.GetEncoding("Shift_JIS"));

    using (parser) {
      parser.TextFieldType = FieldType.Delimited;
      parser.SetDelimiters("\t");

      while (!parser.EndOfData) {
        string[] row = parser.ReadFields();

        foreach (string field in row) {
          string f = field;
          Console.Write(f + "\t"); // TAB区切りで出力
        }
        Console.WriteLine();
      }

やっぱスクリプト言語がいいなー。

パッチの作り方、当て方

パッチ作成:diffコマンド
パッチ当て:patchコマンド

・ファイル単位
$ diff -c <元ファイル名> <修正後ファイル名> > <パッチファイル>
$ patch < <パッチファイル>


・ディレクトリ単位:
$ diff -crN <元フォルダ> <修正後フォルダ> > <パッチファイル>
$ patch -p0 -E < <パッチファイル>


参考URL
http://linux.blog.kaone.net/Entry/13/

2010年11月16日火曜日

PythonでOpenCVを使ってみた2

コンソールを立ち上げ、現在の環境で動作するかテストしてみた。

http://opencv.willowgarage.com/documentation/python/cookbook.html

$ python
Python 2.6.6 (r266:84292, Sep 15 2010, 15:52:39) 
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv
>>> im = cv.LoadImageM("foo.jpg")
>>> print type(im)
<type 'cv.cvmat'>
>>> cv.SaveImage("test.png", im)
>>> 

一発でインストールできるDebootstrap

mini2440環境下でdebootstrapがすんなり入って使えるものをメモ。

○debian
>lenny
 OK。

>lenny->squeeze
 アップグレード手順がある。(依存関係があって、手順を踏まないといけない)

>squueze
 起動NG。(要調査)

○emdebian
>lenny
 OK。

>lenny->squeeze
 OK。

>squueze
 起動NG。(要調査)

結論:
現状Lennyが一番安定している。

Bloggerにソースコードをきれいに張る

導入は簡単で、
FaziBear's Blogger Widgets

上記URL先に飛んでAdd to Bloggerするとガジェット追加される。

使い方はソースコードをタグで囲む。

<pre name="code" class="c">
int main(void)
{
printf("hello\n");

return 0;
}
</pre>



int main(void)
{
    printf("hello\n");

    return 0;
}

こんな感じになる。

debianとubuntu

新しいものを使うならUbuntu、
バージョンが古いけど安定に運用するならDebian
という感じらしい。
もちろんDebianにも新しいもので構成されたsidパッケージもあるけど。

mini2440で最新Kernelを使う

新しいカーネルを使いたくなって色々調べてみた。

1.まず、今現在のmini2440ターゲットでビルド成功してるか確認してみる。
http://armlinux.simtec.co.uk/kautobuild/mini2440_defconfig.html

2.新Kernelについて話題の上がっているスレッドに
Mini2440用のパッチ1~11まで抜き出した添付ファイルがあるので眺めてみる。
http://www.friendlyarm.net/forum/topic/1094

(何箇所か重複してる箇所はあるので注意)
http://lkml.org/lkml/2010/11/8/121
http://lkml.org/lkml/2010/11/8/114
http://lkml.org/lkml/2010/11/8/106
http://lists.infradead.org/pipermail/linux-arm-kernel/2010-November/030950.html
http://lists.infradead.org/pipermail/linux-arm-kernel/2010-November/030848.html
http://lists.infradead.org/pipermail/linux-arm-kernel/2010-November/030861.html

---
0001-S3C-Add-a-flag-to-allow-leds-to-start-on.patch
0002-MINI2440-Enable-the-backlight-LED-earlier-at-boot-ti.patch
0003-920T-Use-specific-920t-mtune.patch
0004-S3C-Backported-the-s3c2410-touchscreen-from-openmoko.patch
0005-S3C-Backported-openmoko-s-touchscreen-filters.patch
0006-MINI2440-Updated-machine-defconfig-for-2.6.32.patch
0007-MINI2440-Added-missing-config-flag.patch
0008-MINI2440-Added-new-T35-QVGA-and-Innolux-5.6-VGA-TFTs.patch
0009-MINI2440-Rename-the-SoC-tty-names.patch
0010-MINI2440-Add-touchscreen-support.patch
0011-MINI2440-remove-__initdata-from-some-structs.patch
---

3.パッチ当て
http://www.kernel.org/pub/linux/kernel/v2.6/testing/ChangeLog-2.6.37-rc1
これを見る限りメインラインにもMini2440用パッチが何かしら入っているので、
1つずつ自分で当てていく。
・パッチメモ
マージする:1~3
(OpenMokoのライセンス知らないので)マージしない:4~5
パッチ済:7
マージする:8~11


4.ビルド
$ CROSS_COMPILE=arm-linux- ARCH=arm make O=../kernel-bin/ mini2440_defconfig
$ CROSS_COMPILE=arm-linux- ARCH=arm make O=../kernel-bin/ menuconfig
$ CROSS_COMPILE=arm-linux- ARCH=arm make O=../kernel-bin/
$ ~/emv/uboot/mini2440/tools/mkimage -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008000 -d ../kernel-bin/arch/arm/boot/zImage uImage
$ CROSS_COMPILE=arm-linux- ARCH=arm make O=../kernel-bin/ INSTALL_MOD_PATH=../kernel-modules modules_install

Kernelイメージ作成完了。

確認したKernelバージョンは2.6.36、2.6.37-rc1

-----
追記
2.6.37RC2が出たので早速ビルド。
細かいパッチはタッチパネル以外
1~3、9、11と、メインラインに報告済みパッチを当てた。
当たっていないパッチは4~6,10で6はdefconfigなのであまり気にしなくておk。

今回あてたパッチ内容はこんな感じ。
・T35液晶と5.6インチ液晶対応
・起動時バックライトON
・シリアルコンソールのデバイス名変更(ttySAC)
・__initdataの削除
(タッチパネル対応パッチは除いてある)

diff -crN ./linux-2.6.37-rc2-orig/arch/arm/Makefile ./linux-2.6.37-rc2/arch/arm/Makefile
*** ./linux-2.6.37-rc2-orig/arch/arm/Makefile 2010-11-15 18:31:02.000000000 -0800
--- ./linux-2.6.37-rc2/arch/arm/Makefile 2010-11-16 23:52:28.904009998 -0800
***************
*** 78,84 ****
  tune-$(CONFIG_CPU_ARM9TDMI) :=-mtune=arm9tdmi
  tune-$(CONFIG_CPU_ARM940T) :=-mtune=arm9tdmi
  tune-$(CONFIG_CPU_ARM946E) :=$(call cc-option,-mtune=arm9e,-mtune=arm9tdmi)
! tune-$(CONFIG_CPU_ARM920T) :=-mtune=arm9tdmi
  tune-$(CONFIG_CPU_ARM922T) :=-mtune=arm9tdmi
  tune-$(CONFIG_CPU_ARM925T) :=-mtune=arm9tdmi
  tune-$(CONFIG_CPU_ARM926T) :=-mtune=arm9tdmi
--- 78,84 ----
  tune-$(CONFIG_CPU_ARM9TDMI) :=-mtune=arm9tdmi
  tune-$(CONFIG_CPU_ARM940T) :=-mtune=arm9tdmi
  tune-$(CONFIG_CPU_ARM946E) :=$(call cc-option,-mtune=arm9e,-mtune=arm9tdmi)
! tune-$(CONFIG_CPU_ARM920T) :=-mtune=arm920t
  tune-$(CONFIG_CPU_ARM922T) :=-mtune=arm9tdmi
  tune-$(CONFIG_CPU_ARM925T) :=-mtune=arm9tdmi
  tune-$(CONFIG_CPU_ARM926T) :=-mtune=arm9tdmi
diff -crN ./linux-2.6.37-rc2-orig/arch/arm/mach-s3c2410/include/mach/leds-gpio.h ./linux-2.6.37-rc2/arch/arm/mach-s3c2410/include/mach/leds-gpio.h
*** ./linux-2.6.37-rc2-orig/arch/arm/mach-s3c2410/include/mach/leds-gpio.h 2010-11-15 18:31:02.000000000 -0800
--- ./linux-2.6.37-rc2/arch/arm/mach-s3c2410/include/mach/leds-gpio.h 2010-11-16 23:58:02.868010000 -0800
***************
*** 16,21 ****
--- 16,22 ----
  
  #define S3C24XX_LEDF_ACTLOW (1<<0)  /* LED is on when GPIO low */
  #define S3C24XX_LEDF_TRISTATE (1<<1)  /* tristate to turn off */
+ #define S3C24XX_LEDF_STARTON (1<<2)  /* Initialise 'on' */
  
  struct s3c24xx_led_platdata {
   unsigned int   gpio;
diff -crN ./linux-2.6.37-rc2-orig/arch/arm/mach-s3c2440/mach-mini2440.c ./linux-2.6.37-rc2/arch/arm/mach-s3c2440/mach-mini2440.c
*** ./linux-2.6.37-rc2-orig/arch/arm/mach-s3c2440/mach-mini2440.c 2010-11-15 18:31:02.000000000 -0800
--- ./linux-2.6.37-rc2/arch/arm/mach-s3c2440/mach-mini2440.c 2010-11-17 02:01:55.304009999 -0800
***************
*** 47,52 ****
--- 47,53 ----
  #include <plat/iic.h>
  #include <plat/mci.h>
  #include <plat/udc.h>
+ #include <plat/ts.h>
  
  #include <linux/mtd/mtd.h>
  #include <linux/mtd/nand.h>
***************
*** 62,68 ****
  
  #define MACH_MINI2440_DM9K_BASE (S3C2410_CS4 + 0x300)
  
! static struct map_desc mini2440_iodesc[] __initdata = {
   /* nothing to declare, move along */
  };
  
--- 63,69 ----
  
  #define MACH_MINI2440_DM9K_BASE (S3C2410_CS4 + 0x300)
  
! static struct map_desc mini2440_iodesc[] = {
   /* nothing to declare, move along */
  };
  
***************
*** 71,77 ****
  #define UFCON S3C2410_UFCON_RXTRIG8 | S3C2410_UFCON_FIFOMODE
  
  
! static struct s3c2410_uartcfg mini2440_uartcfgs[] __initdata = {
   [0] = {
    .hwport      = 0,
    .flags      = 0,
--- 72,78 ----
  #define UFCON S3C2410_UFCON_RXTRIG8 | S3C2410_UFCON_FIFOMODE
  
  
! static struct s3c2410_uartcfg mini2440_uartcfgs[] = {
   [0] = {
    .hwport      = 0,
    .flags      = 0,
***************
*** 115,121 ****
   }
  }
  
! static struct s3c2410_udc_mach_info mini2440_udc_cfg __initdata = {
   .udc_command  = mini2440_udc_pullup,
  };
  
--- 116,122 ----
   }
  }
  
! static struct s3c2410_udc_mach_info mini2440_udc_cfg = {
   .udc_command  = mini2440_udc_pullup,
  };
  
***************
*** 185,190 ****
--- 186,215 ----
    .lcdcon5 = (S3C2410_LCDCON5_FRM565 |
         S3C2410_LCDCON5_HWSWP),
   },
+  [3] = { /* mini2440 + 3.5" TFT + TS -- New model as Nov 2009 "T35" */  
+   _LCD_DECLARE(  
+    7,   /* The 3.5 is quite fast */  
+    240, 21, 25, 6,  /* x timing */  
+    320, 2, 4, 2,  /* y timing */  
+    40),   /* refresh rate */  
+   .lcdcon5 = (S3C2410_LCDCON5_FRM565 |  
+     S3C2410_LCDCON5_INVVLINE |  
+     S3C2410_LCDCON5_INVVFRAME |  
+     S3C2410_LCDCON5_INVVDEN |  
+     S3C2410_LCDCON5_PWREN),  
+  },  
+  [4] = { /* mini2440 + 5.6" TFT + touchscreen -- Innolux AT056TN52 */  
+   /* be sure the "power" jumper is set accordingly ! */  
+   _LCD_DECLARE(  
+    10,   /* the 5.3" runs slower */  
+    640, 41, 68, 22, /* x timing */  
+    480, 26, 6, 2,  /* y timing */  
+    40),   /* refresh rate */  
+   .lcdcon5 = (S3C2410_LCDCON5_FRM565 |  
+     S3C2410_LCDCON5_INVVLINE |  
+     S3C2410_LCDCON5_INVVFRAME |  
+     S3C2410_LCDCON5_PWREN),  
+  },  
  };
  
  /* todo - put into gpio header */
***************
*** 234,240 ****
  
  /* MMC/SD  */
  
! static struct s3c24xx_mci_pdata mini2440_mmc_cfg __initdata = {
     .gpio_detect   = S3C2410_GPG(8),
     .gpio_wprotect = S3C2410_GPH(8),
     .set_power     = NULL,
--- 259,265 ----
  
  /* MMC/SD  */
  
! static struct s3c24xx_mci_pdata mini2440_mmc_cfg = {
     .gpio_detect   = S3C2410_GPG(8),
     .gpio_wprotect = S3C2410_GPH(8),
     .set_power     = NULL,
***************
*** 243,249 ****
  
  /* NAND Flash on MINI2440 board */
  
! static struct mtd_partition mini2440_default_nand_part[] __initdata = {
   [0] = {
    .name = "u-boot",
    .size = SZ_256K,
--- 268,274 ----
  
  /* NAND Flash on MINI2440 board */
  
! static struct mtd_partition mini2440_default_nand_part[] = {
   [0] = {
    .name = "u-boot",
    .size = SZ_256K,
***************
*** 268,274 ****
   },
  };
  
! static struct s3c2410_nand_set mini2440_nand_sets[] __initdata = {
   [0] = {
    .name  = "nand",
    .nr_chips = 1,
--- 293,299 ----
   },
  };
  
! static struct s3c2410_nand_set mini2440_nand_sets[] = {
   [0] = {
    .name  = "nand",
    .nr_chips = 1,
***************
*** 431,436 ****
--- 456,462 ----
  static struct s3c24xx_led_platdata mini2440_led_backlight_pdata = {
   .name  = "backlight",
   .gpio  = S3C2410_GPG(4),
+  .flags  = S3C24XX_LEDF_STARTON,
   .def_trigger = "backlight",
  };
  
***************
*** 499,512 ****
   .page_size = 16,
  };
  
! static struct i2c_board_info mini2440_i2c_devs[] __initdata = {
   {
    I2C_BOARD_INFO("24c08", 0x50),
    .platform_data = &at24c08,
   },
  };
  
! static struct platform_device *mini2440_devices[] __initdata = {
   &s3c_device_ohci,
   &s3c_device_wdt,
   &s3c_device_i2c0,
--- 525,543 ----
   .page_size = 16,
  };
  
! static struct i2c_board_info mini2440_i2c_devs[] = {
   {
    I2C_BOARD_INFO("24c08", 0x50),
    .platform_data = &at24c08,
   },
  };
  
! static struct s3c2410_ts_mach_info mini2440_ts_cfg = {  
!  .delay = 10000,  
!  .presc = 0xff, /* slow as we can go */  
! };  
! 
! static struct platform_device *mini2440_devices[] = {
   &s3c_device_ohci,
   &s3c_device_wdt,
   &s3c_device_i2c0,
***************
*** 522,527 ****
--- 553,559 ----
   &s3c_device_sdi,
   &s3c_device_iis,
   &mini2440_audio,
+  &s3c_device_adc,
  };
  
  static void __init mini2440_map_io(void)
***************
*** 605,612 ****
     features->done |= FEATURE_BACKLIGHT;
     break;
    case 't':
!    printk(KERN_INFO "MINI2440: '%c' ignored, "
!     "touchscreen not compiled in\n", f);
     break;
    case 'c':
     if (features->done & FEATURE_CAMERA)
--- 637,649 ----
     features->done |= FEATURE_BACKLIGHT;
     break;
    case 't':
!       if (features->done & FEATURE_TOUCH)  
!         printk(KERN_INFO "MINI2440: '%c' ignored, "  
!           "touchscreen already set\n", f);  
!       else  
!         features->optional[features->count++] =  
!            &s3c_device_ts;  
!       features->done |= FEATURE_TOUCH; 
     break;
    case 'c':
     if (features->done & FEATURE_CAMERA)
***************
*** 677,682 ****
--- 714,720 ----
   s3c24xx_mci_set_platdata(&mini2440_mmc_cfg);
   s3c_nand_set_platdata(&mini2440_nand_info);
   s3c_i2c0_set_platdata(NULL);
+  s3c24xx_ts_set_platdata(&mini2440_ts_cfg);
  
   i2c_register_board_info(0, mini2440_i2c_devs,
      ARRAY_SIZE(mini2440_i2c_devs));
diff -crN ./linux-2.6.37-rc2-orig/drivers/leds/leds-s3c24xx.c ./linux-2.6.37-rc2/drivers/leds/leds-s3c24xx.c
*** ./linux-2.6.37-rc2-orig/drivers/leds/leds-s3c24xx.c 2010-11-15 18:31:02.000000000 -0800
--- ./linux-2.6.37-rc2/drivers/leds/leds-s3c24xx.c 2010-11-16 23:51:47.716010000 -0800
***************
*** 85,90 ****
--- 85,91 ----
   led->cdev.default_trigger = pdata->def_trigger;
   led->cdev.name = pdata->name;
   led->cdev.flags |= LED_CORE_SUSPENDRESUME;
+  led->cdev.brightness = pdata->flags & S3C24XX_LEDF_STARTON ? 1 : 0;
  
   led->pdata = pdata;
  
***************
*** 95,101 ****
    s3c2410_gpio_cfgpin(pdata->gpio, S3C2410_GPIO_INPUT);
   } else {
    s3c2410_gpio_pullup(pdata->gpio, 0);
!   s3c2410_gpio_setpin(pdata->gpio, 0);
    s3c2410_gpio_cfgpin(pdata->gpio, S3C2410_GPIO_OUTPUT);
   }
  
--- 96,103 ----
    s3c2410_gpio_cfgpin(pdata->gpio, S3C2410_GPIO_INPUT);
   } else {
    s3c2410_gpio_pullup(pdata->gpio, 0);
!   /* backlight led needs to be turned on early on */
!   s3c2410_gpio_setpin(pdata->gpio, led->cdev.brightness);
    s3c2410_gpio_cfgpin(pdata->gpio, S3C2410_GPIO_OUTPUT);
   }
  
diff -crN ./linux-2.6.37-rc2-orig/drivers/serial/samsung.c ./linux-2.6.37-rc2/drivers/serial/samsung.c
*** ./linux-2.6.37-rc2-orig/drivers/serial/samsung.c 2010-11-15 18:31:02.000000000 -0800
--- ./linux-2.6.37-rc2/drivers/serial/samsung.c 2010-11-17 01:54:39.248009997 -0800
***************
*** 883,889 ****
  
  static struct uart_driver s3c24xx_uart_drv = {
   .owner  = THIS_MODULE,
!  .dev_name = "s3c2410_serial",
   .nr  = CONFIG_SERIAL_SAMSUNG_UARTS,
   .cons  = S3C24XX_SERIAL_CONSOLE,
   .driver_name = S3C24XX_SERIAL_NAME,
--- 883,889 ----
  
  static struct uart_driver s3c24xx_uart_drv = {
   .owner  = THIS_MODULE,
!  .dev_name = S3C24XX_SERIAL_NAME,
   .nr  = CONFIG_SERIAL_SAMSUNG_UARTS,
   .cons  = S3C24XX_SERIAL_CONSOLE,
   .driver_name = S3C24XX_SERIAL_NAME,
diff -crN ./linux-2.6.37-rc2-orig/sound/soc/s3c24xx/Kconfig ./linux-2.6.37-rc2/sound/soc/s3c24xx/Kconfig
*** ./linux-2.6.37-rc2-orig/sound/soc/s3c24xx/Kconfig 2010-11-15 18:31:02.000000000 -0800
--- ./linux-2.6.37-rc2/sound/soc/s3c24xx/Kconfig 2010-11-16 17:32:14.572010082 -0800
***************
*** 2,7 ****
--- 2,8 ----
   tristate "SoC Audio for the Samsung S3CXXXX chips"
   depends on ARCH_S3C2410 || ARCH_S3C64XX || ARCH_S5PC100 || ARCH_S5PV210
   select S3C64XX_DMA if ARCH_S3C64XX
+  select S3C2410_DMA if ARCH_S3C2410
   help
     Say Y or M if you want to add support for codecs attached to
     the S3C24XX AC97 or I2S interfaces. You will also need to

2010年11月14日日曜日

ext3ファイルシステムの修復

# e2fsck /dev/sdb2

Tarを使ってシステムバックアップ

バックアップしたいルートに移動して圧縮実行。
$ cd /mnt/arm
$ tar cvpzf ~/backup.tgz --exclude=./proc --exclude=./lost+found --exclude=./mnt --exclude=./sys --exclude=./media ./ 

復元したいルートに移動して解凍実行
cd /mnt/arm
tar xvpfz backup.tgz -C ./
mkdir proc
mkdir mnt
mkdir sys
mkdir media

参照URL
https://wiki.ubuntulinux.jp/UbuntuTips/Others/BackUpAndRestore
http://blog.dc-d.jp/?p=600

2010年11月11日木曜日

debian(lenny)にupstartを入れる。

次期リリースには取り入れられるらしいので、
そっちにアップグレードしてからインストール。

・lennyからsqueezeにアップグレード
vim /etc/apt/sources.list
→lennyからsqueezeに変更。

# aptitude update
# aptitude install aptitude
# aptitude upgrade
# aptitude dist-upgrade

・upstartを入れる
# aptitude remove sysvinit
# aptitude install upstart

内容: Slicehost Forum - Upstart on Debian LennyGoogle サイドウィキで表示

Mini2440のバッドノウハウ

今までMini2440を触ってきて蓄積した解決策を
忘れないようにメモしておく。


・タッチパネルが勝手に動く。
FriendlyARMと書かれた白い枠にバリがあってそれが液晶画面を押してるのが原因。
4箇所ネジを取って白い枠を外すと、裏側にバリがあるのでカッターで切り取る。


・オーバークロック。
u-bootを立ち上げて
---
MINI2440 # s3c24xx speed set 444
MINI2440 # saveenv
---
saveenv後にbootコマンドで起動すると、SDカードマウント失敗する。
なので電源切って再起動すべし。

あとおおよそのクロック設定は4倍*HCLK
4 * 101 = 405 (default)
4 * 105 = 420
4 * 111 = 444
4 * 112 = 451


・LennyからSqueezeへアップグレード
/etc/apt/source.listで
lennyからsqueezeに変更して
aptitude update
aptitude upgrade

再起動したら (none):~# になった。
rootでログインして、
$ which sh
してみるとリンク先のdashが無いと言われるので
これをbashに戻しておく。
$ rm /bin/sh
$ ln -s bash sh
(dashインストール後にdashに変更しても良い)


・ブート中にcron起動するあたりで止まってしまう。
vim /var/log/syslog
の一番最後を見てみる

>ttyが正常起動できていない場合
/dev/ttySAC0

/etx/inittabをチェックしてみて
T0:123:respawn:/sbin/getty 115200 ttySAC0
があるの事を確認する。

>dbusが接続できない場合
upstasrtインストールしたときに出る。
aptitudeも使えなくなるので現状手詰まり。。


・upgrade中にエラーが発生した。
BEGIN failed--compilation aborted at /usr/sbin/update-alternatives line 16.
dpkg: error processing util-linux (--configure):
subprocess installed post-installation script returned error exit status 2
dpkg: dependency problems prevent configuration of udev:
udev depends on util-linux (>= 2.16); however:
Package util-linux is not configured yet.

こんな感じのエラーが出た場合は
$ aptitudeを実行して
エラーが出るパターン。
今回の例はperlモジュールが無いよ、というエラーだったので
さっそくインストールしたら直った。
$ aptitude install perl5 libdpkg-perl

念のためpythonも
$ aptitude install python2.6 python2.6-minimal

[追記2010.12.10]
もしインストールがうまくいかない場合は、手動でパッケージをインストールを行う。
$ cd /var/cache/apt/archives
$ apt-get install -d libdpkg-perl
$ dpkg --install bzip2_1.0.5-6_armel.deb
$ dpkg --install libdpkg-perl_1.15.8.5_all.deb
$ dpkg --configure -a
---

・ターミナル上でrootログインすると「Login incorrect」と表示してログインできない。
/etc/securrety

ttySAC0

を追加する。

・rootパスワード無しでログインしたい。
/etc/shadow
を開き
root:4hdks$dsb:...
上の部分を
root::
にする。


参照URL
http://groups.google.com/group/mini2440/browse_thread/thread/290ab830bd557196?fwc=1
http://forums.debian.net/viewtopic.php?f=17&t=53369&start=0

2010年11月9日火曜日

自動ログインする方法

②次に/etc/inittabを開き

1:2345:respawn:/sbin/mingetty tty1

を次のように変更

1:2345:respawn:/bin/login ユーザ名 /dev/tty1 2>/dev/tty1

内容:

"②次に/etc/inittabを開き 1:2345:respawn:/sbin/mingetty tty1 を次のように変更 1:2345:respawn:/bin/login ユーザ名 </dev/tty1 >/dev/tty1 2>/dev/tty1"
- LinuxGoogle サイドウィキで表示

Lenny環境でawesomeを入れてみる。

簡単に軽量デスクトップを構築が出来る。

1.インストール
$ apt-get install xorg hal awesome

2.起動
$ startx

Lenny環境でキーボードの設定をする。

キーボードをUS105から106-JPに変更

コンソールの設定を変更します。

# dpkg-reconfigure console-data

リストから

Select keymap from full list

を選択して次に出てきたリストから

pc / qwerty / Japanese / Standard /Standard

を選択します。最後まで行くと保存して終了します。

---
http://d.hatena.ne.jp/zep/20100403/1270267301

もし、console-dataが入ってない場合は、
apt-get install hal
すると一緒についてくる。

内容: debian squeeze/sid 最小構成からawesomeまで :: iBook G4 - 航海日誌 -319506.9 から ときどき - zepGoogle サイドウィキで表示

mini2440(T35液晶)でevtouchのキャリブレーション方法

ARMCPU(ARMv4)が載っているボードmini2440に付属している
タッチパネルの設定で正解を見つけたのでメモを残しておく。


/etc/X11/xorg.conf
----
section "ServerLayout"
Identifier "XFree86 Configured"
Screen 0 "Screen0" 0 0
InputDevice "Mouse0"
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Touchpad0" "CorePointer"
Option "OffTime" "10"
EndSection

Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
Option "XkbModel" "pc105"
EndSection

Section "InputDevice"
Identifier "Touchpad0"
Driver "evtouch"
Option "CorePointer" "true"
Option "SendCoreEvents" "true"
Option "Device" "/dev/input/event1"
Option "DeviceName" "touchscreen"
Option "Rotate" "CW"
"/etc/X11/xorg.conf" 81L, 2247C
section "ServerLayout"
Identifier "XFree86 Configured"
Screen 0 "Screen0" 0 0
InputDevice "Mouse0"
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Touchpad0" "CorePointer"
Option "OffTime" "10"
EndSection

Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
section "ServerLayout"
Identifier "XFree86 Configured"
Screen 0 "Screen0" 0 0
InputDevice "Mouse0"
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Touchpad0" "CorePointer"
Option "OffTime" "10"
EndSection

Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
Option "XkbModel" "pc105"
EndSection

Section "InputDevice"
Identifier "Touchpad0"
Driver "evtouch"
Option "CorePointer" "true"
Option "SendCoreEvents" "true"
Option "Device" "/dev/input/event1"
Option "DeviceName" "touchscreen"
Option "Rotate" "CW"
Option "MoveLimit" "10"
Option "Calibrate" "0"
Option "ReportingMode" "Raw"
Option "Emulate3Buttons"
Option "Emulate3Timeout" "50"
Option "MinX" "110"
Option "MinY" "107"
Option "MaxX" "899"
Option "MaxY" "916"
Option "x0" "4"
Option "y0" "2"
Option "x1" "0"
Option "y1" "5"
Option "x2" "-5"
Option "y2" "5"
Option "x3" "-26"
Option "y3" "0"
Option "x4" "1"
Option "y4" "0"
Option "x5" "-2"
Option "y5" "0"
Option "x6" "4"
Option "y6" "-5"
Option "x7" "2"
Option "y7" "-5"
Option "x8" "-3"
Option "y8" "-4"
EndSection

Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
EndSection

Section "Monitor"
Identifier "Monitor0"
ModelName "Monitor Model"
DisplaySize 120 160
# DisplaySize 240 320
EndSection

Section "Device"
Identifier "Card0"
Driver "fbdev"
Option "fbdev" "/dev/fb0"
EndSection

Section "Screen"
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
EndSection
----

ポイントは、
Option "Rotate" "CW"
を追加して画面を回転させているところ。

もし、キャリブレーションするなら赤いX印通りだとうまくいかない。
どうすればいいのかというと、X印の順を逆らって
「FriendlyARM」文字が下になるようにして

258
147
036
[FriendlyARM]


のように押すと正しい値でout.txtが出力される。
(X印の進行は2,5,8,1,4、、、6の順に進んでいく。)

知らないと嵌るので要注意。

2010年11月8日月曜日

Mini2440 ARMのDebian(Lenny)環境にXfceを入れる

公式ページ:http://pkg-xfce.alioth.debian.org/

aptitudeでインストール2つでおk。
$ aptitude update
$ aptitude install xfce4
$ aptitude install xfce4-goodies

2010年11月2日火曜日

Xwindowメモ

・xorg・・・Xシステム本体
・icewm・・・タスクバー
・arora・・・X用ブラウザ

インストールする方法。
$ apt-get install xorg icewm arora

Linux起動時のロゴを変える

カーネルをコンパイルする必要があるけど、やりたい人向け。

1.ダウンロード
<Synapticから>
・magiximage

<Webから>
・http://www.is.aist.go.jp/etlcdb/util/p2a.htm

2.ディレクトリに移動して、Logo.cがあるのを確認。
カーネルソースディレクトリ/drivers/video/logo/

3.ロゴにしたい画像(png形式)を持ってきて
$ convert -colors 224 new_logo.png new_logo.pnm
$ pnm2asc new_logo.pnm > drivers/video/logo/logo_new_clut224.ppm
(現在読み込んでる画像ファイル名と置き換えが一番ラク)

ソースをいじってやる場合は、下記サイトへ

参考URL
・http://pylone.jp/blog/tips_fblogo

Androider