基于S3C44B0X处理器和mClinux实现USB设备两种模式的应用设计

发布时间:2023-02-06  

引言

目前,USB 设备产品的应用非常广泛,但市场上能够提供Host/Slave两种模式的USB控制芯片并不多,本系统采用CYPRESS公司的SL811HST芯片作为USB接口的控制芯片,实现Host/Slave两种工作模式。


系统介绍

本系统是以三星公司的S3C44B0X为嵌入式处理器,mClinux为操作系统的专用PDA,通过无线方式实现与上位机的通信,同时也可通过USB接口直接控制USB打印机输出。其中USB控制芯片采用CYPRESS公司的SL811HST芯片,它有两种工作模式Host/Slave。模式的改变是由该芯片M/S脚的电平值决定,其值可以通过软件设置来改变。当置M/S脚为低电平时,它是Host模式,可以直接控制打印机;当置M/S脚为高电平时,它是Slave模式,可以下载PC的最新资料,同时可对PDA充电电池充电。


硬件设计

三星公司的S3C44B0X是一款专为手持设备和通用设备而设计的,16/32位RISC 结构的嵌入式处理器。

CYPRESS公司的SL811HST是嵌入式的USB 主机或外设接口控制器。其基本功能如下:

1) 支持USB 1.1 的全速和低速设备;

2) 虚拟的外部总线,使得仅需占用和外接CPU 的1 根地址线A0,数据线为8位;

3) 16 个内部寄存器,可以对USB Host 进行充分的控制;内部多达256 字节的RAM,为USB 传输建立了足够的缓冲区;

4) 操作电压为3.3V,但是I/O 端口为5V Tolerant,因此可以自由地和5V 或3.3V 的CPU 系统连接;

5) 可接12MHz 或48MHz外置晶振,对其操作通过16个寄存器来完成。

GPE5是Host/Slave模式控制管脚,它同时同步控制USB接口的负载方式。GPE4口可以监视USB接口上是否有主USB设备插入,如果有,VUSB为高电平;没有则为低电平。GPE3口用于显示USB设备是否处于就绪或相应的Host/Slave模式工作状态


软件设计

在Linux操作系统中,驱动程序的加载方式为:

1) 将驱动程序作为可加载的模块(Module),在系统超级用户(Root)权限下使用insmod命令动态加载,使之成为系统核心的一部分。对于USB 设备而言,由于可热插拔,一般采用模块化的设备驱动程序。

2) 将设备驱动程序的源代码加进系统内核,编译移植到嵌入式系统,系统启动后将自动加载驱动。USB 协议栈程序一般采用这种方法加入内核,进而产生一个叫做“USB 核心”的子系统。这个子系统提供了许多数据结构、宏定义、功能函数和应用程序接口(API)来对硬件或设备进行支持。


本系统就是采用第二种方式加载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设备的使用会更加普及。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    USB转接口已经被PC识别,如下图所示:   从上图中我们可以看到我们所连接的串口设备是ttyUSB0,可以通过命令 ls -l /dev/ttyUSB*来查看相关的信息。至此,我们......
    台     4.1使用ums更新bootloader 在控制台使用ums 0 mmc 0命令可以将开发板上的sdcard分区映射到PC上,然后再由PC将设备连接到虚拟机当中的ubuntu系统。 更新......
    连接到虚拟机当中的ubuntu系统。 更新sdcard Board$>ums 0 mmc 0 更新emmc Board$>ums 0 mmc 1 在输入命令之后虚拟机会提示检测到新的USB......
    输出有/dev/ttyUSB0或1等等,说明系统已正确识别该USB转串口设备。     也可以用“#lsusb”命令查看是否有“USB-Serial adapter”类似的设备。   c. 设置......
    开发板linux自带的USB摄像头软件也可以直接查看到图像,所以我算是省了查找USB摄像头驱动这一个步骤。 现在两个设备都已成功连接了,到了mini2440开发板自带linux发挥作用的时候了,在其......
    不要使用gateway4配置网关否则开机生成双默认网关,虚拟机连外网会有问题 如果没有ens35可以先用 ifconfig -a 查看再用 ( ifconfig 网卡名 up )开启对应网卡。 route -n 使用上面的命令查看......
    wifi网卡RT3070在S3C2440的移植和使用;一、配置内核选择WIFI驱动 1. 将usb wifi插到电脑,在ubuntu使用命令:# lsusb 查看wifi的PID:0x148f......
    业内部聘用开发人员来构建和维护自己的操作系统更具成本效益优势。本文引用地址:Ubuntu Core是Ubuntu Linux操作系统的一个版本,专为物联网设备和其他嵌入式系统而设计。它是Ubuntu的轻......
    LCD1602_RW=0;//选择写LCD1602_E=0;LCD1602_DATAPORT=cmd;//准备命令delay_ms(1);LCD1602_E=1;//使能脚E先上升沿写入delay_ms(1......
    、 /dev/null ,所以需要事先建立这两个设备文件:lingd@ubuntu:~/arm2410s/rootfs$ cd devlingd@ubuntu:~/arm2410s/rootfs/dev......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>