嵌入式系统中USB控制的Host/Slave模式的应用
本系统就是采用第二种方式加载USB驱动的。由于本系统的mClinux包来自于英蓓特公司的包,因此节省了很多工作,具体编译过程如下:
1) 在mClinux内核的USB驱动目录中添加如下三个文件:sl811h-usb.c 、sl811h.h、 sl811husb.h。这两个头文件中主要定义了一些关于811HS/T寄存器的宏。
2) 编辑/uclinux-s3cev40/linux-2.4.x/drivers/usb/config.in文件。
首先在config.in文件开头添加如下语句:
dep_tristate 'Support for USB' CONFIG_USB $CONFIG_PCI
if [ "$CONFIG_USB" = "y" -o? "$CONFIG_USB" = "m" ]; then
?? bool '? USB verbose debug messages' CONFIG_USB_DEBUG
comment 'Miscellaneous USB options'
?? bool '? Preliminary USB device filesystem' CONFIG_ USB_DEVICEFS
?? if [ "$CONFIG_ EXPERIMENTAL" = "y" ]; then
????? bool '? Enforce USB bandwidth allocation (EXPERIMENTAL)' CONFIG_USB_BANDWIDTH
?? else
??? define_bool CONFIG_USB_ BANDWIDTH n
?? fi
?? bool '? Long timeout for slow-responding devices (some MGE Ellipse UPSes)' CONFIG_USB_ LONG_TIMEOUT
fi
然后在makefile文件中添加
ifeq ($(CONFIG_USB_ DEBUG),y)
?????? L_OBJS+=sl811h-usb.o
endif
最后在/uclinux-s3cev40/linux-2.4.x/drivers/usb/sl811h_usb.c文件中添加如下代码:
#ifdef CONFIG_USB_DEBUG
?????? #define DEBUG
#else
?????? #undef DEBUG
#endif
#SL811HS/T----- USB Host Controller driver
INCLUDEDIR = /usr/src/linux/include
CFLAGS = -D__KERNEL__ -DMODULE -O -Wall -
static -I$(INCLUDEDIR)
VER = $(shell awk -F" '/REL/ {print $$2}'
$(INCLUDEDIR)/linux/version.h)
all:sl811h-usb.o
sl811h-usb.o:sl811h-usb.csl811h-usb.hsl811h.h
gcc sl811h-usb.c -c $(CFLAGS)
# End this file
3) 在/usr/local/src/uClinux-s3cev40/fs/dev中增加一个设备文件。因为USB设备主要都是通过快速串行通讯来读写数据, 故一般作为字符设备。在/usr/local/src/uClinux-s3cev40/fs/devfs 下执行:
mknod usb0 c 127 0
mknod usb1 c 127 1
4) 执行make xconfig,用户内核设置选择y。
5) 执行make dep。
6) 执行make。USB设备驱动程序被编译进mClinux内核,包含在image.bin文件中。
在嵌入式系统启动时,USB设备驱动就自动执行了。
结语
本设计以mClinux嵌入式操作系统为平台,充分发挥了SL811HST芯片的Host/Slave两种模式的作用,使其在实际使用中非常方便。随着嵌入式USB设备Host/Slave模式的研发,USB设备的使用会更加普及。
晶振相关文章:晶振原理
评论