基于UClinux2.4.x+S3C4510B开发平台的USB-HOST驱动设计

发布者:北极星小鹏最新更新时间:2023-02-03 来源: elecfans关键字:S3C4510B  开发平台 手机看文章 扫描二维码
随时随地手机看文章

今天,USB设备已经进入我们工作、生活的方方面面,它给我们带来了许多便利。因此,带有USB功能已经成为现在许多系统的一个基本要求。三星公司针对arm7开发的S3C4510B是目前业界使用非常频繁的一款芯片。它的强大功能使其成为基于诸多传统的51等系列单片机开发思想的终结者。通过对它移植uClinux操作系统,犹如为虎添翼。稳定的Linux系统和强大的S3C4510B硬件紧密结合,形成了一个强大的开发平台,带来了崭新的开发理念。本文采用的是深圳英蓓特公司开发的EMBEST S3C4510B开发板,介绍在这样一个强大的平台上扩展基于CYPRESS公司开发的SL811HS(HOST)的USB-HOST;展示基于这个平台的区别于传统系统开发的崭新思想,同时进一步丰富该系统的功能。


1 扩展板硬件电路设计

英蓓特公司基于uClinux2.4.x+S3C4510B的开发板实现时,把程序放在由ROMCON0控制基地址的ROM/ARAM/FLASH组0;系统起动时,将放在该组的程序拷贝到SDRAM0组。本文将SL811HS的地址配到ROM/ARAM/Flash组1,由ROMCON1控制它的基地址,使用外部中断0接收SL811HS的中断信号。由于SL811HS没有将数据和地址总线分开,D0~D7将分时复用。这是由SL811HS的A0线控制;A0为低时,D0~D7上传输的是地址信息;A0为高时,D0~D7上传输的是数据信息。由此,用S3C4510B的ADDR10来控制A0,从而将SL811HS的数据和内部地址分离。


2 内核修改

要把SL811HS配置到ROMCON1控制的Bank1,主要应用对以下两个文件作改动。

①…armnommusnds100.h

将Line216的

#define DSR1 (0<<2)

改为:

#define DSR1 (1<<2)

这将把Bank1定义为8位的字节方式。

将Line 249的

#define rROMCON1 0x0

改为:

#define ROM_BASE1_R ((0x00200000>>16)<<10)

#define ROM_NEXT1_R (0x00300000>>16)<<20)

#definerROMCON1_R(ROM_NEXT1_R|ROM_BASE1_R|tACC0|tPA0|PMC0)

#define rROMCON0_B

(ROM_NEXT1_B|ROM_BASE1_tACC0|tPA0|PMC0)

这里ROM_x_R是指在系统复位后的值,也是系统在启动时的值。而ROM_x_B指的是系统在启动后,要将程序拷贝到SDRAM中运行,所以原来的FLASH-BANK0就不能再使用0地址,而应该由SDRAM0使用0地址。这个ROM_x_B就是当程序在SDRAM中运行时相应Flash组的新地址。

②….s

将line 162的

ldr r1,=0x200000

改为ldr r1,=0x300000

这是告诉系统,要将多大空间的内容从Flash存储中拷贝到SDRAM中去。

将line 259的

.word rROMCON1

改为.word rROMCON1_R

将line 272的

.word rROMCON1

改为 .word rROMCON1_B

这样就对rROMCON1在reset和boot两种不同模式下的配置值用不同的寄存器保存了。但是程序在运行的时候并不由这个值决定,而由rROMCON1决定的,所以程序必须在适当的时候将这两种模式下的其中一个值赋给rROMCON1,以供系统使用。


3 硬件电路检测

经过以上两步,就将SL811HS配置到由rROMCON1控制的ROM/ARAM/Flash组1了,其数据端口地址为0x1200400,地址端口地址为0x1200000。中断为外部中断0。可以采用下面的小程序来测试能否对SL811HS的内部寄存器进行正确的读写操作。

/***filename:test811.c****/

int main(void){

unsigned char *addr,*data,I,j,x,val;

int k,m;

addr=0x1200000;

data=0x1200400;

for(i=0x10;i<0x100;i++)

{mywriteb(i,addr);

mywriteb(i,data);}

printf("test now!");

for(i=0x10;i<0x100;i++)

{mywriteb(i,addr);

val=myreadb(data);

if(val!=i)

printf("error in test address %d",i);}

}

char myreadb(int addr)

{ unsigned char *addr1;

unsigned char data;

addr1=addr;

data=*addr1;

return(data);}

void mywrited(unsigned char data,int addr)

{ unsigned char*addr1;

addr1=addr;

*addr=data;}

把该程序作为一个应用程序,与内核一起整体编译。具体方法可以参考文件/documentation/adding-user-apps-howto.txt;

内核编译通过后,下载到开发板,然后启动系统,上位机利用超级终端监测。系统启动后,运行该应用程序。如果没有错误,则表明硬件连接正确了。


4 驱动移植

USB-HOST(SL811HS)的驱动程序不需要单独编写,Linux内核中有现成的代码可以借鉴,也可以到CYPRESS网站去下载。但是这个驱动程序是针对sal100设计的,所以必须作相应改动才能在我们的S3C4510B系统上使用。

这里的改动主要是对文件hc_s1811.c的修改。该文件位于…/driver/usb/

首先要修改硬件地址,因为SL811HS的数据和地址端口地址分别为0x1200400和0x1200000。修改line 106、107的

static int base_addr=0xd3800000;

static int data_reg_addr=0xd3810000;

为 static int base_addr=0x1200000;

static int data_reg_addr=0x1200400;

修改line 130、131的

#define SL811HC_IOPORT0 0xa000000

为 #define SL811HC_IOPORT0 0x1200000

#define SL811HC_IODATAPORT0 0x120040

由于将SL811HS的中断分配为中断0,所以应该修改line 108的

static int irq=34;

为 static int irq=0;

修改line 139的

#define Sl811HC_IRQ0 27

为 #define SL811HC_IRQ0 0

并且需要重新编写函数void init_irq(void)

为void init_irq(void)

{

INT_ENABLE(irq);

IntPend=0x1FFFFF;

IntMode=INT_MODE_IRQ;

}


然后再开始内核编译。在内核配置的时候,选上SL811HS项,将编译成功的内核烧到板子上,然后启动。用上位机的超级终端监测,可以看见系统已经为SL811HS分配了地址和中断等资源。至此USB-HOST的扩展就完成了。


结语

USB设备的广泛应用使许多系统都将考虑到对它的扩展,以满足广大客户的需求。本文介绍了在英蓓特公司的EMBEST3SC4510B开发板上扩展SL811HS(host)的详细步骤,并给出一个自编的测试程序,为硬件的检测提供了一个简单而有力的工具,为进一步开发移植USB设备驱动程序提供了硬件平台。


关键字:S3C4510B  开发平台 引用地址:基于UClinux2.4.x+S3C4510B开发平台的USB-HOST驱动设计

上一篇:基于USB总线的嵌入式CCD图像数据采集系统的设计
下一篇:在S3C44B0上的μCOS-II中实现CAN总线智能节点

推荐阅读最新更新时间:2024-11-12 11:51

L3L4瓶颈——高精度地图何时商用?
L3/L4离不开高精度地图与定位,这是公认的,无需赘言。而高精度地图标准是需要国家层面来确定的。 为什么要组织国家层面的小组来制定高精度地图的标准?因为高精度地图牵涉国家安全,像高精度地图中的核心数据——如道路曲率——是不能公开的。任何商用的电子地图都加装了偏转插件,偏转至少在2米以上,这就意味着无法L3/L4。解决办法是国家层面控制这个插件,在做L3/L4时还原偏差,但又不能被第三方设备读出。除了偏转插件外,国家统一地图标准,方便车企能够在几个图商之间轻松切换,也便于和国际上的机构或图商沟通交流。 在2018年4月份,在中国汽车工程学会和智能网联汽车联盟(运营实体为国汽智联研究院)的支持下,成立了自动驾驶地图和定位工作组
[汽车电子]
L3L<font color='red'>4</font>瓶颈——高精度地图何时商用?
金立东莞工厂开始遣散员工,要求4月底前解除劳动合同
金立债务危机影响仍在持续。今天多家国内媒体报道称,金立东莞工厂已经开始遣散员工,要求在今年4月底前完成协商解除劳动合同的工作。报道还称,金立方面已经证实了此消息。 曝光文件内容显示,除了有特殊情况,比如女职工在孕期、产期和哺乳期以及在工作期间负伤、从事职业病危害的劳动者未进行离岗前职业健康检查的,不纳入协商解除劳动合同范畴。其他的都要在今年4月底前完成协商解除劳动合同的工作。 据了解,金立位于东莞松山湖畔生产基地,占地面积达到300亩、建筑面积30万平方米。此前厂区负责人介绍,该基地投资高达23亿元,仅生产制造人员就达到11000多人,手机年产能8000万台。园区内除了包含生产制造外,还为员工提供住宿、食堂、娱乐、银行等全方
[手机便携]
金立东莞工厂开始遣散员工,要求<font color='red'>4</font>月底前解除劳动合同
不抛弃不放弃 初代Moto X将升级安卓5.0
    2013年摩托罗拉发布了第一代Moto X,那时的摩托罗拉还在谷歌手里。来自外媒的消息称:摩托罗拉将开始对2013年发布的第一代Moto X进行Android 5.0 Lollipop系统升级推送,看来该机虽已面世两年,但仍没有被抛弃。 2013年Moto发布的第一代Moto X     外媒称,这则消息来自摩托罗拉的软件产品高级总监David Schuster,这位高管称现在已经在法国和德国进行系统适配的测试工作,如果一切顺利的话,将于本周晚些时候在美国和巴西等地开始进行更新推送。
[手机便携]
纳芯微推出低功耗霍尔开关 NSM107x系列
2024年1月4日,上海 —— 纳芯微推出全新低功耗霍尔开关NSM107x系列,为数字位置检测提供高精度的解决方案,可被广泛应用于工业与消费电子领域。 纳芯微全新霍尔开关NSM107x系列 NSM107x产品系列包含了2个产品型号,即单极开关NSM1071、全极开关NSM1072。通过提供用户可选择的不同的开关点、功耗模式、输出接口、封装形式等关键特性,NSM107x系列可以被广泛应用于工业与消费电子领域中的不同应用场景。 在工厂自动化控制系统、工业机器人以及自动化生产设备中,NSM107x可用于检测机械运动状态、位置和速度等信息,由于其低功耗特性,使得设备在长时间运行时不仅保障了可靠的性能,还可以减少能源消耗。在
[传感器]
纳芯微推出低功耗霍尔开关 NSM107<font color='red'>x</font>系列
和辉点亮6寸4K AMOLED剑指虚拟现实装置
在和辉光电实验室里,一群年轻的工程师点亮了世界第一片6寸4K AMOLED显示屏,这让在场的每个人都热血沸腾。在高清晰电视市场上,4K电视已经受到了大众的追捧;但是将同样多的像素点放到一块6寸的显示屏里,使像素密度达到惊人的734PPI,这在设计和制造上的难度要远超百倍。   关于手机是否需要超高分辨率显示屏的争论还未见分晓,但是新兴应用对于显示屏的更高要求却是毋庸置疑的。虚拟现实装置要求通过一块显示屏呈现出身临其境的全景画面,其对于分辨率的要求成倍增长。和辉光电将以UHD(4K)显示屏的点亮为起点,开启与虚拟现实装置的合作。   虚拟现实装置作为公认最具未来潜力的新兴应用,吸引了众多关注。而目前最有影响力的产品
[嵌入式]
NodeMCU学习(二)--NodeMCU介绍及使用(一)
1.NodeMCU简介 NodeMCU 是一款开源的物联网开发平台,其固件和开发板均开源,自带 WIFI 模块。基于该平台,用几行简单的 Lua 脚本就能开发物联网应用。 其主要特点如下: 像 Arduino 一样操作硬件 IO 提供硬件的高级接口,可以将应用开发者从繁复的硬件配置、寄存器操作中解放出来。用交互式 Lua 脚本,像 Arduino 一样编写硬件代码! 用 Nodejs 类似语法写网络应用 事件驱动型 API 极大的方便了用户进行网络应用开发,使用类似 Nodejs 的方式编写网络代码,并运行于 5mm*5mm 大小的 MCU 之上,加快您的物联网开发进度。 超低成本的 WIFI 模块 用于快速原型的
[单片机]
NodeMCU学习(二)--NodeMCU介绍及使用(一)
基于晶体管TIP41的4W音频放大器电路
该 4 W 音频放大器电路使用 TIP41 作为最后级放大器。该放大器电路可以在 4 欧姆扬声器下提供 4 瓦的功率。晶体管 TIP 41 与布置在达林顿的 BC547 和 BC557 相结合。多余的达林顿组合将提供更大的电流增益。 该音频放大器电路包括低功耗放大器,适用于CD播放器,MP3播放器,音频计算机/笔记本电脑等。这里显示的所有组件都以低廉的价格在市场上轻松找到。 实际上,TIP41晶体管在运行时不需要加热来减少热量。但是,为防止损坏,如果您有一块铝板,请在 TIP41 晶体管上安装很少。这将使放大器性能更稳定。 Rf是用于调节增益的反馈电阻。在该音频放大器电路中,电阻Rf的值为4K7,以产生4瓦功率。
[嵌入式]
基于晶体管TIP41的<font color='red'>4</font>W音频放大器电路
西门子宣布将研发X射线有机探测器
       据西门子公司的消息称,西门子正在开展关于X射线有机探测器的研究。这一技术有潜力大幅度降低生产成本,并带来比当今探测器更高的图像分辨率。       在X光机成像过程中,X射线将被转换为可见光。而这一有机探测器,相比传统X光成像仪器的创新之处在于,在有机探测器材料中混入特别的、能吸收X射线辐射的物质,用以提高操作者和使用者的安全。       据了解,西门子中央研究院正在领导一个为期三年的政府资助该X射线有机探测器研发项目,旨在开发和展示相关技术。据西门子的专家称,这一探测器的初始应用领域预计包括乳腺造影设备和用于升级传统的X光成像设备。
[医疗电子]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved