SAM9407 리눅스 HOWTO

작성자: 차영호<ganadist@dacome.co.kr>
 

개인적으로 사운드 트랙 128 DDMA(흔히 사트루비라고 불리는 기종)을 리눅스에서 사용하면서 얻은 팁을 모아두었다.

현재 지원되는 사운드 카드는

이다.
 

소스를 얻을수 있는곳

컴파일 방법


먼저 받은 파일을 디렉토리에 푼다.

[root@ganadist src]# tar xvfz sam9407-0.8.9.tar.gz

그다음 디렉토리에 들어 간다.

[root@ganadist src]# cd sam9407-0.8.9

[root@ganadist sam9407-0.8.9]#

그다음 컴파일 환경설정을 해준다.

[root@ganadist sam9407-0.8.9]# ./configure
loading cache ./config.cache
checking for gcc... (cached) gcc
checking whether the C compiler (gcc  ) works... yes
checking whether the C compiler (gcc  ) is a cross-compiler... no
checking whether we are using GNU C... (cached) yes
                    ....
                    ....
                    ....
checking wether module versions is enabled... yes
creating ./config.status
creating Makefile
creating kernel/Makefile
creating init/Makefile
creating x9407/Makefile
[root@ganadist sam9407-0.8.9]#

컴파일을 해준다.
[root@ganadist sam9407-0.8.9]# make
make[1]: Entering directory `/usr/local/src/sam9407-0.8.9/kernel'
gcc -O2 -Wall -m486 -fomit-frame-pointer -fno-strength-reduce -I/usr/src/linux/include -D__KERNEL__ -DMODULE -DMODVERSIONS -include /usr/src/linux/include/linux/modversions.h -DSAM_VERSION_MAJOR=0 -DSAM_VERSION_MINOR=8 -DSAM_VERSION_TINY=9 -DSAM_MAJOR=145    -c alloc.c
                    ....
                    ....
                    ....
g++ -o x9407 x9407.o controls.o panes.o device.o utils.o api_none.o api_vanilla.o api_homstdr.o Tab.o Dial.o PeakMeter.o Layout.o laygram.o laylex.o sfDir.o sfDraw.o sfPath.o sfSelFile.o -L/usr/X11R6/lib -lXaw3d -lXmu -lXt -lXpm  -lSM -lICE -lX11
make[1]: Leaving directory `/usr/local/src/sam9407-0.8.9/x9407'
[root@ganadist sam9407-0.8.9]#

다음 설치를 한다.
[root@ganadist sam9407-0.8.9]# make install
rm -f //etc/rc.d/init.d/sam9407
sed -e 's#@''VERSION@#0.8.9#g' -e 's#@''DEV_MAJOR@#145#g' -e 's#@''SBIN_DIR@#//sbin#g' -e 's#@''MACHINE@#i386#g' etc/sam9407-redhat-init.sh.in >//etc/rc.d/init.d/sam9407
                    ....
                    ....
                    ....
sed -e 's#@''VERSION@#0.8.9#g' -e 's#@''DEV_MAJOR@#145#g' -e 's#@''SBIN_DIR@#//sbin#g' -e 's#@''MACHINE@#i386#g' etc/install.sh.in >/tmp/sam9407-install.sh
sh /tmp/sam9407-install.sh
rm -f /tmp/sam9407-install.sh
[root@ganadist sam9407-0.8.9]#

다음 모듈 의존성을 만든다.
[root@ganadist sam9407-0.8.9]#depmod -a

모듈을 올려본다.
[root@ganadist sam9407-0.8.9]# modprobe sam9407
[root@ganadist sam9407-0.8.9]# lsmod
Module                  Size  Used by
sam9407                80916   0  (autoclean)
autofs                  9188   1  (autoclean)
ne                      6256   1  (autoclean)
8390                    6052   0  (autoclean) [ne]
vfat                    9084   4  (autoclean)
fat                    30272   4  (autoclean) [vfat]
[root@ganadist sam9407-0.8.9]#dmesg
                    ....
                    ....
                    ....
sam9407: found st128pci port=0xe000, irq=0
[root@ganadist sam9407-0.8.9]#
 

사운드 카드 사용하기


이제 펌웨어와 사운드 폰트를 로딩한다.
로딩하는 방식은 명령행에서 명령주는 방법과 안에 포함된 믹서(x9407)에서 로딩하는 방법이 있다.
여기서는 명령행으로 로딩하는 방법이다.
[root@ganadist sam9407-0.8.9]# sam9407 -f /etc/sound/hoon4d.bin -b 0:/etc/sound/gssbk32l.94b

이제 확인 한다.
[root@ganadist sam9407-0.8.9]# cat /dev/sam0_sndstat
driver:         sam9407-0.8.9
soundcard:      st128pci
firmware:       hoon4d
have-audio:     yes
have-midi:      yes
memory-total:   10240k
memory-free:    271k
memory-sbank:   3691k
memory-audio:   0k
channels-play:  0/8
channels-rec:   0/1
[root@ganadist sam9407-0.8.9]#
 
 

/etc/sam9407.conf 이용하기 이 파일은 sam9407을 실행시킬때 기본으로 읽어들이는 설정 파일이다.

이 파일안에는 사운드카드의 폰트램 크기, irq설정, 펌웨어 위치, 사운드 뱅크 위치 등등을 설정 해준다.
저같은 경우에는 파일이 이렇게 구성되어 있다.

[root@ganadist src]# cat /etc/sam9407.conf
mem 4M
irq 5
firmware /etc/sound/hoon4d.bin
soundbank0 /etc/sound/gssbk32l.94b

이런식으로 파일은 만든후에는 sam9407에 어떠한 옵션도 붙일 필요가 없다.

단지 sam9407만 실행 시켜주면 된다.
[root@ganadist src]# /sbin/sam9407
 

/etc/rc.d/init.d/sam9407 이용하기

사용하다 보면 계속 시스템을 시작할때 마다 계속 sam9407로 펌웨어와 사운드뱅크를 로딩 시켜줘야 한다.

이것을 시스템시작할때 자동으로 로딩하게 할수 있는 방법이 없을까?

모듈을 설치하고 나면 시스템 데몬 서비스 스크립트가 모여있는

/etc/rc.d/init.d/ 디렉토리에 다음과 같은 스크립트가 설치되어 있는 것을 볼수 있다.

[root@ganadist /root]# ll /etc/rc.d/init.d/sam9407
-rwxr-xr-x   1 root     root          404 Oct 28 12:02 /etc/rc.d/init.d/sam9407*

우리는 단지 이것을 각각의 런레벨에 맞게 심벌릭 링크만 해주면 된다.

[root@ganadist /root]# cd /etc/rc.d/rc3.d
[root@ganadist rc3.d]# ln -s ../init.d/sam9407 S85sam9407
[root@ganadist rc3.d]# cd ../rc5.d
[root@ganadist rc5.d]# ln -s ../init.d/sam9407 S85sam9407

이제 다음부터는 시스템이 시작할때 다음과 같은 메세지를 볼수 있을 것이다.

Initializing SAM9407                       [OK]
 
 

esd를  사용하려면..

비트와 샘플링 레이트를 아주 낮춰야 한다..
/etc/esd.conf에 다음과 같이 수정하면 된다.

spawn_options=-b -r 11025 -terminate -nobeeps -as 2

-b는 8비트로 설정 -r 숫자는 샘플링레이트 설정이다.
그놈과 enl에서 소리를 들을수 있다는 장점 이외에는 없지만
동시 8출력이 되는 사운드카드에서 1개쯤 써도 상관은 없을듯 하다 :)