.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驱动程序源见网站www.dpj.com.cn。
结语
USB设备的广泛应用使许多系统都将考虑到对它的扩展,以满足广大客户的需求。本文介绍了在英蓓特公司的EMBEST3SC4510B开发板上扩展SL811HS(host)的详细步骤,并给出一个自编的测试程序,为硬件的检测提供了一个简单而有力的工具,为进一步开发移植USB设备驱动程序提供了硬件平台。
[!--empirenews.page--] UClinux2.4.x+S3C4510B平台的USB-HOST驱动设计
.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驱动程序源见网站www.dpj.com.cn。
结语
USB设备的广泛应用使许多系统都将考虑到对它的扩展,以满足广大客户的需求。本文介绍了在英蓓特公司的EMBEST3SC4510B开发板上扩展SL811HS(host)的详细步骤,并给出一个自编的测试程序,为硬件的检测提供了一个简单而有力的工具,为进一步开发移植USB设备驱动程序提供了硬件平台。
[!--empirenews.page--] 如果这篇内容对您有帮助,欢迎点赞支持!