2011년 1월 27일 목요일

How to use FLAGA (programmable flag) under Slave FIFO of FX2LP

* PINFLAGSAB = {FLAGB3, FLAGB2, FLAGB1, FLAGB0, FLAGA3, FLAGA2, FLAGA1, FLAGA0}
초기 상태는 FLAGA는 PF(Programmable Flag)로 FLAGB는 FF(Full Flag)로써 설정되어 있다.
FLAGA,B 가 지시하도록 되어 있는 Endpoint는 FIFOADR[1:0]의 설정에 따라서 달라진다.
(FIFOADR[1:0]은 값에 따라 '00': EP2, '01': EP4, '10': EP6, '11':EP8로 지시된다.)

* EPxFIFOPFH, EPxFIFOPFL
현재 사용하고자 하는 Endpoint 2의 설정이 IN, 512bytes, X4, High Speed 이므로 EP2FIFOPFH와 EP2FIFOPFL의 구성은 다음과 같다. (주의; Endpoint의 설정에 따라 EPxFIFOPFx의 구성이 달라진다.)

=======================================================================
= EP2FIFOPFH = {DECIS, PKTSTAT, PFC11(PKTS2), PFC10(PKTS1), PFC9(PKTS0), 0, x(PCF9), PFC8}
= EP2FIFOPFL = {PFC7, PFC6, PFC5, PFC4, PFC3, PFC2, PFC1, PFC0}
=======================================================================

- DECIS
0: PF = '1' when byte count <= PFC[11:0], 1: PF = '1' when byte count >= PFC[11:0]

- PKTSTAT
0: packet count와 byte count 사용하기
1: packet count는 무시하고 byte count만 사용하기

- PFC[11:0]
byte count의 threshold level

예) PKTSTAT = 0, PKTS[2:0]=2, PFC[9:0] = 50 => threshold level=2*pakcets(512)+50

2011년 1월 25일 화요일

Debian 기본 패키지설치후 GUI 설치하기

[출처] http://www.debianhelp.co.uk/gui.htm

* debian에 KDE 설치하기

#apt-get install x-window-system-core kde

아마도 KDE 스타일의 로그인 화면으로 KDM을 설치하기 원할 것이다.

#apt-get install kdm

* KDE를 시작하기

KDE를 시작하기 위해서 다음과 같이 입력하자

#startkde

만약 동작하지 않는다면 아마도 X-Server를 실행할 필요가 있다.

#startx

매번 자동으로 KDE가 실행되도록 하기 위해서, startup 파일을 수정해야한다.

로그인 하는데 KDM이나 XDM를 사용하고자 한다면, .xsession을 편집하고

그렇지 않다면, .xinitrc나 .Xclients를 편집해라.

* 데비안에 Gnome설치하기

#apt-get install gnome

원하든 원하지 않던 gnome-office, evolution 같은 추가직인 소프트웨어도 설치할 것이다.

* 수작업 설치

apps이 좀더 작게 설치되기를 원한다면, 다음과 같이 하자.

# aptitude install gnome-desktop-environment

추가적인 쓸모있는 apps들은 다음과 같이 설치하자.

# aptitude install gnome-fifth-toe

* 개발자 버전 설치

개발자 버전 패키지가 필요하다면, 예를 들어 GNOME의 의존적인 소스파일을 컴파일 할경우

다음과 같이 설치하자.

# aptitude install gnome-core-devel

개발자 도구 모든 것을 설치하고자 한다면, 다음과 같이하자.

# aptitude install gnome-devel

설치 과정은 비디오 카드, 키보드, 마우스에 대한 상세한 것들을 설정할 것이다.

- PS/2 마우스는 /dev/psaux로 설정되어 있다.

- USB 마우스는 /dev/input/mouse0로 설정되어 있다.

- 정확한 비디오 카드를 선택하도록하자. 적절한 비디오 카드를 설정하지 않는다면, X는 실행되지 못할 것이다. 어떤 드라이버를 사용하는지 정확하지 않다면, 여기에 질문해라.

- 아무런 도움도 없다면, 'vesa'드라이버를 사용하자. 어떤 카드에서도 동작할 것이다.

- 위에 언급한 이외의 다른것들은 추천하는 대답으로 응하자. 그래도 다 읽어 보고 응답하기 바란다; 추천하는 대답이 원하는 것이 아닐 수도 있다.

모두 진행하면 두가지 과정만이 남게된다.

첫 번째는 ~/.initrc 파일을 편집하고, 'exec startkde'나 'exec gnome-session'을 거기에 써 넣는 것이다. 'startx'를 실행하면 GUI를 구동할 수 있다.

두 번째는 login 관리자를 설치하는 것이다. kdm이나 gdm를 설치하면 된다.

Install Compiz on Debian squeeze with ATI HD4xxx card

* Install GNOME and Xorg with Xorg.conf operated with VESA
=======================================================
Section "ServerLayout"
Identifier "X.org Configured"
Screen 0 "Screen0" 0 0
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection

Section "Files"
RgbPath "/etc/X11/rgb"
ModulePath "/usr/lib/xorg/modules"
FontPath "/usr/share/fonts/X11/misc"
FontPath "/usr/share/fonts/X11/cyrillic"
FontPath "/usr/share/fonts/X11/100dpi/:unscaled"
FontPath "/usr/share/fonts/X11/75dpi/:unscaled"
FontPath "/usr/share/fonts/X11/Type1"
FontPath "/usr/share/fonts/X11/100dpi"
FontPath "/usr/share/fonts/X11/75dpi"
FontPath "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"
EndSection

Section "Module"
Load "record"
Load "xtrap"
Load "extmod"
Load "GLcore"
Load "dbe"
Load "glx"
Load "dri"
EndSection

Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
EndSection

Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/input/mice"
Option "ZAxisMapping" "4 5 6 7"
EndSection

Section "Monitor"
Identifier "Monitor0"
VendorName "Monitor Vendor"
ModelName "Monitor Model"
HorizSync 30-83
VertRefresh 56-72
Option "DPMS"
Modeline "1920x1080" 148.50 1920 2008 2052 2200 1080 1084 1089 1125 +hsync -vsync
Modeline "1680x1050" 146.25 1680 1784 1960 2240 1050 1053 1059 1089 -hsync +vsync
Modeline "800x600" 40.00 800 840 968 1056 600 601 605 628 +hsync +vsync
Modeline "800x600" 36.00 800 824 896 1024 600 601 603 625 +hsync +vsync
Modeline "640x480" 31.50 640 656 720 840 480 481 484 500 -hsync -vsync
Modeline "640x480" 25.20 640 656 752 800 480 490 492 525 -hsync -vsync
Modeline "720x400" 28.32 720 738 846 900 400 412 414 449 -hsync +vsync
Modeline "1280x1024" 135.00 1280 1296 1440 1688 1024 1025 1028 1066 +hsync +vsync
Modeline "1024x768" 78.80 1024 1040 1136 1312 768 769 772 800 +hsync +vsync
Modeline "1024x768" 65.00 1024 1048 1184 1344 768 771 777 806 -hsync -vsync
Modeline "832x624" 57.28 832 864 928 1152 624 625 628 667 -hsync -vsync
Modeline "800x600" 49.50 800 816 896 1056 600 601 604 625 +hsync +vsync
Modeline "1152x864" 108.00 1152 1216 1344 1600 864 865 868 900 +hsync +vsync
Modeline "1680x1050" 146.25 1680 1784 1960 2240 1050 1053 1059 1089 -hsync +vsync
Modeline "1280x1024" 109.00 1280 1368 1496 1712 1024 1027 1034 1063 -hsync +vsync
Modeline "1280x960" 101.25 1280 1360 1488 1696 960 963 967 996 -hsync +vsync
Modeline "1152x864" 104.00 1152 1224 1344 1536 864 867 871 905 -hsync +vsync
EndSection

Section "Device"
### Available Driver options are:-
### Values: : integer, : float, : "True"/"False",
### : "String", : " Hz/kHz/MHz"
### [arg]: arg optional
#Option "ShadowFB" # []
#Option "DefaultRefresh" # []
#Option "ModeSetClearScreen" # []
Identifier "Card0"
Driver "vesa"
#Driver "fglrx"
VendorName "ATI Technologies Inc"
BoardName "Unknown Board"
BusID "PCI:1:0:0"
EndSection

Section "Screen"
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Depth 24
Modes "1024x768"
EndSubSection
EndSection
=====================================================

* Check properly installed GNOME with commands; "startx" and "Ctrl+Alt+backspace"
* Execute GNOME and download ATI's proprietry driver
* Change mode the driver as executable status
* Instal the driver and verify changed xorg.conf
=====================================================
Section "ServerLayout"
Identifier "X.org Configured"
Screen 0 "aticonfig-Screen[0]-0" 0 0
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection

Section "Files"
RgbPath "/etc/X11/rgb"
ModulePath "/usr/lib/xorg/modules"
FontPath "/usr/share/fonts/X11/misc"
FontPath "/usr/share/fonts/X11/cyrillic"
FontPath "/usr/share/fonts/X11/100dpi/:unscaled"
FontPath "/usr/share/fonts/X11/75dpi/:unscaled"
FontPath "/usr/share/fonts/X11/Type1"
FontPath "/usr/share/fonts/X11/100dpi"
FontPath "/usr/share/fonts/X11/75dpi"
FontPath "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"
EndSection

Section "Module"
Load "record"
Load "xtrap"
Load "extmod"
Load "GLcore"
Load "dbe"
Load "glx"
Load "dri"
EndSection

Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
EndSection

Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/input/mice"
Option "ZAxisMapping" "4 5 6 7"
EndSection

Section "Monitor"
Identifier "Monitor0"
VendorName "Monitor Vendor"
ModelName "Monitor Model"
HorizSync 30.0 - 83.0
VertRefresh 56.0 - 72.0
ModeLine "1920x1080" 148.5 1920 2008 2052 2200 1080 1084 1089 1125 +hsync -vsync
ModeLine "1680x1050" 146.2 1680 1784 1960 2240 1050 1053 1059 1089 -hsync +vsync
ModeLine "800x600" 40.0 800 840 968 1056 600 601 605 628 +hsync +vsync
ModeLine "800x600" 36.0 800 824 896 1024 600 601 603 625 +hsync +vsync
ModeLine "640x480" 31.5 640 656 720 840 480 481 484 500 -hsync -vsync
ModeLine "640x480" 25.2 640 656 752 800 480 490 492 525 -hsync -vsync
ModeLine "720x400" 28.3 720 738 846 900 400 412 414 449 -hsync +vsync
ModeLine "1280x1024" 135.0 1280 1296 1440 1688 1024 1025 1028 1066 +hsync +vsync
ModeLine "1024x768" 78.8 1024 1040 1136 1312 768 769 772 800 +hsync +vsync
ModeLine "1024x768" 65.0 1024 1048 1184 1344 768 771 777 806 -hsync -vsync
ModeLine "832x624" 57.3 832 864 928 1152 624 625 628 667 -hsync -vsync
ModeLine "800x600" 49.5 800 816 896 1056 600 601 604 625 +hsync +vsync
ModeLine "1152x864" 108.0 1152 1216 1344 1600 864 865 868 900 +hsync +vsync
ModeLine "1680x1050" 146.2 1680 1784 1960 2240 1050 1053 1059 1089 -hsync +vsync
ModeLine "1280x1024" 109.0 1280 1368 1496 1712 1024 1027 1034 1063 -hsync +vsync
ModeLine "1280x960" 101.2 1280 1360 1488 1696 960 963 967 996 -hsync +vsync
ModeLine "1152x864" 104.0 1152 1224 1344 1536 864 867 871 905 -hsync +vsync
Option "DPMS"
EndSection

Section "Monitor"
Identifier "aticonfig-Monitor[0]-0"
Option "VendorName" "ATI Proprietary Driver"
Option "ModelName" "Generic Autodetecting Monitor"
Option "DPMS" "true"
EndSection

Section "Device"

### Available Driver options are:-
### Values: : integer, : float, : "True"/"False",
### : "String", : " Hz/kHz/MHz"
### [arg]: arg optional
#Option "ShadowFB" # []
#Option "DefaultRefresh" # []
#Option "ModeSetClearScreen" # []
#Driver "fglrx"
Identifier "Card0"
Driver "vesa"
VendorName "ATI Technologies Inc"
BoardName "Unknown Board"
BusID "PCI:1:0:0"
EndSection

Section "Device"
Identifier "aticonfig-Device[0]-0"
Driver "fglrx"
BusID "PCI:1:0:0"
EndSection

Section "Screen"
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Depth 24
Modes "1024x768"
EndSubSection
EndSection

Section "Screen"
Identifier "aticonfig-Screen[0]-0"
Device "aticonfig-Device[0]-0"
Monitor "aticonfig-Monitor[0]-0"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Depth 24
EndSubSection
EndSection
=====================================================

* Add new apt's source list
=====================================================
#
# deb cdrom:[Debian GNU/Linux 5.0.5 _Lenny_ - Official i386 NETINST Binary-1 20100627-10:43]/ lenny main
# deb cdrom:[Debian GNU/Linux 5.0.5 _Lenny_ - Official i386 NETINST Binary-1 20100627-10:43]/ lenny main
deb http://ftp.us.debian.org/debian/ lenny main contrib non-free
# deb-src http://ftp.us.debian.org/debian/ lenny main
# deb http://security.debian.org/ lenny/updates main contrib non-free
# deb-src http://security.debian.org/ lenny/updates main contrib non-free
deb http://www.debian-multimedia.org lenny main
deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free
deb-src http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free

deb http://ftp.kr.debian.org/debian/ lenny main contrib non-free
deb http://ftp.kr.debian.org/debian/ lenny main
deb-src http://ftp.kr.debian.org/debian/ lenny main

deb http://security.debian.org/ lenny/updates main
deb-src http://security.debian.org/ lenny/updates main

deb http://volatile.debian.org/debian-volatile lenny/volatile main
deb-src http://volatile.debian.org/debian-volatile lenny/volatile main

deb http://ftp.kr.debian.org/debian/ lenny-proposed-updates contrib non-free main
=====================================================

* Install Compiz and edit Xorg.conf
=====================================================
Section "ServerLayout"
Identifier "X.org Configured"
Screen 0 "aticonfig-Screen[0]-0" 0 0
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
Option "AIGLX" "True"
EndSection

Section "Files"
RgbPath "/etc/X11/rgb"
ModulePath "/usr/lib/xorg/modules"
FontPath "/usr/share/fonts/X11/misc"
FontPath "/usr/share/fonts/X11/cyrillic"
FontPath "/usr/share/fonts/X11/100dpi/:unscaled"
FontPath "/usr/share/fonts/X11/75dpi/:unscaled"
FontPath "/usr/share/fonts/X11/Type1"
FontPath "/usr/share/fonts/X11/100dpi"
FontPath "/usr/share/fonts/X11/75dpi"
FontPath "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"
EndSection

Section "Module"
Load "record"
Load "xtrap"
Load "extmod"
Load "GLcore"
Load "dbe"
Load "glx"
Load "dri"
EndSection

Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
EndSection

Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/input/mice"
Option "ZAxisMapping" "4 5 6 7"
EndSection

Section "Monitor"
Identifier "Monitor0"
VendorName "Monitor Vendor"
ModelName "Monitor Model"
HorizSync 30.0 - 83.0
VertRefresh 56.0 - 72.0
ModeLine "1920x1080" 148.5 1920 2008 2052 2200 1080 1084 1089 1125 +hsync -vsync
ModeLine "1680x1050" 146.2 1680 1784 1960 2240 1050 1053 1059 1089 -hsync +vsync
ModeLine "800x600" 40.0 800 840 968 1056 600 601 605 628 +hsync +vsync
ModeLine "800x600" 36.0 800 824 896 1024 600 601 603 625 +hsync +vsync
ModeLine "640x480" 31.5 640 656 720 840 480 481 484 500 -hsync -vsync
ModeLine "640x480" 25.2 640 656 752 800 480 490 492 525 -hsync -vsync
ModeLine "720x400" 28.3 720 738 846 900 400 412 414 449 -hsync +vsync
ModeLine "1280x1024" 135.0 1280 1296 1440 1688 1024 1025 1028 1066 +hsync +vsync
ModeLine "1024x768" 78.8 1024 1040 1136 1312 768 769 772 800 +hsync +vsync
ModeLine "1024x768" 65.0 1024 1048 1184 1344 768 771 777 806 -hsync -vsync
ModeLine "832x624" 57.3 832 864 928 1152 624 625 628 667 -hsync -vsync
ModeLine "800x600" 49.5 800 816 896 1056 600 601 604 625 +hsync +vsync
ModeLine "1152x864" 108.0 1152 1216 1344 1600 864 865 868 900 +hsync +vsync
ModeLine "1680x1050" 146.2 1680 1784 1960 2240 1050 1053 1059 1089 -hsync +vsync
ModeLine "1280x1024" 109.0 1280 1368 1496 1712 1024 1027 1034 1063 -hsync +vsync
ModeLine "1280x960" 101.2 1280 1360 1488 1696 960 963 967 996 -hsync +vsync
ModeLine "1152x864" 104.0 1152 1224 1344 1536 864 867 871 905 -hsync +vsync
Option "DPMS"
EndSection

Section "Monitor"
Identifier "aticonfig-Monitor[0]-0"
Option "VendorName" "ATI Proprietary Driver"
Option "ModelName" "Generic Autodetecting Monitor"
Option "DPMS" "true"
EndSection

Section "Device"

### Available Driver options are:-
### Values: : integer, : float, : "True"/"False",
### : "String", : " Hz/kHz/MHz"
### [arg]: arg optional
#Option "ShadowFB" # []
#Option "DefaultRefresh" # []
#Option "ModeSetClearScreen" # []
#Driver "fglrx"
Identifier "Card0"
Driver "vesa"
VendorName "ATI Technologies Inc"
BoardName "Unknown Board"
BusID "PCI:1:0:0"
EndSection

Section "Device"
Identifier "aticonfig-Device[0]-0"
Driver "fglrx"
BusID "PCI:1:0:0"
Option "XAANoOffscreenPixmaps" "true"
EndSection

Section "Screen"
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Depth 24
Modes "1024x768"
EndSubSection
EndSection

Section "Screen"
Identifier "aticonfig-Screen[0]-0"
Device "aticonfig-Device[0]-0"
Monitor "aticonfig-Monitor[0]-0"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Depth 24
EndSubSection
EndSection

Section "Extensions"
Option "Composite" "Enable"
EndSection
=====================================================

* Add the command, that is compiz --replace, at startup sessions on "Session" under "Basic Panel" under "System"

2011년 1월 16일 일요일

데비안 리눅스에서 전원 관리하기

[출처] http://technowizah.com/2007/01/debian-how-to-power-management.html

* CPU 주파수 관리하기
다음을 실행하여 CPU 주파수 관리자의 상태를 점검하자.
# cpufreq-info
CPU 주파수 관리자가 꺼져 있다면, 다음을 따라가자.
다음을 설치하자.
# sudo apt-get install cpufrequtils sysfsutils
정확한 CPU 모델을 확인하자.
# cat /proc/cpuinfo | grep "model name"
출력은 다음과 같은 형식이어야 한다.
model name : Intel(R) Pentium(R) M processor 1.73GHz
정확한 CPU 모델이 확인되면, 다음 단계는 적절한 모듈을 로드할 단계이다.
: CPU frequency driver, CPU frequency policy governor

CPU frequency driver

CPU의 타입에 따른 CPU frequency driver가 다르다는 것을 짐작할 수 있듯이,
Pentium M을 갖는 laptop의 경우 다음과 같다.
# sudo modprobe speedstep_centrino
다른 CPU의 경우에 해당하는 CPU frequency driver는 다음과 같다.
AMD K6 processors : powernow_k6
AMD K7 processors (Athlon, Duron, Sempron 32 bits) : powernow_k7
AMD K8 processors (Athlon 64, Turion 64, Sempron 64, Opteron 64) : powernow_k8
Pentium 4, Celeron D, Pentium D, Celeron M : p4_clockmod
Pentium M, Core Duo, Core 2 Duo : speedstep_centrino
의심이 된다면 일반적인 드라이버를 사용할 수도 있다. : acpi_cpufreq

CPU policy governor

적절한 드라이버가 로드되면 CPU policy governor의 선택이 필요하다.
이 policy governor는 CPU의 실제 행동을 관리한다.
여기 약간의 policy governor와 그에 해당하는 모듈 이름이 있다.
performance, which sets the CPU statically to the highest possible frequency : cpufreq_performance
powersave, which is the opposite, clocks the CPU statically to the lowest frequency : cpufreq_powersave
ondemand, which sets the CPU speed dynamically depending on the work load (ideal for desktops) : cpufreq_ondemand
conservative, which also sets the CPU dynamically, but less aggressively then the ondemand governor (ideal for laptops) : cpufreq_conservative
예를 들면, Pentium M 프로세서의 경우
# sudo modprobe speedstep_centrino
# sudo modprobe cpufreq_ondemand
CPU 설정하기
두 모듈이 로드 되면 policy governor의 설정이 필요하다.
예를 들면 ondemand governor를 사용하려면 다음과 같은 라인을 수행한다.
# echo ondemand | sudo tee /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
이와 같은 명령들이 제대로 동작하고 있는지 다음 명령어로 점검해 보자.
# cpufreq-info
시스템 설정하기
모든것이 다 제대로 설정 된다면 이제는 설정을 영구적으로 수행될 수 있도록 만들자.
먼저 적절한 모듈들이 /etc/modules/ 밑에 있는지 확인하자.
내 경우 다음과 같다.
# echo speedstep_centrino | sudo tee -a /etc/modules
# echo cpufreq_ondemand | sudo tee -a /etc/modules
마지막으로 CPU가 적절한 governor를 사용하는지 확인하고,
다음 사항을 저장하자.

/etc/sysfs.conf
================================================================
devices/system/cpu/cpu0/cpufreq/scaling_governor = ondemand
================================================================

X 서버 설정하기
두 가지 방법이 있다. CPU/GPU의 소비 전력을 관리하기 위해 최적화 하는 방법과
suspend/resume하는 시스템의 동작에 관련된 사항을 수정하는 방법이 있다.

전원에 관한 설정
/etc/X11/xorg.conf
==============================================
...
Section "Screen"
...
DefaultDepth 16
...
Option "backingstore" "true"
...
Section "Device"
...
Option "RenderAccel" "true"
...
==============================================
ATI 비디오 카드의 사용자의 경우 수작업에 의한 트릭이 필요하다.
(ATI사의 드라이버를 설치하자)
그리고 다음 라인을 Section "Device"에 추가해서 GPU 주파수 관리를 활성화 하자.
Option "DynamicClocks" "true"
suspend/resume에 관한 설정
suspend-to-RAM으로 부터 resume하는 것을 돕기위해서 다음 코드를 추가하자.

/etc/X11/xorg.conf
==============================================
...
Section "Device"
...
Option "VBERestore" "true"
...
==============================================
* suspend to RAM
suspend-to-RAM이 적절히 작동하기 위해선, 약간의 행운과 약간의 작업이 필요하다.
저의 경우 laptop-mode-tools, hdparm, 등의 보조적인 도구들의 모음과 작동하는
Powersave를 사용한다.

설치하기
# sudo apt-get install acpi acpid acpi-tools hdparm sdparm laptop-detect laptop-mode-tools powersaved
또한 많은 사용자들이 이러한 유틸리티를 관리하는 graphical front end를 선호한다.
KDE 데스크탑의 경우 kpowersave를 GNOME의 경우 gnome-power-manager를 사용하자.
powersaved가 올바르게 동작하게 하기위해서 powerdev그룹에 사용자를 추가하자
# sudo adduser {your_username} powerdev
설정하기
이 부분은 트릭을 포함한다.
powersaved의 주요 설정 파일은 /etc/powersave/sleep이다.
다행이 변경하는데 단 몇 라인만 필요하다.
예를 들면, Asus Z63A 데스크탑에서는 변경하는데 5 라인이 필요하다.
==================================================
UNLOAD_MODULES_BEFORE_SUSPEND2RAM="sdhci"
SUSPEND2RAM_FORCE="yes"
SUSPEND2RAM_ACPI_SLEEP="1"
SUSPEND2RAM_VBE_SAVE="yes"
SUSPEND2DISK_METHOD="uswsusp"
==================================================
이상적인 경우 여기서 이야기하는 /etc/powersave/sleep 파일에 아무런 수정사항도 필요하지 않다.

linux 노트북에서 suspend와 hibernation 사용하기

[출처] How to suspend and hibernate a laptop under Linux
By Manolis Tzanidakis on June 06, 2006 (8:00:00 AM)

* Advanced Configuration & Power Interface(ACPI)
ACPI4Linux(리눅스를 위한 ACPI)는 리눅스 버전 2.6.15 이후의 버전에서 지원한다.

* Suspend
ACPI의 S3 상태(Suspend-to-RAM)은 RAM을 제외한 모든 시스템이 low-power상태로 들어간다.
Suspend-to-RAM 상태를 지원하는지 안하는 체크하기

#cat /sys/power/state

위의 명령어가 'mem'을 리턴하면 지원하는 것이고 안하면
kernel configuration파일 (/usr/src/linux-`uname -r`/.config 어거나 /boot/config-`uname -r`일 것이다.)
에서 CONFIG_ACPI_SLEEP항목을 선택하자.
ACPI가 지원하더라도 버그가 있어서 ACPI를 지원하지 못할 수 도 있다.
만약 그러한 경우라면 Advanced Power Management(APM)을 사용하면 된다.
보통 apmd(the Linux APM Daemon)의 데몬형태로 실행되고 있을 것이다.
apmd를 설치하고 apm -z 명령어로 suspend 모드로 전환할 수 있다.
하지만 hibernate는 지원하지 않는다.
명령행에서 다음과 같이 실행하면

echo -n mem > /sys/power/state

laptop이 suspend로 전환된다. 하지만 복구할 시 아마도 검은 화면만 나올 지도 모른다.
이러한 문제점을 고려해서 shell script를 만들어서 사용하는 것이 더 낳다.

/usr/local/sbin/suspend.sh을 만들고 다음과 같은 내용을 추가하자.

===========================================================================
#!/bin/sh
# discover video card's ID
ID=`lspci | grep VGA | awk '{ print $1 }' | sed -e 's@0000:@@' -e 's@:@/@'`

# securely create a temporary file
TMP_FILE=`mktemp /var/tmp/video_state.XXXXXX`
trap 'rm -f $TMP_FILE' 0 1 15

# switch to virtual terminal 1 to avoid graphics
# corruption in X
chvt 1

# write all unwritten data (just in case)
sync

# dump current data from the video card to the
# temporary file
cat /proc/bus/pci/$ID > $TMP_FILE

# suspend
echo -n mem > /sys/power/state

# restore video card data from the temporary file
# on resume
cat $TMP_FILE > /proc/bus/pci/$ID

# switch back to virtual terminal 7 (running X)
chvt 7

# remove temporary file
rm -f $TMP_FILE
=============================================================================

X서버 configuration 파일(/etc/X11/xorg.conf 이거나 /etc/X11/XF86Config-4)의
video 장치 섹션에 Option "VBERestore" "true"를 추가한다.

=============================================================================
Section "Device"
Identifier "intel_855gm"
Driver "i810"
BusID "PCI:0:2:0"
Option "VBRestore" "true"
EndSection
=============================================================================

그리고 마지막으로 suspend.sh 스크립트를 실행가능한 상태로 만들어 준다.
#chmod -x /usr/local/sbin/suspend.sh

복구하기는 Laptop 모델에 따라서 Fn키나 power 버튼을 누르면된다.
그리고 네트워크를 down시키거나 up 시키는 작업을
echo -n mem > /sys/power/state이 들어 있는 라인 전후에 넣어서 실행할 수 있다.

* Hibernate 설정하기
Hibernate 기능은 ACPI State S4 혹은 Suspend-to-disk로 알려져 있다.
Suspend-to-RAM가 마찬가지로 동작하지만 모든 데이터가 하드 디스크에 저장된다.
이 상태는 어떤 전력도 소비되지 않기 때문에 강력한 절전기능을 제공한다.
리눅스에서는 Hibernate기능을 세 가지 방법이 있다.

1. swsusp; 커널을 한부부으로 동작한다.
2. uswsusp; 사용자 영역에서 동작하지만 아직 준비되지 않은 기능이다.
3. Software Suspend(suspend2); 상태를 주기적으로 점검하기 위해서 가끔식 실행된다.

리눅스 커널에는 Software Suspend가 포함되지 않고 있다는 문제점이 있다.
그레서 manual patching과 커널 컴파일이 필요하다.
Gentoo 사용자들은 suspend2-sources 패키지를 사용하면된다.
다른 패키지 사용자들은 가장 최근 커널을 다운받고 patch for suspend2를 적용하면된다.

===============================================================================
#cd /usr/src
#wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.15.tar.bz2 \
http://www.suspend2.net/downloads/all/suspend2-2.2-rc16-for-2.6.15.tar.bz2
#tar jxvpf linux-2.6.15.tar.bz2; tar jxvpf suspend2-2.2-rc16-for-2.6.15.tar.bz2
#cd linux-2.6.15
#../suspend2-2.2-rc16-for-2.6.15/apply
===============================================================================

그리고 커널 옵션중에
Power management options (ACPI, APM) ---> Suspend2 ---> Swap Writer
에 당신의 swap 파티션을 추가하고
Cryptographic options ---> LZF compression algorithm
을 추가하자.
Swap Writer를 선택하면 suspend2는 모든 데이터를 swap 영역에 쓸것이다.
그레서 RAM의 용량의 최소한 두 배이상의 swap 영역이 확보되도록 하자.
물론 "File Writer"를 선택해서 하드디스크의 파일에 저장하는 방법을 사용하는 것도 있다.
하지만 swap영역을 사용하는 방법이 좀 더 쉽기 때문에 swap에 저장하는 방법을 사용하는 방법을 추천한다.

그리고 다음으로 hibernate-script(Debian에서 hibernate 패키지)를 설치하자.
(이 패키지는 모든 리눅스 배포판에서 지원하지는 않기 때문에
suspend2의 Web 패이지에서 최신버전을 다운로드하고 install.sh를 실행하자.)
설정파일은 /etc/hibernate/hibernate.conf이다. 자세한 옵션은 hibernate.conf man 패이지를 참조하고,
hibernate를 실행하자. 그리고 복구는 power버튼으로 할 수 있다.

* 자동 Hibernate
suspend나 hibernate를 스크립트로 실행하는 것은 가장 편한 방법은 아니다.
그레서 자동으로 실행하도록 하는것이 더 좋다.
laptop의 뚜껑을 덮을때 suspend로 진입하고 power 버튼을 눌러서 hibernate를 실행하도록 설정할 수 있다.
그렇게 하기 위해선 ACPI daemon인 acpid의 설치가 필요하다.
설치한후 자동실행을 설정하기위해서 daemon을 중지시키고 설정 디렉토리를 백업하자.

# mv /etc/acpi /etc/acpi.orig

그리고 두 개의 하위 디렉토리(events, actions)를 갖는 새로운 acpi 디렉토리를 만들자.

# mkdir -p /etc/acpi/{events,actions}

그럼 뚜껑과 전원 버튼 그리고 events를 다루는 파일들을 만들자.

/etc/acpi/events/lid
========================================================
event=button[ /]lid.*
action=/etc/acpi/actions/lid.sh
========================================================

/etc/acpi/events/pwrbtn
========================================================
event=button[ /]power
action=/etc/acpi/actions/pwrbtn.sh
========================================================

/etc/acpi/actions/lid.sh
========================================================
#!/bin/sh
/usr/local/sbin/suspend.sh
========================================================

/etc/acpi/actions/pwrbtn.sh
========================================================
#!/bin/sh
hibernate
========================================================

첫 번째 두 파일들은 전원 버튼을 누르거나 뚜껑이 닫힐때 실행하게될 deamon을 지시한다.
마찬가지로, 마지막 두 파일들은 실행가능 상태로 만들고, acpid deamon을 실행하자

# chmod +x /etc/acpi/actions/*

[번역] Improved ways to suspend and hibernate a laptop under Linux
By Manolis Tzanidakis on February 16, 2007 (8:00:00 AM)

.. multi-core CPU에 대한 사용하는 방법을 설명한다.

Suspend-to-RAM은 SMP모드에서 2.6.18이후의 버전에서 잘 작동한다.
하지만 경우에 따라서 복구가 100% 안정적이지 않다.
다른 문제점은 배터리 용량 표시 문제인데 2.6.20버전에서 개선되어 졌다.
지난 내용에서 언급한 hibernate 하는 세 가지 해결책을 제기했다;

swsusp (커널의 한 부분)
uswsusp (사용자 영역에서 작동하는 swsusp)
그리고 suspend2

이 중 가장 안정적이고 동시에 신뢰성있는 접근 방법을 제시하는
맨 마지막 방법에 대한 설명을 하였다.
Suspend2는 대부분 소프트웨어의 조각으로 이루어져 있다.
하지만, 리눅스 커널의 한 부분이 아니기 때문에 manual patch와 커널 컴파일이 필요하다.

이제는 uswsusp가 안정적이라는 좋은 소식이 있다. (2.6.17 이후에 탑재된)
가장 대중적인 리눅스 배포판인 Debian(Etch, Sid)그리고 Ubuntu(Edge Eft, Feisty Fawn)
사용자들은 uswsusp 패키지를 사용할 수 있다.
(패키지 매니저로 설치할때 swap 영역 파티션을 사용하도록 입력하자.)
그리고 hibernate를 수행하도록 s2disk를 실행하자.

* 재 방문한 Suspend 스크립트와 자동화
어떤 독자가 내가 지난 내용에서 작성한 스크립트가 suspend시 시스템 시간을 하드웨어에 저장해야 하고,
clock skew 문제를 피하기 위해서 resume시 하드웨어로 부터 시간을 복구해야한다고 제안하였다.
실제로, 나는 네트워크 상에서 시간을 동기화 하기위해서 OpenNTPD를 사용하기 때문에 이러한 문제들을 마주치지 못했다.
이러한 사항들을 기반으로 suspend와 hibernate하기위한 옵션을 추가한다.
suspend-to-RAM을 위해서 suspend.sh의 suspend를
hibernation을 위해선 suspend.sh의 hibernate를 수행한다.

/usr/local/sbin/suspend.sh
==============================================================================
#!/bin/sh

# discover video card's ID
ID=`lspci | sed -e '/VGA/!d' -e 's/ .*//' -e 's@0000:@@' -e 's@:@/@' -eq`

# securely create a temporary file
TMP_FILE=`mktemp /var/tmp/video_state.XXXXXX`
trap 'rm -f $TMP_FILE' 0 1 15

# switch to virtual terminal 1 to avoid graphics
# corruption in X
chvt 1

# synchronize system clock with hardware
hwclock --directisa --localtime --systohc

# write all unwritten data (just in case)
sync

# dump current data from the video card to the
# temporary file
cat /proc/bus/pci/$ID > $TMP_FILE

# suspend or hibernate
case "$1" in
suspend) echo -n mem > /sys/power/state ;;
hibernate) s2disk ;;
esac

# restore video card data from the temporary file
# on resume
cat $TMP_FILE > /proc/bus/pci/$ID

# synchronize hardware clock with system
hwclock --directisa --localtime --hctosys

# switch back to virtual terminal 7 (running X)
chvt 7

# remove temporary file
rm -f $TMP_FILE
==============================================================================

위와 같이 편집하고 실행 가능한 상태로 변경하자.

# chmod +x /usr/local/sbin/suspend.sh

Debian Sid와 Ubuntu Edgy Eft에서 테스트 하였다.
Uswsusp는 suspend-to-RAM을 위해서 s2ram을 제공하지만,
테스트하는 동안에 잘 동작하지 않았기 때문에 ACPI를 통한 방법을 이용하였다.
만약 GeForce 비디오 카드를 사용하고 proprietary Nvidia 드라이버를 사용한다면,
temporary 파일에 비디오 카드 데이터를 저장하고 resume시 복구할 필요 없다.
그래서 이에 해당하는 라인은 제거했다.

/etc/acpi/actions/lid.sh
==============================================================================
#!/bin/sh
if grep -q off-line /proc/acpi/ac_adapter/AC/state; then
/usr/local/sbin/suspend.sh hibernate
else
/usr/local/sbin/suspend.sh suspend
fi
==============================================================================

# chmod +x /etc/acpi/actions/lid.sh

/etc/acpi/events/battery
==============================================================================
event=battery.*
action=/etc/acpi/actions/battery.sh
==============================================================================

/etc/acpi/actions/battery.sh
==============================================================================
#!/bin/sh
if grep -q on-line /proc/acpi/ac_adapter/AC/state; then
exit 0
fi

BAT_DIR=/proc/acpi/battery/BAT0
FULL_BAT=`grep 'last full capacity' ${BAT_DIR}/info | awk '{ print $4 }'`
CUR_BAT=`grep 'remaining capacity' ${BAT_DIR}/state | awk '{ print $3 }'`
AVG=`expr $(expr ${CUR_BAT} \* 100) / ${FULL_BAT}`

if [ "$AVG" -le "4" ]; then
/usr/local/sbin/suspend.sh hibernate
fi
==============================================================================

BAT_DIR에 해당하는 값은 여러분의 설정과 맞는지 확인하고 수정하자.

# chmod +x /etc/acpi/actions/battery.sh

2011년 1월 12일 수요일

banding filter of image sensor

Banding Filter
This option will remove the horizontal banding that sometimes appears in the scenes lit by artificial
lighting. This banding is caused by the mains lighting flickering on and off at the mains supply frequency.

2011년 1월 10일 월요일

ISP program for LPC1768

* 회로도

그림 (KiCAD)

* FlashMagic.exe from http://www.flashmagictool.com/

ISP mode에서 동작하여야만 접속이 완료된다. ISP mode는 NMI 핀을 pull up 상태로 하면 된다.

* FreeRTOS

NXP홈페이지 Application Note 중 FreeRTOS를 적용하는 친절한 내용이 있다 우선 이것을 적용해 본다.


2011년 1월 2일 일요일

수도권 지하철로 다녀오는 새해 산행

팔당역(상팔당)->예봉산 혹은 예빈산(3Km)->철문봉->적갑산(2Km)->운길산(5Km)->연세중학교(약 14km/ 약 6시간 30분)->운길산역