0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

电子设计 来源:电子设计应用 作者:闵华松,钱丽 2021-05-22 17:40 次阅读

引言

目前,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设备的使用会更加普及。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    18250

    浏览量

    222075
  • 嵌入式
    +关注

    关注

    4981

    文章

    18271

    浏览量

    288316
  • 操作系统
    +关注

    关注

    37

    文章

    6278

    浏览量

    121866
收藏 人收藏

    评论

    相关推荐

    S3C44B0x移植源代码

    S3C44B0x移植源代码UCOS_II.C,INCLUDES.H,OS_CFG.H,OS_CPU.H,OS_CPU_A.S,OS_CPU_C.C,OS_TASK.
    发表于 07-07 09:36

    S3C44B0X数据手册 datasheet

    S3C44B0X数据手册1产品预览介    绍三星的S3C44B0X 16/32位RISC处理器被设计来为手持设备等提供一个低成本高性能的方案
    发表于 11-13 10:50

    采用S3C44B0X作为主控芯片,在开发板上移植

    、MIPS、Power PC、68K等系列。其中ARM微处理器由于体积小、功耗低、高性能、低成本等特点,得到了广泛应用。本文采用的S3C44B0X是三星推出的基于ARM7TDMI内核,为手持设备和一般
    发表于 06-01 09:37

    学习ARM一定会用到的芯片S3C44B0X

    Samsung 公司推出的16/32 位RISC 处理器S3C44B0X 为手持设备和一般类型应用提供了高性价比和高性能的微控制解决方案。为了降低成本,
    发表于 03-12 17:06

    三星的ARM7 的 S3C44B0X

    刚学习ARM7,想请教大家一个问题。S3C44B0X没有片内FLASH和RAM,所以需要外接。我这个板子上接了,NORFLASH,NANDFLASH,SDRAM。我就用NORFLASH来存放启动代码
    发表于 10-14 22:18

    求教 三星s3c44b0x 一个菜鸟问题

    我有一块arm7 三星s3c44b0x的开发板,,,我自己在flash稍了u-boot,用他引到了一段自己写的硬件测试程序,就是串口的收发信息,,但是在连接上jtag的时候串口在超级终端上信息收发
    发表于 01-18 10:47

    谁有闲置的s3c44b0x开发板可以转让?

    需要一块s3c44b0x开发板完成一些实验,哪位朋友有用不着的可否转让???
    发表于 04-11 10:11

    ARM7和ARM9 s3c44b0x资料

    ARM7和ARM9 s3c44b0x资料
    发表于 07-12 21:09

    ARM CPU S3C44B0XC54X DSP的接口设计

    1 ARM CPU S3C44B0X的特点 ARM是一款32位的精简指令集(RISC)处理器架构,以其高性能、低功耗、低成本占有市场。由于ARM公司采用IP授权的方式经营,全球几乎所有的大半导体公司
    发表于 04-28 09:57

    基于S3C44B0X的智能家居嵌入式系统设计

    、有效。近年来,嵌入式系统设备全面渗透到人们日常生活的各个领域,本文针对智能家居嵌入式系统的软硬件设计需求,以S3C44B0X处理器进行智能家居系统的硬件设计,以实现μ
    发表于 06-21 07:05

    S3C44B0X处理器进行智能家居系统的硬件设计介绍

    日常生活的各个领域,本文针对智能家居嵌入式系统的软硬件设计需求,以S3C44B0X处理器进行智能家居系统的硬件设计,以实现μC/OS-Ⅱ在S3C4
    发表于 07-25 07:39

    uC/GUI在ARM内核S3C44B0X怎么实现移植?

    介绍了uC/GUI在ARM 内核S3C44B0X的移植。实践证明uC/GUI具有良好的实时性和稳定性以及广泛的应用前景。
    发表于 09-27 07:28

    怎么实现基于S3C44B0X和M12模块的GPS接收终端的设计?

    本文介绍一以目前比较流行的基于ARM7架构的嵌入式处理器S3C44B0X和Motorola的M12模块的GPS数据接收终端的设计。
    发表于 05-12 06:14

    如何利用S3C44B0X和GPRS通讯模块开发基于手机的汽车防盗系统?

    采用嵌入式开发技术,利用S3C44B0X和GPRS通讯模块开发了基于手机的汽车防盗系统,该系统能通过车主手机实现对汽车的远程无线监控。
    发表于 05-17 06:22

    怎么实现基于S3C44B0X的嵌入式Socket通信设计?

    本文给出一适合于中/低端应用的通信平台设计方案,它可支持Ethernet网络之间的数据传输,并且具有RS232、 RS485、 USB等接口。文中围绕嵌入式uClinux环境设计了基于嵌入式通信微处理器
    发表于 05-27 06:59