嵌入式系統(tǒng)中USB控制的Host/Slave模式的應(yīng)用
本系統(tǒng)就是采用第二種方式加載USB驅(qū)動的。由于本系統(tǒng)的mClinux包來自于英蓓特公司的包,因此節(jié)省了很多工作,具體編譯過程如下:
1) 在mClinux內(nèi)核的USB驅(qū)動目錄中添加如下三個文件:sl811h-usb.c 、sl811h.h、 sl811husb.h。這兩個頭文件中主要定義了一些關(guān)于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中增加一個設(shè)備文件。因為USB設(shè)備主要都是通過快速串行通訊來讀寫數(shù)據(jù), 故一般作為字符設(shè)備。在/usr/local/src/uClinux-s3cev40/fs/devfs 下執(zhí)行:
mknod usb0 c 127 0
mknod usb1 c 127 1
4) 執(zhí)行make xconfig,用戶內(nèi)核設(shè)置選擇y。
5) 執(zhí)行make dep。
6) 執(zhí)行make。USB設(shè)備驅(qū)動程序被編譯進(jìn)mClinux內(nèi)核,包含在image.bin文件中。
在嵌入式系統(tǒng)啟動時,USB設(shè)備驅(qū)動就自動執(zhí)行了。
結(jié)語
本設(shè)計以mClinux嵌入式操作系統(tǒng)為平臺,充分發(fā)揮了SL811HST芯片的Host/Slave兩種模式的作用,使其在實際使用中非常方便。隨著嵌入式USB設(shè)備Host/Slave模式的研發(fā),USB設(shè)備的使用會更加普及。
晶振相關(guān)文章:晶振原理
評論