Embedded Linux Kernel Porting & Device Driver - 유柳 명明 환桓유柳 명明 환桓 [ ]
NETPLUG>>> Embedded Linux Kernel 2.6 Porting & Device Driver page 목 차 (Index) 1 임베디드 리눅스 관련 최신 경향 커널 2.6 포팅 2 3 커널 2.6 기반 디바이스 드라이버 질의 응답 4 ATMEL AVR ATmega128 based Embedded Software Education Solution DK128 Full Set Samsung S3C2440A(ARM9) based ARM & Embedded OS Education Solution DK-ARM-2440 Kit
NETPLUG>>> Embedded Linux Kernel 2.6 Porting & Device Driver page 1 임베디드 리눅스 관련 최신 경향 _#1 : 삼성전자
NETPLUG>>> Embedded Linux Kernel 2.6 Porting & Device Driver page 1 임베디드 리눅스 관련 최신 경향 _#2 : 구글 (Google)
NETPLUG>>> Embedded Linux Kernel 2.6 Porting & Device Driver page 1 임베디드 리눅스 관련 최신 경향 _#3 : Paradigm Shift LinuxWin CE Ports Networks Tool-chain GUI MobileNetwork GUI Networks ex) 휴대폰, 차세대 가전기기 ex) 홈 게이트웨이, 로봇
NETPLUG>>> Embedded Linux Kernel 2.6 Porting & Device Driver page 2 커널 2.6 포팅 이론적인 포팅 절차 실무에서의 포팅 절차 Original Kernel ARM Core Patch Target Board Patch Reference Kernel ARM Core Patch Target Board Patch XScale Core Patch Why? 1) 시간 2) 기능 구현 여부 : ex) SDIO, BlueTooth, CF I/O mode 3) 성능, 안정성
NETPLUG>>> Embedded Linux Kernel 2.6 Porting & Device Driver page 3 커널 2.6 기반 디바이스 드라이버 _#1 : 결과물의 차이 Kernel 2.4Kernel 2.6 확장자 *.o (ELF relocatable)*.ko (ELF relocatable) Makefile User Application 용 MakefileKernel 용 Makefile 문법 int dev_open() int dev_release() struct file_operations dev_fops Work Queue USB FIQ, IRQ
NETPLUG>>> Embedded Linux Kernel 2.6 Porting & Device Driver page 3 커널 2.6 기반 디바이스 드라이버 _#2 : Makefile 차이 Kernel 2.4Kernel 2.6 CC = arm-linux-gcc KERNEL_INC = /root/2.4.20/include CFLAGS = -DMODULE –D__KERNEL__ -I$(KERNEL_INC) DEV_SRC = driver_src APP_SRC = user_app all: $(DEV_SRC).o $(APP_SRC) $(SRC).o: $(SRC).c $(CC) $(CFLAGS) -c $(SRC) $(APP_SRC) : $(APP_SRC).c $(CC) $(APP_SRC).c -o $(APP_SRC) clean : rm -f *.o $(APP_SRC) CC := arm-linux-gcc KERNEL := /root/ obj-m := driver_src.o APP_SRC := user_app #PWD := `pwd` PWD := $(shell pwd) default: $(APP) $(MAKE) -C $(KERNEL) SUBDIRS=$(PWD) modules $(APP_SRC): $(APP_SRC).c $(CC) $(APP_SRC).c -o $(APP_SRC) clean: rm -f *.ko *.mod.*.*.cmd.tmp* *.o rm -f $(APP_SRC)
NETPLUG>>> Embedded Linux Kernel 2.6 Porting & Device Driver page 3 커널 2.6 기반 디바이스 드라이버 _#3 : 문법 차이 Kernel 2.4Kernel 2.6 int device24_open() { printk(); MOD_INC_USE_COUNT; return 0; } int device26_open() { printk(); return 0; } int device24_release() { printk(); MOD_DEC_USE_COUNT; return 0; } int device26_release() { printk(); return 0; } struct file_operations device24_fops = { read: device24_read, write: device24_write, open: device24_open, ioctl: device24_ioctl, release: device24_release, }; struct file_operations device26_fops = {.open = device26_open,.release = device26_release,.read = device26_read,.write = device26_write,.ioctl = device26_ioctl, };
NETPLUG>>> Embedded Linux Kernel 2.6 Porting & Device Driver page 3 커널 2.6 기반 디바이스 드라이버 _#4 : 그 외 Kernel 2.4Kernel 2.6 Task Queue Work Queue --> 선점 (Preemption) 지원 Only IRQ InterruptBoth FIQ, IRQ Interrupt support USB support ALSA (Advanced Linux Sound Architecture) support 1) GUI --> Vector Graphics 2) Java --> JavaFX 3) Development Environment --> VMWare Check! $KERNEL/arch/arm/kernel/
NETPLUG>>> Embedded Linux Kernel 2.6 Porting & Device Driver page 4 질의 응답