'S3C6410'에 해당되는 글 31건

  1. 2011.06.09 [s3c6410] x264 porting
  2. 2011.06.03 [s3c6410] usb disk automount rules
  3. 2011.04.28 [s3c6410] mplayer 포팅
  4. 2011.04.27 [s3c6410] Keypad device driver 포팅
  5. 2011.04.25 [s3c6410] linux kernel bootloaod 만들기
  6. 2011.04.22 [s3c6410] ez-s3c6410 bootloader logo 설정
  7. 2011.03.31 [qt4] qt4.7.2 cross compile for S3C6410 + Phonon
  8. 2011.03.15 [s3c6410] SDL + tslib 환경 설정값
  9. 2011.03.14 [s3c6410] busybox의 telnetd 을 사용해 보자
  10. 2011.03.14 [S3C6410,Android] tslib 포팅 for Android

[s3c6410] x264 porting

CC=arm-generic-linux-gnueabi-gcc ./configure --prefix=/usr/arm-generic-linux-gnueabi --disable-gpac --enable-static  --enable-strip --cross-prefix=arm-generic-linux-gnueabi- --host=arm-generic-linux-gnueabi
make && make install

'임베디드 > S3C6410' 카테고리의 다른 글

[s3c6410] glib-2.2 porting 중 에러 대처  (0) 2011.06.09
[s3c6410] ffmpeg porting  (0) 2011.06.09
[s3c6410] usb disk automount rules  (0) 2011.06.03
[s3c6410] mplayer 포팅  (0) 2011.04.28
[s3c6410] Keypad device driver 포팅  (0) 2011.04.27

[s3c6410] usb disk automount rules

▶ 11-usb_storage_automount.rules
KERNEL!="ub[a-z][0-9]",GOTO="local_rules_end"

# Global mount options
ACTION=="add",ENV{mount_options}="relatime,users"
# filesystem specific options
ACTION=="add", PROGRAM=="/lib/udev/vol_id -t %N",
RESULT=="vfat|ntfs",
ENV{mount_options}="$env{mount_options},utf8,gid=100,umask=002"

ACTION=="add",RUN+="/bin/mount -o $env{mount_options} /dev/%k /mnt/usb"
ACTION=="remove",RUN+="/bin/umount -l /mnt/usb"

LABEL="local_rules_end"

위 룰 스크립트를 /etc/udev/rules.d에 저장시키고,
/etc/udev/rules.d/udev.rules 파일 내에 SUBSYSTEM이 "block"인 경우 실행하는 스크립트가 제대로 지정되어 있는지 확인한다.

# Media automounting
#SUBSYSTEM=="block", ACTION=="add"    RUN+="/etc/udev/scripts/mount.sh"
#SUBSYSTEM=="block", ACTION=="remove" RUN+="/etc/udev/scripts/mount.sh"
SUBSYSTEM=="block", ACTION=="add"    RUN+="/etc/udev/rules.d/11-usb_storage_automount.rules"
SUBSYSTEM=="block", ACTION=="remove" RUN+="/etc/udev/rules.d/11-usb_storage_automount.rules"



* 내용 추가 - 2014/09/03
udev가 무겁기 때문에 eudev 프로젝트가 생기게 되었다.

eudev는 udev에서 파생 된 만큼 udev에서 사용하는 rule을 적용 시킬 수 있다.

eudev을 사용할 때 usb memory을 자동 마운트/언마운트 하는 rule이다.

** 해당 내용을 " /etc/udev/rules.d/11-usb_storage_automount.rules" 에 저장한 후에, "udevadm control --reload" 명령으로 rule을 다시 읽도록 한다.

KERNEL!="sd[a-z][0-9]", GOTO="media_by_label_auto_mount_end"

 

# Import FS infos

IMPORT{program}="/sbin/blkid -o udev -p %N"

 

# Get a label if present, otherwise specify one

ENV{ID_FS_LABEL}!="", ENV{dir_name}="%E{ID_FS_LABEL}"

ENV{ID_FS_LABEL}=="", ENV{dir_name}="usbhd-%k"

 

# Global mount options

ACTION=="add", ENV{mount_options}="relatime"

 

# Filesystem-specific mount options

ACTION=="add", ENV{ID_FS_TYPE}=="vfat|ntfs", ENV{mount_options}="$env{mount_options},utf8,gid=100,umask=002"

 

# Mount the device

ACTION=="add", RUN+="/bin/mkdir -p /mnt/usbstick", RUN+="/bin/mount -o $env{mount_options} /dev/%k /mnt/usbstick"

 

# clean up after removal

ACTION=="remove", ENV{dir_name}!="", RUN+="/bin/umount -l /mnt/usbstick"

 

# exit

LABEL="media_by_label_auto_mount_end"


'임베디드 > S3C6410' 카테고리의 다른 글

[s3c6410] ffmpeg porting  (0) 2011.06.09
[s3c6410] x264 porting  (0) 2011.06.09
[s3c6410] mplayer 포팅  (0) 2011.04.28
[s3c6410] Keypad device driver 포팅  (0) 2011.04.27
[s3c6410] linux kernel bootloaod 만들기  (0) 2011.04.25

[s3c6410] mplayer 포팅

Version : Mplayer-1.0rc4
ToolChain Version : arm-generic-linux-gnueabi-gcc 4.3.2
Configure options :
./configure --cc=arm-generic-linux-gnueabi-gcc --host-cc=gcc --target=arm-generic-linux-gnueabi --enable-static --enable-fbdev --disable-mencoder

사전에 termcap-2.0.8을 포팅해야 한다.

./configure --cc=arm-generic-linux-gnueabi-gcc --host-cc=gcc --target=arm-generic-linux-gnueabi --enable-static --enable-fbdev --disable-mencoder --enable-armv5te --codecsdir=/usr/arm-generic-linux-gnueabi/lib/codecs

[s3c6410] Keypad device driver 포팅

기존 falinux linux kernel에는 keypad 드라이버가 제거되어 있다.
삼성에서 만든 keypad 드라이버를 구해서 커널 소스에 포함 시킨 후 keypad device에서 사용하는 변수들을 소스 파일들에 포함 시켜 주면 된다.
포함 시켜줘야할 변수들
  • arch/arm/plat-s3c64xx/devs.c
static struct resource s3c_keypad_resource[] = {
    [0] = {
         .start = S3C_PA_KEYPAD,
         .end  = S3C_PA_KEYPAD+ S3C_SZ_KEYPAD - 1,
         .flags = IORESOURCE_MEM,
    },
    [1] = {
        .start = IRQ_KEYPAD,
        .end  = IRQ_KEYPAD,
        .flags = IORESOURCE_IRQ,
    }
};

struct platform_device s3c_device_keypad = {
    .name                = "s3c-keypad",
    .id                     = -1,
    .num_resources    = ARRAY_SIZE(s3c_keypad_resource),
    .resource            = s3c_keypad_resource,
};
EXPORT_SYMBOL(s3c_device_keypad);
  • arch/arm/mach-s3c6410/mach-ezs3c6410.c
static struct platform_device *ezs3c6410_devices[] __initdata = {
                                   :
                                   :
    &s3c_device_keypad,
                                   :
                                   :
};
  • arch/arm/plat-s3c/include/plat/devs.h
                                  :
extern struct platform_device s3c_device_usbgadget;
extern struct platform_device s3c_device_keypad;
                                  :

Kconfig, Makefile에 keypad관련 내용을 추가하고 make menuconfig을 이용해서 선택한 후에 컴파일 하면 된다.




[s3c6410] linux kernel bootloaod 만들기

  • 필요한 패키지
    • ubuntu : netpbm
  • 커널 소스 수정
    • drivers/video/logo/Kconfig
      • 수정 내용
config LOGO_MULTIPAD_CLUT224
    bool "INFOCRYPT MULTPAD 224-color Linux logo"
    default y

    • drivers/video/logo/Makefile
obj-$(CONFIG_LOGO_MULTIPAD_CLUT224)  += logo_multipad_clut224.o

    • drivers/video/logo/logo.c
                                              :
extern const struct linux_logo logo_multipad_clut224;
                                              :
#ifdef CONFIG_LOGO_MULTIPAD_CLUT224
    logo = &logo_multipad_clut224;
#endif

  • make menuconfig 에서 추가한 로고 선택
  • 이미지 파일을 ppm(pnm)파일로 변환
    • 여기서는 gif 파일을 ppm 파일로 변환하는 걸로 설명
      • giftopnm image.gif | pnmtoplainpnm > image.ppm
      • pnmquant -fs 223 image.ppm > image_256.ppm
      • pnmnoraw image_256.ppm > logo_multipad_clut224.ppm
  • 마지막으로 커널을 컴파일하고 타켓보드에 저장하면 된다.

[s3c6410] ez-s3c6410 bootloader logo 설정

ez-s3c6410 보드 부트로더에 로고 설정하기
bootloader 설정에 들어가서 KCMD5 번에 로고 사용을 알려주는 환경설정값을 입력해야 한다.
반드시 KCMD5번에 입력해야 제대로 적용이 된다.
설정값은 LCD 해상도에 따라 틀린데 기본적으로 붙어있는 480x272 LCD일 경우 아래와 같이 설정한다.
video=ezfb:panel:1

마지막에 있는 1이  해상도를 알려주는 값이다.

다음으로, 설정에서 9번 항목인 "logo image file name"값을 설정한다.
부트로더에서 사용할 로고 파일은 24bit bitmap으로 되어 있어야 한다.

이렇게 설정값을 입력한 다음에 'tfl' 또는 'zfl'을 이용해서 logo 파일을 다운로드 받아 flash 저장하면 로고
설정이 끝나게 된다.

[qt4] qt4.7.2 cross compile for S3C6410 + Phonon

  • 파일 내용 수정
    • mkspecs/qws/linux-arm-gnueabi-g++/qmake.conf
QMAKE_CC                = arm-generic-linux-gnueabi-gcc
QMAKE_CXX               = arm-generic-linux-gnueabi-g++
QMAKE_LINK              = arm-generic-linux-gnueabi-g++
QMAKE_LINK_SHLIB        = arm-generic-linux-gnueabi-g++
QMAKE_AR                = arm-generic-linux-gnueabi-ar cqs
QMAKE_OBJCOPY           = arm-generic-linux-gnueabi-objcopy
QMAKE_STRIP             = arm-generic-linux-gnueabi-strip
QMAKE_RANLIB            = arm-generic-linux-gnueabi-ranlib
  • configure options
    • ./configure -prefix [dir] -embedded arm -little-endian -release -no-largefile -no-accessibility -no-qt3support -qt-zlib -qt-gif -qt-libpng -no-libmng -qt-libjpeg -no-nis -no-cups -qt-freetype -depths 16 -qt-mouse-tslib -xplatform qws/linux-arm-gnueabi-g++ -no-neon
    • 현재 내 시스템에서 prefix는 /app/qt4-arm 이다.
  • 개발 환경값 설정 스크립트
#!/bin/sh
export QTDIR=[dir]
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export QTINC=$QTDIR/include
export QTLIB=$QTDIR/lib
export qt_prefix=$QTDIR

  • tslib 사용하기 위한 설정값
    • export QWS_MOUSE_PROTO="tslib:/dev/input/event1"
      • 장치에 대한 정보는 /proc/bus/input/devices에서 찾을 수 있다.



+Phonon 같이 cross compile 하기
위와 같이 qmake.conf을 변경한 상태에서 진행

 ./configure -prefix $PWD/_install -embedded arm -little-endian -release -no-largefile -no-accessibility -no-qt3support -qt-zlib -qt-gif -qt-libpng -no-libmng -qt-libjpeg -no-nis -no-cups -qt-freetype -depths 16 -qt-mouse-tslib -xplatform qws/linux-arm-gnueabi-g++ -no-neon -multimedia -phonon -audio-backend -phonon-backend -webkit  -v -I/usr/arm-generic-linux-gnueabi/include/glib-2.0 -I/usr/arm-generic-linux-gnueabi/lib/glib-2.0/include -L/usr/arm-generic-linux-gnueabi/lib -lgthread-2.0


위 옵션으로 진행 중...
현재 Gstreamer관련 에러가 난 상태다 아래는 해당 오류 메세지다
arm-generic-linux-gnueabi-g++ -Wl,-O1 -Wl,-rpath,/app/qt4-arm/lib -o glib glib.o     -L/usr/arm-generic-linux-gnueabi/lib -lgthread-2.0
Glib enabled.
GStreamer auto-detection... ()
arm-generic-linux-gnueabi-g++ -c -pipe -O2 -Wall -W  -I../../../mkspecs/qws/linux-arm-gnueabi-g++ -I. -I/usr/arm-generic-linux-gnueabi/include/glib-2.0 -I/usr/arm-generic-linux-gnueabi/lib/glib-2.0/include -o gstreamer.o gstreamer.cpp
gstreamer.cpp:42:21: error: gst/gst.h: No such file or directory
gstreamer.cpp:43:42: error: gst/interfaces/propertyprobe.h: No such file or directory
gstreamer.cpp:44:37: error: gst/interfaces/xoverlay.h: No such file or directory
gstreamer.cpp:48:4: error: #error "No GST_VERSION_* macros"
gstreamer.cpp:53: warning: unused parameter 'argc'
gstreamer.cpp:53: warning: unused parameter 'argv'
make: *** [gstreamer.o] 오류 1
GStreamer disabled.

gstreamer 까지 컴파일 완료

gstreamer과,  gst-plugins-base 까지  컴파일 완료 후 재도전

 ./configure -prefix $PWD/_install -embedded arm -little-endian -release -no-largefile -no-accessibility -no-qt3support -qt-zlib -qt-gif -qt-libpng -no-libmng -qt-libjpeg -no-nis -no-cups -qt-freetype -depths 16 -qt-mouse-tslib -xplatform qws/linux-arm-gnueabi-g++ -no-neon -multimedia -phonon -audio-backend -phonon-backend -webkit  -v -I/usr/arm-generic-linux-gnueabi/include/glib-2.0 -I/usr/arm-generic-linux-gnueabi/lib/glib-2.0/include -L/usr/arm-generic-linux-gnueabi/lib -lgthread-2.0 -I/usr/arm-generic-linux-gnueabi/include/gstreamer-0.10 -I/usr/arm-generic-linux-gnueabi/include/libxml2 --force-pkg-config

주의!!!
configure 을 하기 전에 PKG_CONFIG_PATH을 설정해 줘야 한다.
export PKG_CONFIG_PATH="/usr/arm-generic-linux-gnueabi/lib/pkgconfig:/app/lib/pkgconfig"

./configure -prefix $PWD/_install -embedded arm -little-endian -release -no-largefile -no-accessibility -no-qt3support -qt-zlib -qt-gif -qt-libpng -no-libmng -qt-libjpeg -no-nis -no-cups -qt-freetype -depths 16 -qt-mouse-tslib -xplatform qws/linux-arm-gnueabi-g++ -no-neon -multimedia -phonon -audio-backend -phonon-backend -webkit  -v -force-pkg-config -I/usr/arm-generic-linux-gnueabi/include/glib-2.0 -I/usr/arm-generic-linux-gnueabi/include/gstreamer-0.10 -I/usr/arm-generic-linux-gnueabi/include/libxml2

* gsteramer-0.10 include, lib 설정 방법 변경
./configure -prefix /app/qt4-arm -embedded arm -little-endian -release -no-largefile -no-accessibility -no-qt3support -qt-zlib -qt-gif -qt-libpng -no-libmng -qt-libjpeg -no-nis -no-cups -qt-freetype -depths 16 -qt-mouse-tslib -xplatform qws/linux-arm-gnueabi-g++ -no-neon -multimedia -phonon -audio-backend -phonon-backend -webkit  -v -force-pkg-config -I`/usr/arm-generic-linux-gnueabi/bin/pkg-config --cflags gstreamer-0.10`

[s3c6410] SDL + tslib 환경 설정값

SDL 과 tslib을 같이 사용하기 위해서는 환경 설정값이 필요하다.
하나라도 빠지게 되면 sdl상에서의 마우스 움직임이 틀려진다.

- TSLIB
export TSLIB_TSDEVICE=/dev/input/event1
export TSLIB_CONFFILE=/etc/ts.conf
export TSLIB_FBDEVICE=/dev/fb0

- SDL
export SDL_MOUSEDRV=TSLIB
export SDL_MOUSEDEV=/dev/input/event1

* tslib의 calibration 데이터 file : /etc/pointercal 
* 위 데이터는 ts_calibration을 해주면 생성되게 된다.

[s3c6410] busybox의 telnetd 을 사용해 보자

  • 버젼 : 1.18.0
  • 사전 확인 사항 :
    • 커널 옵션에서 Device Drivers -> Character devices -> Unix98 PTY support 항목이 선택 되었는지 확인(Support multiple instances of devpts 마찬가지)
    • busybox 설정에서 확인
      • CONFIG_LOGIN=y
      • CONFIG_FEATURE_SUID=y
      • CONFIG_TELNETD=y 
  • 타겟보드 부팅 후 작업
    • mount -t devpts devpts /dev/pts
      • mount 되었는지 확인해 보자
      • 자동으로 마운트 되게 하려면 /etc/fstab에 아래와 같이 추가해 주자
        • devpts      /dev/pts      devpts     default      0   0
    • ptyp0~9번까지 생성
      • mknod /dev/ptyp0 c 2 0 
      • ~
      • mknod /dev/ptyp9 c 2 9
    • /etc/nsswitch.conf 파일 내용이 아래와 같은지 확인.(틀리면 수정)
      • passwd:        files
      • group:           files
      • shadow:        files
    • telnet에 접속할 수 있는 사용자를 추가 하자.
      • adduser -h /home/user user
      • 사용자가 추가 되었는지 /etc/passwd, /etc/shadow 을 확인하자.
      • 램디스크인 상태라면 다음 재부팅 할 때 사용자에 대한 정보는 초기화 될 것이다. 이걸 해결하려면 좀 전에 추가한 사용자에 대한 정보를 /etc/passwd, /etc/shadow에서 복사해서 호스트에서 구축하는 램디스크에 동일한 파일에 동일한 내용으로 추가해 주면 된다.
      • /etc/services, /etc/protocols, /etc/securetty 파일이 존재 하는지 확인, 없으면 호스트에 있는 파일들을 타겟에 넣어준다.
      • /etc/securetty 파일 안에 아래와 같은 내용을 넣어준다.
        • ttyS0
        • ttyS1
        • ttyS2
        • ttyS3
        • tty1
        • tty2
        • tty3
        • tty4
        • pts/0
        • pts/1
        • pts/2
        • pts/3
        • pts/4
        • pts/5
        • pts/6
        • pts/7
        • pts/8
        • pts/9

[S3C6410,Android] tslib 포팅 for Android

안드로이드 상에서 tslib을 이용한 calibration

첨부된 파일 참조
prev 1 2 3 4 next