在目錄/drivers/serial/下創建se955_scan.c
修改同目錄下的Makefile和Kconfig文件
修改Makefile文件:
在文件的最後添加
obj-$(CONFIG_SE955_SCAN) += se955_scan.o
修改Kconfig文件:
在文件serial drivers menu處添加
menu "Serial drivers"
depends on HAS_IOMEM
# added by [email protected]
config SE955_SCAN
tristate "SE955_module"
depends on MACH_SMDKV210 || MACH_SMDKC110
help
This support for v-simtone se955 scan module
在調試的時候配置make menuconfig的時候將se955_scan 驅動配置成M,方便加載、卸載調試。
此處先略去se955_scan.c文件的內容,先講解整個驅動創建流程,文章後面會填補此文件的具體內容。
編輯好了se955_scan.c文件後,編譯生成*.ko文件,切換到到linux kernel的根目錄下:
make SUBDIR=drivers/serial/ modules
命令編輯模塊,生成ko文件。
將ko文件通過adb工具push到嵌入式文件系統中,然後加載:
insmod **.ko
下面附上se955_scan.c文件(注:若有此話,說明未調試完,會有陸續改動)。
在沒有加載ko文件前,文件系統中的設備信息打印如下:
# ls dev/
s3c_bc
cpuctl
fb4
fb3
fb2
fb1
fb0
pvrsrvkm
video22
video21
video14
video2
video1
video0
ppp
mtd
cdev_pm
vcsa1
vcs1
vcsa
vcs
ptmx ttyef
console
tty
input
s3c-mem
kmsg
urandom
random
full
zero
port
null
kmem
mem
network_throughput
network_latency
cpu_dma_latency
log
binder
device-mapper
watchdog
alarm
psaux
android_adb_enable
android_adb
ubi_ctrl
apm_bios
sec-g2d
CEC
HPD
s3c-jpg
s3c-mfc
ecompass_ctrl
mmc31xx
ashmem
adc
rfkill
vga_arbiter
snd
ttyS3
ttyS2
ttyS1
ttyS0
s3c2410_serial3
s3c2410_serial2
s3c2410_serial1
s3c2410_serial0
usbdev1.1
usb1
rtc0
graphics
block
i2c-5
i2c-4
i2c-3
i2c-2
i2c-1
i2c-0
socket
pts
# ls dev/
s3c_bc
cpuctl
fb4
fb3
fb2
fb1
fb0
pvrsrvkm
video22
video21
video14
video2
video1
video0
ppp
mtd
cdev_pm
vcsa1
vcs1
vcsa
vcs
ptmx
ttyef
console
tty
input
s3c-mem
kmsg
urandom
random
full
zero
port
null
kmem
mem
network_throughput
network_latency
cpu_dma_latency
log
binder
device-mapper
watchdog
alarm
psaux
android_adb_enable
android_adb
ubi_ctrl
apm_bios
sec-g2d
CEC
HPD
s3c-jpg
s3c-mfc
ecompass_ctrl
mmc31xx
ashmem
adc
rfkill
vga_arbiter
snd
ttyS3
ttyS2
ttyS1
ttyS0
s3c2410_serial3
s3c2410_serial2
s3c2410_serial1
s3c2410_serial0
usbdev1.1
usb1
rtc0
graphics
block
i2c-5
i2c-4
i2c-3
i2c-2
i2c-1
i2c-0
socket
pts