레이블이 IEEE1394인 게시물을 표시합니다. 모든 게시물 표시
레이블이 IEEE1394인 게시물을 표시합니다. 모든 게시물 표시

2008년 10월 1일 수요일

aumix 명령어


.aumix.rc 파일을 만들어 두면 편하다
$ vi .aumix.rc

소리 값을 지정해 준다.
-----------------------------------------------------------------------------------------
vol:56:56:P
pcm:56:56:P
speaker:56:56:P
line:56:56:P
mic:80:80:R
cd:48:48:P
pcm2:100:100:P
igain:60:60:P
line1:36:36:P
dig1:100:100:P
phin:36:36:P
phout:48:48:P
video:36:36:P
-----------------------------------------------------------------------------------------


그리고 다음과 같이 실행시킨다.
$ aumix -L -f .aumix.rc

그리하면 설정한 소리 값 대로 소리가 나온다.
처음에 저것을 설정해 주지 않으면 아무 소리가 들리지 않을 수 있는데,
그것은 사운드카드나 스피커 문제가 아니라 vol이 0으로 되어있기 때문이다-_-;

2008년 9월 19일 금요일

wav file bit rate 구하기


bit rate = channel * data bit * sampling rate
bit rate는 위와 같이 구한다.
channel이라든가 data bit 등의 정보는 wave file의 header에 모두 들어있다.

만약 channel이 2이고, data bit가 16, sampling rate가 44100이라고 가정하면,
bit rate(초당 비트율)는 1,411,200이 된다.
즉, 초당 1,411,200bit만큼 file을 읽어 play를 한다는 소리가 되겠다.
이것을 byte로 환산하면 1,411,200/8 = 176,400byte가 된다.


1394에서 메세지는 정해진 주기에 맞춰 slot에 들어있는 값을 읽어오니까,
주기는 1/1000초로 주고 176.4byte씩 보내면 실시간으로 들어온다는 가정하에 buffering없이 음원을 출력할 수 있다.

허나, 이것을 주장했다가 "제너럴 하지 못하다" 라는 이유로 퇴짜맞았다:D

2008년 7월 25일 금요일

IEEE1394 setting


이 시스템은
서버에서 tftp를 통해 커널 이미지를 가져오고,
nfs를 통해 파일시스템을 가지고와 실행하는 하드 없는 컴퓨터 이다.

부팅은 DOM에서 이루어지며 부팅과정에서 서버에 있는 이미지와 파일 시스템을 받아온다.
이 과정이 이루어지기 위해서는 약간의 환경설정이 필요하다.

우선, tftp와 nfs가 설정되어 있어야 한다.
설정하는 방법은 아래 링크를 참조하면 된다.

tftp설정
nfs설정

IEEE1394의 컴파일이 끝났다면 커널 이미지가 생성되었을 것이다.
커널이미지의 경로는
/opt/TMO-Linux/kernel-2.6.10-TMO/arch/i386/boot/bzImage 이다.
이 파일을 tftpboot로 옮겨둔다.

또한 buildroot컴파일이 끝났다면 파일 시스템이 생성되어 있을 것이다.
파일 시스템의 경로는
/opt/TMO-Linux/buildroot/project_build_i686/uclibc/root/ 이다.
하위에 파일시스템이 생성되어 있는데 하위에 있는 모든것을 nfsroot로 옮겨주어도 되지만, 그것보다는 이 경로를 link를 걸어주는 것이 좋다.

$ ln -s /opt/TMO-Linux/buildroot/project_build_i386/uclibc/root/ nfsroot


처음 client와 server를 연결하고 부팅을 시키면 grub설정을 바꿀 수 있는 창이 뜨는데, 아무것도 하지 않으면 그대로 부팅이 되고 재빨리 'e'를 눌러주면 edit로 넘어가게 된다.
설정을 바꿔 줘야 하는 부분은 ifconfig과 kernel image, file system의 경로, 시리얼 설정 이다.

ifconfig와 kernel항목을 수정하자.

grub edit> ifconfig --address=192.168.1.11 --server-192.168.1.254
grub edit> kernel /bzImage root=/dev/nfs rw nfsroot=192.168.1.254:/tftproot/nfsroot/ ip=192.168.1.11:192.168.1.254:255.255.255.0:tmo:eth0 console=ttyS0, 115200n8 ide1=noprobe ide2=noprobe ide3=noprobe ide4=noprobe ide5=noprobe hdb=none ide-delay=10

저장하고 'b'를 눌러 부팅시켰을 때, 잘 된다면 OK! 안된다면 삽질의 나락으로 떨어지게 된다.


부팅할 때마다 ifconfig와 kernel 항목을 수정하는 것은 매우매우매우-_- 귀찮은 일이므로, boot 설정을 바꾸는 방법을 알아보자.

보드가 부팅되고 난 뒤 다음 명령어를 실행시켜 boot설정을 저장한다.

$ mount /dev/hda1 /mnt
$ vi /mnt/boot/grub/menu.lst
설정을 바꾸고 :wq 하여 저장한 후 빠져나온다.

2007년 11월 11일 일요일

IEEE1394(based on TMO-LINUX) 설치 및 컴파일


일단, IEEE1394 (based on TMO-LINUX)설치.

1. 패키지 다운로드 및 인스톨
config파일과 install파일을 포함한 kernel, law1394, tmolib 소스들을 함께 받아야한다. 그리고 install.sh파일을 실행시킨다.

$ ./install.sh

설치는 자동으로 /opt/TMO-LINUX/에 설치되며, 압축도 자동으로 풀어준다.


2. buildroot설치
buildroot를 다운받는 곳은 http://buildroot.uclibc.org/downloads 이다. (다운받기)
여기서 다운 받은 buildroot는 bz2로 압축이 되어 있으므로 tar를 사용할때 j옵션을 준다.

압축을 풀고나면 buildroot폴더가 생성이 되는데 이 안에서 컴파일을 해주어야한다. (이 컴파일 시간은 대략 1시간 좀 넘게 걸린다-_- 에러나면 끝장이다-_-;)

$ make menuconfig

여기서 옵션을 설정을 하는데, IEEE1394(based on TMO-LINUX)를 컴파일하기 위해서는 몇가지 설정을 해주어야하는 옵션이 있다.

우선, architecture는 i386. (다른보드에서 한다면 다른걸로 해도 상관없지만 1394는 대부분 i386보드다.)
그리고 Toolchain으로 들어가서 gcc버전을 바꾸어주는 부분을 찾아 gcc버전을 제일 낮은 것으로 바꾸고, cross complier와 library를 체크한다.
왜인지는 모르겠으나 'snprinf' 에러가 자꾸 발생하여 locale도 설정해주었다.

즉, Toolchain에서 설정 체크를 해주어야하는 것은 다음과 같다.

GCC compiler Version (gcc...) //gcc 버전 가장 낮은 걸로
Enable locale/gettext/i 18n support

C++ cross-compiler support
Build/install c++ compiler and libstdc++

나머지는 기본 설정으로 건드리지 않고 둔다.
그리고 저장을 하고 나와서 컴파일을 하면 된다.

$ make

(덧,
나는 kernel header version도 바꾸어 주었다. 2.6.22 버전의 커널을 사용하면 추가된 것이 많아서 enable여부나, 어떤 것을 선택할 것인가를 컴파일 도중에 물어본다. 그것이 귀찮으면 2.6.21 버전의 커널을 사용하시길...)

3. 소스 컴파일
buildroot를 설치했다면 1394소스를 컴파일한다.
compiler는 물론 cross로 i386-linux-gcc를 사용한다.
make파일에서 compiler를 지정하고 "make"명령을 사용하면 주주주주죽~ 컴파일되어가는 것을 볼 수 있다.

4. 기타 주의사항

make하다가 에러가 나면, 일단 마음을 가라앉히고 모니터를 원망스럽게 쳐다본 뒤, 컴퓨터를 한대 깐다-_-) 왜냐면, 다시 한시간동안 컴파일을 해야하기 때문이다.
보통 컴파일하다가 에러가 나는 경우는 옵션을 잘못 지정해 주었기 때문인 경우가 많다.
그럼 menuconfig를 실행시켜서 다시 옵션을 지정하고 컴파일을 해야하는데, 이 때 생성된 다른 폴더들 (예를들면 build_i386이라든가 하는)을 삭제하고 처음부터 다시 컴파일을 하는 것이 좋다.
build_i386과 toolchain_i386만 지우면 된다고 하지만, 좀 찝찝하면 project_i386까지 지워버리면 된다.