2008년 12월 28일 일요일

BSD make 에 대한 user 메일링 리스트 글

NetBSD 메일링 리스트를 검색하다 보니 흥미를 끄는 주제가 있어 한번 링크 걸어 봅니다.

http://mail-index.netbsd.org/netbsd-users/2008/10/11/msg002183.html

해당 글의 thread도 같이 보시면 알겠지만 저도 공감하고 있는 NetBSD의 make(bmake)와 GNU make(gmake) 간의 gap 에 대한 글인데요, 항상 느끼는 것이지만 bmake는 NetBSD에서만 쓸수 밖에 없는 현실이 조금 안타깝고(pkgsrc에 한정되어서 말하는 것이 아닙니다.) 조금만 확장하면 GNU 진영의 autoconf+automake+libtool 을 압도할수 있는 솔루션이 될것으로 보이는데 문서화 되지 않은 면이 많아서 조금은 아쉽네요.

개략적으로 나마 bmake와 gmake간의 차이점을 볼수 있습니다.

2008년 12월 24일 수요일

NetForce2 기종에 Qt 포팅 예제

얼마전 PMP를 구매했는데 OS가 Windows CE 입니다. :-< 그래도 요즘 관심있게 보고 있는 Qt를 한번 포팅해보기로 했는데 성공했습니다. 아래는 간략 설명입니다. Intro ----- I-STATION 의 NetForce2 기종에 Qt를 포팅한 예제입니다. 포팅하기위해서 사용된 환경은 다음과 같습니다. - OS: Windows XP - Windows CE 5.0: Standard Software Development Kit (SDK) - Qt: embedded Version 4.4.3 - Compiler: Visual Studio 2005 컴파일하는데 한시간 정도 걸리는데요, 어떻게 돌아가는지 맛배기로 보실분들을 위해서 필요한 파일들을 압축해 보았습니다. 이것을 만든 이유이기도 합니다. 설치는 압축된 파일을 NetForce2의 적당한 디렉토리(예: 하드디스크)에 풀면 다음과 같은 디렉토리가 있습니다. - demos, examples - qtlib-4.4.3 - wce50-MIPSII, wce50-MIPSII-FP - doc - util 우선 util/ystempath.cpl 을 기기의 Windows 디렉토리에 복사합니다. 그런다음 시작->제어판->System Path 를 실행합니다.
여기에 qtlib-4.4.3, wce50-MIPSII-FP 경로를 선택합니다. OK 를 누르면 재시작하라는 메시지창이 나타나는데요, 이때 OK 버튼을
누르지 말고 X 버튼을 눌러주세요. 프로그램의 버그인지 OK 를 누르면 기기가 먹통이 되더라구요. 설정이 끝나면 재시작을 합니다.

준비는 끝났고 demos 디렉토리에 있는 exe 파일을 실행하면 됩니다. fluidlauncher.exe 를 한번 실행해 보세요.

Enjoy & Fun!

- jypak (date in 2008.12.25)


short directory description
---------------------------

o From http://trolltech.com/downloads/opensource/appdev/win-ce-cpp

- demos <- C:\qt-embedded-wince-opensource-src-4.4.3\demos
(PreView: http://dist.trolltech.com/video/qtembedded44video.mov)

- examples <- C:\qt-embedded-wince-opensource-src-4.4.3\examples

- qtlib-4.4.3 <- C:\qt-embedded-wince-opensource-src-4.4.3\lib
(Ref: http://doc.trolltech.com/4.4/install-wince.html)

o From Windows CE 5.0: Standard Software Development Kit (SDK)
(http://www.microsoft.com/downloads/details.aspx?FamilyID=fa1a3d66-3f61-4ddc-9510-ae450e2318c3&DisplayLang=en)

- wce50-MIPSII <- C:\Program Files\Windows CE Tools\wce500\STANDARDSDK_500\Lib\MIPSII

- wce50-MIPSII_FP <- C:\Program Files\Windows CE Tools\wce500\STANDARDSDK_500\Lib\MIPSII_FP

NOTE. Both of two works, but I am not sure which is fast.

o From http://www.razamicroelectronics.com/products/Au1250.htm

- doc/Au1250 (remove for compressed file size :-)

o From http://www.geocities.co.jp/SiliconValley-Cupertino/2039/systempath.zip

- util/systempath.cpl

NOTE. Setup the Environment Variables on Pocket PC
INSTALL. just copy to "Windows" directory in Windows CE.


Other Useful program
--------------------
o Active Sync
http://www.microsoft.com/downloads/details.aspx?familyid=9FEC2CA0-A503-4F9C-8228-E424480EC807&displaylang=ko


Reference Site
--------------
o RMI Alchemy Au1250 CPU
http://www.razamicroelectronics.com/products/Au1250.htm

o Another Qt Porting blog
http://punbear.tistory.com/category/Programming/Qt

o Qt Documentation
http://doc.trolltech.com/4.4/index.html

o Another Qt Instruction
http://www.digitalfanatics.org/projects/qt_tutorial/index.html


Build Tip
-------
o Qt Porting

1. start in Visual Studio 2005 command window

2. cd $(qt-embedded source)

3. configure -platform win32-msvc2005 -xplatform wince50standard-mipsii-msvc2005

4. cd bin

5. setcepaths wince50standard-mipsii-msvc2005

6. cd ..

7. nmake

8. lib 디렉토리에 결과물들이 생김. demos 도 마찬가지...

9. Windows CE를 위한 Qt 실행환경 만들기
C:\Program Files\Windows CE Tools\wce500\STANDARDSDK_500\Lib\MIPSII_FP
$(qt-embedded source)/lib

10. 9번 결과물을 기기로 전송(Active Sync or USB)


o qmake
Command: C:\qt-embedded-wince-opensource-src-4.4.3\bin\qmake.exe -spec ..\..\..\mkspecs\wince50standard-mipsii-msvc2005 -win32 -o Makefile hellogl.pro

VS.

Command: C:\qt-embedded-wince-opensource-src-4.4.3\bin\qmake.exe -win32 -o Makefile calendar.pro

매번 -spec을 명령어 상에 실행하기 귀찮으면 QMAKESPEC 환경변수에 등록

이후는

1. start in Visual Studio 2005 command window

2. QMAKESPEC 환경변수 등록

3. qmake

4. nmake

5. nmake release

6. 실행 파일을 기기로 전송

enjoy & fun!

2008년 11월 15일 토요일

Install KDE4

별로 영양가 없는 작업이었지만 KDE4를 또 지난번처럼 소스를 전체 컴파일하는 방법으로 설치해봤습니다. KDE3 에 비해 KDE4 에서는 killer application 들이 대폭 개선이 되어서 사용하기가 너무 좋아졌습니다. 물론 시스템에 많은 부하를 주는 것은 사실이지만 시스템이 좀 받쳐준다면 사용해도 괜찮을 것으로 보입니다.

다음은 modular-X 와 KDE4 설치에 필요했던 전체 패키지 리스트입니다.




다음은 Killer Application 이라 말할수 있는 OpenOffice3, Konqueror, Amarok 입니다.


KDE4 내에도 Killer Application 이 많이 포함되어있는데요, pdf 뷰어인 Okular, 파일매너저인 Dolphin, 이미지 뷰어인 Gwenview, 구글맵을 연상시키는 Marble 등이 포함되어있습니다.



마지막으로 Qt 개발 환경인 designer, assistant 입니다.



언제부터 GNOME을 버리고 KDE 로 전향했는지는 알수는 없지만 역시 UI 가 예쁜것은 인정할만 하네요. wip pkgsrc 로 부터 설치해야해서 바이너리 없이 전체 빌드하다보니 KDE4 만 설치하는데 거의 하루가 걸리더군요. pkgsrc 받고 나서 make 실행하고 하루는 멀리 떠나 있는게 정신 건강에 좋습니다. openoffice 도 반나절은 걸린다는 거 명심하시구요. 바이너리 패키지가 있으면 그것 쓰는 것이 여러모로 좋을 듯 싶습니다.

점점 더 NetBSD 가 사용하기에 편해지는 것을 보면 개발 플랫폼으로서 뿐만 아니라 사용자 플랫폼으로서 한층 가까워지고 있다는 생각이 드네요. 언제 한번 시간나면 liveCD 라도 만들어봐야겠습니다.

Ref)
Modula-X : http://rubenerdshow.com/blog/modular-xorg-on-netbsd-from-scratch/

2008년 11월 7일 금요일

Use USB wireless LAN Card

전에 PSP 인터넷 기능을 사용하기 위해서 노트북에 장착할 access point를 위해서 장만한 TW-54G 모델을 가지고 있었는데 혹시나 하는 마음에 한번 TS-7200 보드에 연결해 보았습니다,

Ref) http://www.eunicorn.co.kr/kimsboard7/productintro.php?main_file=product/lancard/tw54g.html

위에 적힌 사항대로라면 Ralink사의 RT2571WF 라는 칩을 사용합니다. rum(4) 를 참조하면 해당 디바이스를 지원합니다. 그리고 해당 디바이스가 evbarm을 지원하는것은 같은 계열의 evbarm 하드웨어에서 사용하는 것을 보면 사용이 가능할 거란 느낌이 들어서 우선 무턱대고 연결해봤습니다.

ugen0 at uhub0 port 1
ugen0: Ralink 802.11 bg WLAN, rev 2.00/0.01, addr 2
ugen0: at uhub0 port 1 (addr 2) disconnected
ugen0 detached
ugen0 at uhub0 port 1
ugen0: Ralink 802.11 bg WLAN, rev 2.00/0.01, addr 2

이런 메시지가 나오기는 하는데 사용은 불가능합니다.

커널 설정에 다음라인을 추가하고 컴파일합니다.

rum* at uhub? port ? # Ralink Technology RT2501/RT2601 802.11a/b/g

그런 다음 커널을 올려주고

# ifconfig rum0 192.168.1.10 netmask 0xffffff00 nwid "IPTIME"
하니

failed loadfirmware of file
에러메시지가 뜨네요. sysctl 결과를 보면

hw.firmware.path = /libdata/firmware:/usr/libdata/firmware:/usr/pkg/libdata/firmware:/usr/pkg/libdata

인데요, 커널 컴파일한 노트북에서 /usr/src/sys/dev/microcode/rum 에 보면 rum-rt2573 이란 파일이 있습니다. 이것을 /lib/data/firmware/rum 디렉토리를 만들어 주고 복사를 하고 나면 끝입니다.

ts-7200# dmesg
...
rum0 at uhub0 port 1
rum0: Ralink 802.11 bg WLAN, rev 2.00/0.01, addr 2
rum0: MAC/BBP RT2573 (rev 0x2573a), RF RT2528, address 00:0e:e8:e3:2b:39
rum0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps
rum0: 11g rates: 1Mbps 2Mbps 5.5Mbps 11Mbps 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54Mbps
....

ts-7200# ifconfig -a
epe0: flags=8863 mtu 1500
address: 00:d0:69:40:87:e4
media: Ethernet autoselect (100baseTX full-duplex)
status: active
inet 192.168.0.250 netmask 0xffffff00 broadcast 192.168.0.255
inet6 fe80::2d0:69ff:fe40:87e4%epe0 prefixlen 64 scopeid 0x1
rum0: flags=8802 mtu 1500
ssid ""
powersave off
address: 00:0e:e8:e3:2b:39
media: IEEE802.11 autoselect
status: no network
lo0: flags=8049 mtu 33192
inet 127.0.0.1 netmask 0xff000000
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3

ts-7200# ifconfig rum0 192.168.1.10 netmask 0xffffff00 nwid "IPTIME"

이제 default gateway 적절히 잡아주고(192.168.1.1 과 같은) ping 으로 외부 시스템을 걸어주면 정상적으로 됩니다.

ref) rum(4), route(8)

2008년 2월 22일 금요일

Use LCDProc in TS-Linux

Preface
-------
우선 NetBSD에 LCDProc 포팅하는 것이 잘되지 않아서 보드에 기본으로 설치되는 Linux(TS- Linux)를 이용해서 LCD 에 글이 표시되는 것을 해봤습니다. TS-Linux라는 게 별게 아니고 Debian Linux 기반으로 하여 업체에서 보드에 포팅한 Linux 정도라고 생각하시면 됩니다.

LCDProc 포팅
------------
LCDProc 에 대해 간략히 설명하자면 왠만한 Character LCD 제품에 대해 포팅하여 쓸수 있는 아주 좋은 프로그램입니다. Server/Client 구조로 되어 있어서 사용하기에도 좋고 사용자가 LCD의 데이터시트 내용까지 알 필요 없게끔 잘 만들었습니다. 이전에 마이컴수준에서 LCD를 사용해 보았는데 LCD에 글씨 출력하는 게 꽤 노가다를 필요로 합니다. 그런데 요 녀석은 그런 수고를 덜어줍니다.

자, 이제 본격적으로 포팅을 준비하겠습니다. 준비물은,
o LCDproc v0.5.0 Relase Version
from http://lcdproc.org
o TS-72xx 용 패치 파일
lcdproc-0.5.0_hd44780_ts7200.patch
from http://tech.groups.yahoo.com/group/ts-7000/files/ (kym_newbery Oct 1, 2007)
o Debian Linux Sarge 가 설치된 시스템
o Cross Compiler
from ftp://ftp.embeddedarm.com/ts-arm-sbc/ts-7200-linux/cross-toolchains/crosstool-linux-gcc-3.4.2-glibc-2.3.3.tar.bz2
NOTE. 지금까지 계속 crosstool-linux-gcc-3.3.4-glibc-2.3.2-0.28rc39.tar.bz2 를 사용해 왔었는데요 버전에서만 제대로 실행되는 것을 확인했습니다.

컴파일하는 것은 뭐 잘 아실거라 믿습니다. 패치는 다음 처럼 하시면 됩니다. (bash shell 기준)
% tar zxvf lcdproc-0.5.0.tar.gz
% cd lcdproc
copy lcdproc-0.5.0_hd44780_ts7200.patch in here!
% export CC=arm-ep9312-linux-gnu-gcc
% cd lcdproc-0.5.0
% patch -p1 < ../lcdproc-0.5.0_hd44780_ts7200.patch % ./configure --enable-drivers=hd44780 --host=arm-linux-gnu NOTE. Cross Compiler 이름에 CPU ep9312로 되어 있는데 TS-7200 보드의 ep9302 CPU에 사용해도 무방합니다. 컴파일이 끝나면 우리가 원하는 파일들이 생성됩니다. 리스트는, o lcdproc/lcdproc-0.5.0/server/LCDd LCD Server 프로그램 o lcdproc/lcdproc-0.5.0/server/drivers/hd44780.so LCD Server 실행에 필요한 라이브러리 o lcdproc/lcdproc-0.5.0/LCDd.conf LCD Server 설정 파일 LCD Client 프로그램은 lcdproc/lcdproc-0.5.0/clients 에 위치합니다. C로 된것도 있고 perl 스크립트로 되어 있는 것도 있는데 C로 된 것은 해당 디렉토리에서 make 하면 됩니다. 이제 준비물은 끝이 났습니다. LCDd, hd44780.so, LCDd.conf 를 TS-7200에 넘겨주면 되는데 넘기기 전에 LCDd.conf 를 다음 처럼 바꿉니다. % diff LCDd.conf ~/LCDd.conf 35,36c35,36 < driver="CFontzPacket" driver="hd44780"> #Driver=CFontzPacket
> Driver=hd44780
47c47,48
< bind="127.0.0.1"> #Bind=127.0.0.1
> Bind=0.0.0.0
79c80,81
< driverpath="server/drivers/"> #DriverPath=server/drivers/
> DriverPath=/usr/local/lib/lcdproc/
351c353,354
< connectiontype="4bit"> #ConnectionType=4bit
> ConnectionType=ts7200
373c376,377
< size="20x4"> #Size=20x4
> Size=24x2

즉, [server] 설정탭의 Driver와 DriverPath를 수정하고 [hd44780]탭의 ConnectionType, Size를 변경합니다. 전 24x2 LCD를 가지고 있어서 이렇게 변경했는데 해당 사이즈에 맞게 변경해주면 됩니다. (Suprise!)
NOTE. [server]탭의 Bind 값이 127.0.0.1 로 되어있는데 0.0.0.0 으로 하는것이 바람직한 것으로 보입니다.

TS-7200 보드에 준비물을 다음의 디렉토리 위치에 넣어둡니다.
o /etc/LCDd.conf
o /usr/local/bin/LCDd
o /usr/local/lib/lcdproc/hd44780.so

이제 LCD Server 프로그램 준비가 끝났습니다. LCD Client 프로그램도 스크립트가 아닌 C 프로그램을 컴파일했다면 /usr/local/bin 에 위치시키면 모두 완료.

LCDProc 시험
------------
o TS-7200에서 LCDd를 실행합니다. (-d 옵션을 주면 데몬으로 동작합니다. -h 참고)
o Cross Compile 한 Debian System에서 Client 프로그램을 실행합니다.
lcdproc/lcdproc-0.5.0/clients/examples/*.pl
여기서는 fortune.pl을 사용하겠습니다. 우선 fortune.pl에서 $HOST = "localhost"; 의 localhost를
TS-7200의 IP로 변경합니다.
% ./fortune.pl

이렇게 하면 Character LCD에 글자가 표시됩니다. 나머지 client 프로그램도 한번 시도해보시길...


Appendix A
----------
sourceforce.net 에 가면 lcdprocwin 이라는 프로젝트가 있습니다. LCD 서버 프로그램을 윈도우로 포팅한건데 소스 받아다 컴파일하면 각각 디렉토리에 Shared Library_debug.lib, lcdprocwin.exe 이 생성됩니다. 이것과 함께 소스 최상위에 있는 lcdprocwin.conf 파일을 하나의 디렉토리를 만들어서 그곳에 넣습니다. 설정파일은 크게 바꿀게 없고 단지 [server]탭의 Bind=0.0.0.0 로 해두시면 됩니다. Size 조정 해도 됩니다.

실행하면 다음과 같이 윈도우 보안 경고가 뜨는데 반드시 차단 해제 하셔야합니다. 나중에 다시 확인 버튼 선택하니 Client가 연결이 안됩니다.

실행하고 나면 다음과 같이 나옵니다.


도스 창에서 netstat -an 명령으로 확인해서 0.0.0.0:13666 으로 TCP Listen 상태가 되는지 확인 합니다.


먼저 번 Debian 시스템에 있는 Client 프로그램으로 HOST 값을 바꾸어서 연결하면 해당 글씨가 나옵니다.

Conclusion
----------
아직 KeyPad와 연관해서 사용하는 법은 아직 모르겠습니다. 보드에 서버와 클라이언트를 모두 띄워서 KeyPad를 가지고 조작할수 있으면 참 좋겠는데 전 여기까지만 성공했습니다. (기능은 됩니다)

LCDProc 의외로 사용가치가 높습니다. youtube에서 lcdproc으로 검색하면 꽤 멋진 동영상들 많이 나옵니다.

NetBSD에 LCDProc 포팅하는 건 아직 시작해보지는 않았는데 될거라 봅니다. 적절한 패치만 해서 컴파일만 잘 된다면 동일한 기능이 구현되리라 봅니다.

SBC 와 같은 emebedded system에 프로그래밍을 한다는게 참 어려운 작업인 걸 새삼스럽게 느낍니다. 프로그래밍만 아는 반토막 지식을 가지고는 해결해야 할 사항이 의외로 많더군요. 하드웨어마다 데이터시트도 구해서 읽어봐야하고, 전자공학 지식도 있어야 되고 컴퓨터 구조에 대해서도 잘 알아야하고... 산 너머 산입니다.

그래서, 요즘은 역으로 아니 처음부터 그렇게 했어야 했는데 전자공학 책 사서 보고 있습니다. 보드도 8bit 마이크로컨트롤러 구해다 보고 있습니다. 요 녀석 들여다보니 프로그램 입장에서 거의 똑같더군요. 하기야 8bit 이지만 RISC 칩이라서 뭐 큰 구조는 같은 셈이죠.

2008년 2월 12일 화요일

사용기 다시 쓰려고 하는 중...

한동안 사용하지 않다가 다시 사용하려고 하니 다시 막막해 지네요.

한 6개월은 족히 넘은 것 같은데...

요기 써놓은 글 가지고 다시 하고는 있는데 오타도 좀 보이고,,,

어쨌든 보드에 NetBSD 숨결을 다시 불어넣으려 하니 배울게 많아 졌네요!!!