이 매뉴얼은 JK전자(JK Electronics) 에 의해서 번역, 수정, 작성 되었고 소유권 또한
JK전자(JK Electronics)
의 것입니다. 소유권자의 허가를 받지 않고 무단으로 수정, 삭제하거나 배포 할 수 없습니다.

 

S3C6410 Start Kit Linux User Guide


 
* Update history

- 2011.1.13 : 초기 Release


 
1.리눅스 시리얼 포트 터미널 연결
  1.2 리눅스 프로그램 테스트
      1.2.1 MP3 Player
      1.2.2 Using USB Storage
      1.2.3 Using SD Memory card
      1.2.4 시리얼 포트를 이용한 PC파일 전송
      1.2.5 LED 컨트롤
      1.2.6 Button Test
      1.2.7 Serial Test
      1.2.8 Buzzer Test
      1.2.9 LCD Backlight Test
      1.2.10 I2C EEPROM Test
      1.2.11 ADC Test
      1.2.12 TV-OUT Test
      1.2.13 USB wireless card or SD WiFi Test
      1.2.14 Set network connection
      1.2.15 How to set MAC address
      1.2.16 Telnet log in
      1.2.17 FTP setup
      1.2.18 NFS 서비스
      1.2.19 RTC Test
      1.2.20 Auto-run on boot time
      1.2.21 How to screenshot
      1.2.22 View memory information



 

1.리눅스 시리얼 포트 터미널 연결

리눅스 소프트웨어를 개발할 때 대부분의 개발자들은 시리얼 터미널을 통해서 거의 모든 작업을 하게 됩니다. 개발보드가 초기 부팅시에 다음과 같은 비슷한 화면을 보게 될 것입니다. 개발 환경 구축과 컴파일 과정을 하기전에 리눅스에서 몇몇 프로그램 테스트를 먼저 해보도록 하겠습니다.

s3c6410

1.2 리눅스 프로그램 테스트
1.2.1 MP3 Player

Madplay는 포터블용 console based MP3 Player 프로그램 입니다. 가장 간단한 테스트 방법은 아래와 같이 콘솔창에서 명령을 실행 합니다.

#madplay your.mp3 (mp3 file name)

s3c6410

madplay 프로그램은 Linux-2.6.36 ALSA인터페이스, 오디오 드라이버를 이용해서 Play 합니다. 그리고 현재 실행중인 mayplay 프로그램을 종료 하려면 콘솔창에서 Ctrl+c 를 누르면 됩니다.

1.2.2 Using USB Storage

USB 메모리를 개발보드에 삽입하면 자동으로 /udisk 라는 디렉토리로 마운트 됩니다. 실제적으로는 /dev/mdisk 디바이스 입니다. USB 스토리지 디바이스는 일반적으로 FAT32/VFAT 포맷 이어야 합니다.

s3c6410

s3c6410

1.2.3 Using SD Memory card

SD 메모리 카드를 개발보드에 삽입하면 자동으로 /sdcard 라는 디렉토리로 마운트 됩니다. 일반적으로 FAT32/VFAT 포맷 이어야 합니다.

s3c6410

s3c6410


1.2.4 시리얼 포트를 이용한 PC파일 전송

개발보드와 PC를 시리얼 케일블로 연결한 다음 "rz" or "sz" 명령을 이용해서 타겟 보드에 시리얼 통신을 통해서 파일을 전송 할 수 있습니다.

(1) "sz" 명령을 이용한 파일 보내기(타겟 보드에서 PC로 전송)

HyperTerminal 에서 "Receive File(파일받기)" 메뉴을 선택 하고 "받기" 버튼을 누릅니다.

s3c6410

그리고 나서 콘솔 명령창에서 "sz /root/Documents/sumflower.bmp" 명령을 실행 합니다. 시리얼 명령으로 너무 사이즈가 큰 파일을 전송하는 데에는 시간이 많이 소요 됩니다. "sumflower.bmp" 의 이름은 타겟 보드에 따라서 다른 이름이 될 수 있습니다. 반드시 파일명을 지정할때 디렉토리 루트에서부터 전체 경로명을 모두 적어 주어야 합니다.

s3c6410

(2) "rz" 명령을 이용한 파일 받기(PC에서 타겟 보드로 전송)

HyperTerminal 에서 "Send File(파일보내기)" 메뉴을 선택 한다음 아래과 같이 설정 합니다.

s3c6410

"Send" 버튼을 누르면 파일 전송이 시작 됩니다.

s3c6410

1.2.5 LED 컨트롤

Test procedure name led-player leds

비고

Source file name led-player.c, led.c  
Example source file location CD ROM\Linux\examples.tgz  
Device name /dev/leds  
Kernal driver source code location    

Test procedure name leds.cgi

비고

Source file name leds.cgi  
Example source file location 개발보드의 /www directory  

leds.cgi 는 바이너리 파일이 Shell 스크립트 소스 파일 입니다. 웹 브라우저에서 leds.html 파일에 의해서 호출이 됩니다.

(1) LED Server
개발보드가 부팅이 되면 자동으로 LED Service( /etc/rc.d/init.d/leds )프로그램이 시작 됩니다. 이것은 실제적으로 led-player 스크립트에 의해서 불려지고 이것은 /tmp 디렉토리 밑에서 실행이 되고 led-control 파일이 생성 됩니다. 그리고 아래와 같이 다른 Pipe line 파라미터에 의해서 제어를 할 수 가 있습니다.

#echo 0 0.2 > /tmp/led-control
User LED 4번을 0.2초 간격으로 깜박 거리도록 합니다.

그밖에도 아래와 같은 명령을 내릴 수 가 있습니다.

#echo 1 0.2 >/tmp/led-control
#/etc/rc.d/init.d/leds stop
#/etc/rc.d/init.d/leds start


(2) Individual control LED
/bin/leds 를 통해서 1개의 LED를 컨트롤 할 수 있습니다.

# led
Usage: leds led_no 0|1

led_no는 0 ~ 3까지 선택 할 수 있고, 0:Off, 1:On 입니다. 아래는 LED3을 On 시키는 명령 입니다.
#led 2 1

1.2.6 Button Test

Test procedure name buttons

비고

Source file name Buttons_test.c  
Example source file location CD ROM\Linux\examples.tgz  
Device name /dev/buttons  
Kernal driver source code location Linux-2.6.36/drivers/char/mini6410_buttons.c  

아래 명령을 실행하면 현재 버튼들의 상태를 터미널 창에 보여 줍니다.

#buttons

s3c6410

1.2.7 Serial Test

리눅스 개발보드의 시리얼 포트 이름은 "/dev/ttySAC0,1,2,3" 중에 한가지 입니다. 여기서는 시리얼 포트 2번을 테스트 하려고 합니다. 이 테스트를 위해서 PC의 시리얼 터미널 세팅을 다음과 같이 설정 합니다.
baud rate 115200, No flow control 나머지는 기본값으로 세팅 합니다. 물론 개발보드의 COM2포트는 다른 PC나 아니면 개발용 PC의 다른 시리얼 포트에 연결이 되어 있어야 합니다.

아래 명령을 실행하고 타겟 보드와 연결된 PC 터미널 창에서 아무 글자나 입력을 해서 테스트를 해 봅니다.

COM2: 테스트
#armcomtest -d /dev/ttySAC1 -o

COM3: 테스트
#armcomtest -d /dev/ttySAC2 -o

s3c6410

1.2.8 Buzzer Test

Test procedure name pwm_test

비고

Source file name pwm_test.c  
Example source file location CD ROM\Linux\examples.tgz  
Device name    
Kernal driver source code location    


리눅스 터미널 창에서 "pwm_test" 명령을 입력하면 PWM 에 의해서 부저가 울리게 되고 "+", "-" 키를 입력해서 출력 주파수를 조정 할 수 있습니다. "ESC" 키를 입력하면 테스트가 종료 됩니다.

s3c6410

1.2.9 LCD Backlight Test

Note : 아직 미 구현된 기능 입니다.

LCD Backlight device file : "/dev/backlight-1wire" 입니다. LCD Backlight 조정은 0 ~ 127 단계 까지로 조정 할 수 있습니다. 테스트로 아래 명령은 LCD Backlight를 OFF 하는 멸명 입니다.
# echo 0 > /dev/backlight

기본적으로는 아래와 같이 15 정도의 레벨의 컨트롤 하면 됩니다.
echo 15 > /dev/backlight

1.2.10 I2C EEPROM Test

명령창에서 "i2c -w" 를 입력하면 개발보드의 24C08 EEPROM 메모리에 (0x00-0xff)값을 Write 합니다.


s3c6410

명령창에서 "i2c -r" 를 입력 하면 24C08 EEPROM 메모리에서 데이터를 읽어 옵니다.

s3c6410

1.2.11 ADC Test

Test procedure name adc-test

비고

Source file name adc-test.c  
Example source file location CD ROM\Linux\examples.tgz  
Device name /dev/adc  
Kernal driver source code location Linux-2.6.36/drivers/char/mini6410_adc.c  

 

# adc-test 명령을 입력하면 개발보드의 가변저항 W1의 값을 읽어서 터미널 창에 보여 줍니다. 드라이버 등을 이용해서 W1의 값을 변경해 봅니다.

s3c6410

1.2.12 TV-OUT Test

"/usr/bin" 디렉토리의 tv-test 명령을 실행 합니다. 이 프로그램은 자동으로 "/usr/bin/TestVectors/wanted.264" 파일을 플레이 해서 TV출력으로 보여 줍니다.}


#cd /usr/bin
#tv-test

1.2.13 USB wireless card or SD WiFi Test


다음과 같은 3가지 Wireless 설정 툴을 제공 합니다. "/usr/sbin" 디렉토리에 실행 파일이 있습니다. 여기서 테스트한 USB Wireless network card 모델은 TL-WN321G+ 와 SD-Wifi 모듈 입니다. 아래 그림들에서 보여지는 것들을 네트워크 카드의 종류에 따라서 조금씩 달라 질 수 있습니다.

- scan-wifi - Scan nearby wireless networks
- start-wifi - Used to open the wireless network connection
- stop-wifi - Stop using the wireless network contact

(1) Scan nearby wireless networks

s3c6410

#scan-wifi

s3c6410

위의 그림에서 보면 3개의 wireless AP를 발견 하였고 신호 세기는 "63%" 인것을 알수 있습니다. 그리고 보안 설정이 되어 있습니다.

(2) Wireless network connection

아래 명령을 이용해서 연결을 하거나 파라미터를 주어서 다른 AP에 연결 할 수도 있습니다.

#start-wifi

s3c6410

무선 네트워크의 보안 종류에 따라서 다음과 같은 모드를 지정 할 수 있습니다.
mode - "wpa", "wpa2", "wep", "none". "none" 설정은 보안이 되지 않은 무선 네트워크 연결 모드 입니다.
ssid - 연결 할 무선 AP의 이름을 지정 합니다. 예를 들면 "FriendlyARM4", "NETGEAR" 등 입니다.
password - 보안된 무선 네트워크의 패스워드를 입력 합니다. 보안 문자여서 화면에 표시 되지는 않습니다.

* Connect the open wireless network without a password

Step1 : scan-wifi 명령을 이용해서 wireless network 이름을 찾습니다.
s3c6410

Step2 : start-wifi none FriendlyARM-Test 명령을 이용해서 wireless network 에 연결 합니다.

s3c6410

잠시후에 개발보드에 IP 어드레스 192.168.3.10가 할당이 되고 보드와 연결된 개발용 PC IP address "192.168.3.1" 로 Ping명을 해보면 연결이 된것을 알수 있습니다.

s3c6410

* Connection requires a password to secure wireless network

보안이 없는 네트워크에 연결하는 절차와 비슷하게 하면 됩는데, 한가지 보안 의 종류와 패스워드를 추가해 주어야 합니다.

Step1 : scan-wifi 명령을 이용해서 wireless network 이름을 찾습니다. 위에서와는 다르게 "FriendlyARM-Test" AP가 보안이 설정되어 있음을 알 수 있습니다.

s3c6410

Step2 : "start-wifi wpa FriendlyARM-Test test1234" 명령으로 보안 설정된 무선 AP 에 연결 합니다.

무선 네트워크를 종료 할때에는 "stop-wifi" 명령으로 연결을 닫습니다.

1.2.14 Set network connection

네트워크 설정 명령은 일반적인 리눅스 머신과 크게 다르지는 않습니다. 일반적인 절차는 아래와 같고 사용자의 네트워크 환경에 따라서 IP등은 다를 수 있습니다.
개발용 PC의 명령 프롬프트 창에서 "ipconfig" 명령을 해보면 개발용 PC에 할당된 IP주소를 알 수 있습니다.

s3c6410

개발 보드에서 "/etc/eth0-setting" 파일의 내용을 확인 합니다.

s3c6410

네트워크설정이 맞지 않으면 "/etc/eth0-setting" 파일을 열어서 수정 합니다.

# vi /etc/eth0-setting

s3c6410

개발보드를 재부팅 하지 않고 DNS설정 정보를 바로 적용하려면 아래와 같이 하면 됩니다. 개발보드를 재 부팅 했다면 DNS정보 추가하는 과정은 하지 않아도 됩니다.
먼저 이전에 있던 네트워크 정보를 삭제 합니다.
# rm /etc/resolv.conf

네트워크 정보 파일을 새로 생성 합니다.
#touch /etc/resolv.conf

DNS 정보를 추가 합니다. 물론 vi 에디터를 이용해서 수정 해도 됩니다.
# echo nameserver 202.96.128.86 >> /etc/resolv.conf

모든 설정이 완료되면 개발 보드를 재 부팅 시키고 "ifconfig" 명령으로 설정 내용이 올바르게 반영이 되었는지 확인 합니다.

s3c6410

ping 명령을 해봅니다.

s3c6410

인터넷 브라우저를 실행시켜 봅니다.

s3c6410


1.2.15 How to set MAC address

개발보드상의 MAC address를 ipconfig 명령으로 설정 할 수 있습니다. 우선 ifconfig 명령으로 현재의 설정을 봅니다.


# ifconfig

s3c6410

현재의 MAC address가 "08:90:90:90:90:90" 로 설정된것을 볼 수 있습니다. 이 설정값은 커널 네트워크 드라이버에 기본값으로 설정된 주소 입니다. 이 설정 값들은 다음 명령에 의해서 다시 설정 할 수 있습니다.

# ifconfig eth0 down
# ifconfig eth0 hw ether 00:11:AA:BB:CC:DD

그러고 나서 다시 네트워크를 테스트 해 봅니다.

# ifconfig eth0 up
# ifconfig
# ping 192.168.1.1

1.2.16 Telnet log in

개발보드는 부팅시에 자동으로 telnet 서비스가 시작되어 있어서 다음과 같이 Windows 운영체제에서 "telnet 192.168.0.46" 명령으로 개발보드의 telnet 서시스에 연결 할 수 있습니다.

s3c6410



1.2.17 FTP setup

개발 보드의 FTP서버 서비스는 부팅시 자동으로 시작되는 서비스 입니다. Windows 개발 PC에서 아래와 같이 로그인해서 테스트를 해 볼수 있습니다. 참고로 여기서는 사용자 ID와 패스워드가 모드 "plg", "plg" 로 하였습니다. FTP전송이 완료되는 /home/plg/test.mp3 파일이 있는것을 확인 할 수 있습니다.



1.2.18 NFS 서비스

개발 보드를 다음 명령으로 NFS서버(server's IP address is 192.168.0.41)에 연결 합니다.

NFS서버 PC의 IP주소와 NFS Share디렉토리는 다음과 같습니다.
s3c6410

# mount -t nfs -o nolock 192.168.0.41:/home/nfs_share /mnt

s3c6410


NFS 서버와 마운트가 성공하면 /mnt 디렉토리에 추가가 됩니다. NFS 디렉토리의 마운트 해제는 아래와 같이 합니다.

# umount /mnt


1.2.19 RTC Test

아직 보완이 필요한 명령 입니다.

리눅스에서 일반적으로 "date" 명령어로 시간을 설정 할 수 있습니다. 이 개발보드에서는 "hwclock" 명령에 의해서 시간을 설정 할 수 있습니다.

(1) date -s 042916352007 #Set time 2007-04-29 16:34
(2) hwclock -w #Set the time to deposit S3C6410 Internal RTC

1.2.20 Auto-run on boot time

개발보드 부팅시에 자동으로 다양한 프로그램들을 실행 시킬 수 있습니다. 개발보드의 "/etc/init.d/rcS" 파일에서 설정 할 수 있습니다.
/etc/init.d/rcS 파일의 내용 입니다.

#! /bin/sh

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:
runlevel=S
prevlevel=N
umask 022
export PATH runlevel prevlevel

#
# Trap CTRL-C &c only in this shell so we can interrupt subprocesses.
#
trap ":" INT QUIT TSTP
/bin/hostname FriendlyARM

[ -e /proc/1 ] || /bin/mount -n -t proc none /proc
[ -e /sys/class ] || /bin/mount -n -t sysfs none /sys
[ -e /dev/tty ] || /bin/mount -t ramfs none /dev
/bin/mount -n -t usbfs none /proc/bus/usb

echo /sbin/mdev > /proc/sys/kernel/hotplug
/sbin/mdev -s
/bin/hotplug
# mounting file system specified in /etc/fstab
mkdir -p /dev/pts
mkdir -p /dev/shm
/bin/mount -n -t devpts none /dev/pts -o mode=0622
/bin/mount -n -t tmpfs tmpfs /dev/shm
/bin/mount -n -t ramfs none /tmp
/bin/mount -n -t ramfs none /var
mkdir -p /var/empty
mkdir -p /var/log
mkdir -p /var/lock
mkdir -p /var/run
mkdir -p /var/tmp

/sbin/hwclock -s

syslogd
/etc/rc.d/init.d/netd start
echo " " > /dev/tty1
echo "Starting networking..." > /dev/tty1
sleep 1
/etc/rc.d/init.d/httpd start
echo " " > /dev/tty1
echo "Starting web server..." > /dev/tty1
sleep 1


/etc/rc.d/init.d/leds start
echo " " > /dev/tty1
echo "Starting leds service..." > /dev/tty1
echo " "
sleep 1

echo " " > /dev/tty1
/etc/rc.d/init.d/alsaconf start
echo "Loading sound card config..." > /dev/tty1
echo " "

/sbin/ifconfig lo 127.0.0.1
/etc/init.d/ifconfig-eth0

/bin/qtopia &
echo " " > /dev/tty1

echo "Starting Qtopia, please waiting..." > /dev/tty1

1.2.21 How to screenshot

"snapshot" 명령을 이용해서 LCD화면의 내용을 png 그래픽 파일로 저장 할 수 있습니다. 실제 명령은 아래와 같습니다.

#snapshot pic.png

1.2.22 View memory information

“cat /proc/meminfo" 명령을 이용해서 개발보드의 메모리 정보를 알 수 있습니다.

linux

또한 S3C6410의 Multimedia co-processor의 정보를 보기위해서는 cat /proc/videomem" 명령을 이용해서 볼 수 있습니다.

linux

그리고 개발보드이 물리적인 메모리 사이즈는 리눅스 부팅시 U-boot 로깅을 통해서도 볼 수 있습니다.DRAM 사이즈는 개발보드에 따라서 128MB ~ 1.0GB 일수도 있습니다.

linux