2010년 2월 21일 일요일

MSI Wind U100 우분투 9.10 버전에서 화면 깜빡거림

http://linux.bitbaro.hu/en/2010/01/22/msi-wind-u100-and-ubuntu-9-10-karmic-koala/에 가서 gnome-power-manager 패치된 버전을 다운받아서 설치하고
synaptic 패키지 관리자를 실행하고, gnome-power-manager의 버전 업그레이드하는 것을 방지하기 위해서 gnome-power-manager 패키지를 버전잠금설정해 둔다.
나중에 gnome-power-manager의 버그가 수정되었을때는 다시 synaptic 패키지 관리자를 실행해서 gnome-power-manager에 설정되었던 버전잠금을 해제하고 gnome-power-manager를 업그레이드 하자

2010년 2월 20일 토요일

프로그래머의 자격

  • 시간 (time)
  • 인내 (patience)
  • 헌신 (devotion)
GTK+ and Glade3 GUI Programming Tutorial - Part 2를 봤더니.

이런 된장 무슨 수도자 같네.

2010년 2월 19일 금요일

Beagleboard에 (Android)안드로이드 설치하기


-->
출처(from):

http://code.google.com/p/rowboat/wiki/ConfigureAndBuild#Prepare_your_host_environment


Rowboat (Android for OMAP3)
Beagle 보드에 안드로이드 설치를 위한 설정

하드웨어

  • 보드(Beagle보드나 OMAP3EVM 보드)
  • 이더넷 환경과 시리얼 포트가 갖추어진 호스트 컴퓨터 (리눅스 우분투 8.x/9.04)
  • 시리얼 케이블
  • 파워 (5V)
  • USB 허브
  • USB 이더넷 아답터 (Beagle 보드를 사용할 경우)
  • USB 키보드와 마우스
  • 이더넷 크로스 케이블 혹은 이더넷 허브와 허브와 연결하는 케이블
  • SD카드나 MMC카드를 위한 카드리더
  • 4:3 혹은 16:9 배율의 출력이 가능한 DVI입력을 지원하는 모니터
  • HDMIDVI로 변경해주는 케이블 (Beagle 보드를 사용할 경우)

소프트웨어

  • DHCP 서버 설치하기
  • tftp 서버 설치하기(OMAP3EVM를 사용할 경우)
  • repo 도구 설치하기
  • 리눅스 환경 설정하기

필요한 패키지들

  • Git 1.5.4 나 가장 최근의 것 그리고 GNU Privacy Guard.
  • JDK 5.0과 업데이트 12나 그이상의 것. Java 6은 지원하지 않는다. (@override와 호완되지 않는다)
  • 이 밖에 flex, bison, gperf, libsdl-dev, libesd0-dev, libwxgtk2.6-dev(선택사항), build-essential, zip, curl, minicom, tftpd, uboot-mkimage등이 필요하다.

우분투 32비트 버전 사용자의 경우
$ sudo apt-get install git-core gnupg sun-java5-jdk flex bison gperf libsdl-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev minicom tftpd uboot-mkimage

우분투 Intrepid(8.10) 사용자의 경우 libreadline의 새로운 버전이 추가적으로 필요하다.

$ sudo apt-get install lib32readline5-dev

DSP 코어 사용자(?)이 경우 다음의 패키지가 필요하다

$ sudo apt-get install expect

내트워크 환경 설정하기

  • 호스트 즉, 우분투 시스템의 네트워크 아답터 설정하기
sudo ifconfig ethX 10.10.10.1 netmask 255.255.255.0 up

  • 보드와의 네트워크 환경을 위한 DHCP 서버 설정하기
; Example dhpd.conf
default-lease-time 600
max-lease-time 7200
subnet 10.10.10.0 netmask 255.255.255.0 {
range 10.10.10.2 10.10.10.10;

host beagleboard_rev_c3 {
hardware ethernet 00:80:C8:xx:xx:xx;
fixed-address 10.10.10.2;
}

host omap3evm_rev_d {
hardware ethernet 00:50:c2:xx:xx:xx;
fixed-address 10.10.10.3;
filename “evm/uImage”; ← this string actual for boot with tftp
}

  • TFTP 서버 설정하기

/etc/xinet.d/tftpd:
service tftp
{
protocol = udp
port = 69
socket_type = dgram
wait = yes
user = nobody
server = /user/sbin/in.tftpd
server_args = /tftpboot
disable = no
}

소스코드 점검하기

$ mkdir rowboat-android
$ cd worboat-android
$ repo init -u git://gitorious.org/rowboat/manifest.git
$ repo sync

rootfs 만들기

다음은 안드로이드 파일 시스템을 만드는 작업이다. 파일 시스템을 만들기 위해서, 여러분은 작업하고 있는 보드에 대한 정보를 알려주어야 한다. 아래와 같은 값으로 TARGET_PRODUCT 변수의 값을 설정하자.

  • beagleboard
  • omap3evm

또한, 여러분들이 추가적으로 단계별로 테스트하는 작업이 필요한 경우, TARGET_BUILD_VARIANT=tests로 변경하자. 그리고 여러분의 시스템이 멀티코어 시스템이라면 -j8 (혹은 코어와 시피유에 따라서 16)make 명령의 인자로 넘겨주어서 안드로이드 시스템을 만드는데 하나 이상의 코어를 사용하는 것도 가능하다. (역주: 컴파일 시간을 단축시키기위해서)

다음의 문장에서 우리는 OMAP3EVM 보드에 올라갈 단계별 테스트 패키지를 갖고 빌드 시간을 단축하기위한 16 쓰레드를 사용하는 안드로이드를 빌드 할 수 있다.
$ make TARGET_PRODUCT=omap3evm TARGET_BUILD_VARIANT=tests -j8

빌드 과정이 모두 끝나면, 여러분들은 다음의 과정을 통해서 rootfs을 생성할 수 있다.
$ cd out/target/product/omap3evm
$ mkdir android_rootfs
$ cp -r root/* android_rootfs
$ cp -r system android_rootfs
$ sudo ../../../../build/tools/mktarball.sh ../../../host/linux-x86/bin/fs_get_stats android_rootfs . rootfs rootfs.tar.bz2

커널 빌드 하기

다음은 여러분의 보드를 위한 커널을 빌드하는 과정이다. 다음의 과정에서 첫 번째 과정은 toolchains (컴파일 도구들) 을 설정하고, 세 번째 과정은 여러분의 보드에 맞는 configuration 을 설정하는 것이다. 여기에 여러분이 사용할 수 있는 config 파일들이 있다.
  • omap3_evm_android_defconfig 파일은 OMAP3EVM을 위한 커널 config 파일
  • omap3_beagle_android_defconfig 파일은 BeagleBoard를 위한 커널 config 파일

네번째 과정은 커널을 빌드하도록 명령하는 것이다. 여기서 보듯이 우리는 ARM에 대한 cross-toolchains을 이용해서 ARM 아키텍쳐에 맞는 빌드를 하도록 make명령을 내린다. 빌드된 결과물은 uImage이고, 다중 쓰레드를 이용한 빌드를 한다. (-j8):

$ cd
$ export PATH=${PWD}/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin;$PATH
$ cd kernel/
$ make ARCH=arm omap3_evm_android_defconfig
$ make ARCH=arm CROSS_COMPILE=arm-eabi- uImage -j8
$ cd ..



SD 카드 준비하기
SD/MMC 카드로 안드로이드 부팅을 하기 위해서, 여러분들은 다음과 같은 파티션을 만들어야 한다.

$ sudo fdisk /dev/
Command (m for help): p

Disk /dev/sdd: 1977 MB, 1977614336 bytes
64 heads, 63 sectors/track, 957 cylinders
Units = cylinders of 4032 * 512 = 2064384 bytes
Disk identifier: 0x00000000

Device Boot Start End Blocks Id System
/dev/sdd1 1 30 60448+ b W95 FAT32
/dev/sdd2 31 957 1868832 83 Linux

그리고 다음 명령을 이용해서 파티션을 포멧한다.

$ sudo mkfs.msdos /dev/sdd1
$ sudo mkfs.ext3 /dev/sdd2

위에서 생성한 커널 이미지 (예를 들면, uImage)가지고 W95 FAT32 파티션에 위치시키자.

$ sudo mkdir -p /mnt/fat32
$ sudo mount /dev/sdd1 /mnt/fat32
$ sudo cp kernel/arch/arm/boot/uImage /mnt/fat32

EXT3 파티션에다가는 안드로이드 시스템의 rootfs.tar.bz2를 압축해제한다:

$ sudo mkdir -p /mnt/ext3
$ sudo mount /dev/sdd2 /mnt/ext3
$ sudo tar jxfv out/target/product//rootfs.tar.bzw --numeric-owner -C /mnt/ext3


그리고 마지막으로

$ sync
$ sudo umount /mnt/fat32; sudo umount /mnt/ext3

작업 보드 설정하기

다음은 중요하게 점검해야하는 것들중 하나이다.

  • OMAP3EVM를 위한 U-Boot 버전이 2008.10(Jun 16 2009-18:54:50)이어야한다.
  • BeagleBoard를 위한 U-Boot 버번은 2009.08이어야 한다.

Beagleboard

Beagleboard# setenv bootcmd ‘mmc init; fatload mmc 0 84000000 uImage; bootm 84000000’
Beagleboard# setenv bootargs ‘mem=128M androidboot.console=ttyS2 console=tty0 console=ttyS2,115200n8 root=/dev/mmcblk0p2 rw init=/init rootwait omapfb.video_mode=640x480MR-16@60
Beagleboard# saveenv
Beagleboard# reset

OMAP3_EVM

이건 하나의 예일 뿐이다. 여러분의 network 상황에 맞게 수정해야한다.

OMAP3_EVM# setenv bootcmd tftp; bootm
OMAP3_EVM# setenv baudrate 115200
OMAP3_EVM# setenv bootargs “mem=128M console=tty0 console=ttyS0,115200n8 androidboot.consol=ttyS0 root=/dev/mmcblk0p2 rw init=/init rootwait”
OMAP3_EVM# setenv ipaddr 10.10.10.3
OMAP3_EVM# setenv netmask 255.255.255.0
OMAP3_EVM# setenv serverip 10.10.10.1
OMAP3_EVM# setenv ethaddr 00:50:c2:xx:xx:xx
OMAP3_EVM# setenv bootfile “evm/uImage” ← full path on host is /tftpboot/evm/uImage
OMAP3_EVM# save

외부 화면 출력장치

여러분이 외부 화면 출력장치가 필요하다면, 추가적인 커널 인자를 활성화하는 것이 필요하다.

  • omap-dss.def-disp=dvi – 이건 보드네에 있는 화면 대신 DVI 출력을 사용한다고 설정한다.
  • omapfb.video_mode=720x480MR-16@60이것은 외부 화면 출력장치의 해상도를 설정한다.

다음은 720x480MR-16@60의 값에 대한 의미:

  • 해상도 – 720x480
  • M – 항상 있어야 하는 옵션
  • R – 성능 저하된 blinking
  • 16 – 16비트 = 65,536컬러
  • @60 – 60Hz

점더 자세한 사항은 modedb Documentation을 살펴보라

그럼 위의 사항을 적용한 완전한 bootargs의 예는 다음과 같다:

OMAP3_EVM# setenv bootargs “mem=128M console=tty0 console=ttyS0,115200n8 androidboot.console=ttyS0 root=/dev/mmcblk0p2 rw init=/init rootwait omap-dss.def_disp=dvi omapfb.video_mode=720x480MR-16@60

여러분이 외부 출력장치를 사용하면 온보드 장치는 꺼지지만, 터치는 아직도 활서화 되어 있다는 사실을 명심해라

첫 시작
작업 보드를 시작하고 초기 설정을 셋팅하고 사전에 설치된 application을 설치하는 안드로이드를 기달려라. 아무런 지시사항도 없을것이다.

2010년 2월 17일 수요일

소규모 가내 수공업

  • 스스로 알아서
  • 돈보다 노력으로
  • 나에게 의미있게

2010년 2월 13일 토요일

my own coding policy

  • Small memory foot print
  • Naming under natrual language
  • Portable
  • Speed optimization

2010년 2월 9일 화요일

후손들에게 - 베르톨트 브레히트


우리는 신발보다 더 자주 나라를 바꾸어가면서

불의만 있고 분노를 모르는 현실에 절망하면서

계급의 전쟁터를 누비며 걸어왔다네.

그러는 가운데 우리는 알게 되었네.

비천함에 대한 증오 역시

표정을 일그러뜨린다는 것을.

불의에 대한 증오 역시

목소리를 쉬게 한다는 것을, 아, 우리는

인간성의 터전을 마련하려 하였거늘

우리 스스로가 인간적일 수 없었다네.