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

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

3天内不再提示

基于Linux和EMBEST S3C4510B开发板实现扩展板硬件电路设计

牵手一起梦 来源:单片机与嵌入式系统应用 作者:邵仕泉,张红雨 2020-10-04 17:33 次阅读

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的数据和内部地址分离。USB-HOST扩展板原理简图如图1所示。

2 内核修改

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

①…armnommusnds100.h

将Line216的

#define DSR1 (0》16)》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设备驱动程序提供了硬件平台。

责任编辑:gt

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

    关注

    34

    文章

    15568

    浏览量

    180029
  • Linux
    +关注

    关注

    87

    文章

    10916

    浏览量

    206493
  • 开发板
    +关注

    关注

    25

    文章

    4353

    浏览量

    93338
收藏 人收藏

    评论

    相关推荐

    μClinux在S3C4510B上的移植

    说明了如何搭建移植环境,然后着重讨论了在该开发板上Bootloader的设计实现以及t~Clinux内核的移植方法,最后对在这种基于UClinux的嵌入式系统环境下如何开发应用程序做了简单说明。关键词:嵌入式系统;移植;UCli
    发表于 03-28 13:18

    S3C4510B嵌入式系统的应用开发

    利用三星公司生产的S3C4510B32位ARMTDM1单片机构建一个应用系统,利用开发软件ARM SDT V2.51在开发应用系统上实现存储器的地址重映射,中断控制,串行通信,液晶,键
    发表于 03-28 13:39

    [推荐][分享]基于S3C4510和MAX232的串口网络服务器的设计 (1)

    为了通过Internet读取只有RS-232串口的传感器中数据,基于S3C4510B设计了一个串口网络服务器的最小系统。 2 硬件设计    
    发表于 03-18 11:50

    ARM 应用系统开发详解──基于S3C4510B 的系统设计

    ARM 应用系统开发详解──基于S3C4510B 的系统设计
    发表于 09-21 23:28

    S3C4510B驱动SIM900电源不封怎么设计啊

    想用一个成熟的电路将DC5.0转化成两路输出:4.0V,2.0A用来驱动SIM900.3.3V驱动s3c4510B。哪位大神有过此经验。求指教啊
    发表于 12-12 21:38

    ARM应用系统开发详解—基于S3C4510B的系统设计

    ARM应用系统开发详解—基于S3C4510B的系统设计
    发表于 11-24 12:56

    ARM 应用系统开发详解─基于S3C4510B 的系统设计--ARM教程全集(good!)

    ARM 应用系统开发详解─基于S3C4510B 的系统设计--ARM教程全集(good!)
    发表于 04-28 11:15

    ARM 应用系统开发详解──基于S3C4510B 的系统设计--ARM嵌入式

    ARM 应用系统开发详解──基于S3C4510B 的系统设计--ARM嵌入式
    发表于 04-28 11:16

    ARM S3C4510B系统异常中断有什么特点?

    和重视。32位ARM体系系列处理器便是其中的代表。S3C4510B处理器是基于ARM7体系16/32位RISC 处理器,内部集成了8KB的CACHE/SDRAM,内嵌EARTHNET控制器,拥有7种
    发表于 03-31 07:59

    基于S3C4510B芯片及RTL8305SB交换芯片的五口SOHO路由器设计

    更大的需求,路由器技术的研究和开发就成为一个热门的话题. 本论文研究和设计了一种基于三星S3C4510B芯片及RTL8305SB五***换芯片为核心的五口SOHO路由器(一个WAN口,四个LAN口),在此硬...
    发表于 10-27 06:23

    如何使用STM32扩展板实现按键驱动?

    树莓派和STM32之间如何连线?如何使用STM32扩展板实现按键驱动?
    发表于 01-17 07:46

    应用系统开发详解_基于S3C4510B的系统设计

    应用系统开发详解_基于S3C4510B的系统设计 好资料,与你供享。只供学习!
    发表于 03-25 15:50 40次下载

    μClinux在S3C4510B上的移植

    Linux是一种支持多种体系结构处理器的操作系统.有很强的移植性。描述了将UClinux移植到基于S3C4510B处理器目标板上的方法与过程。首先介绍了S3C4510B处理器和UClinux,并简单说明了如
    发表于 03-28 09:51 16次下载

    S3C4510B开发板(含原理图和PCB)资料下载

    S3C4510B开发板(原理图和PCB)
    发表于 01-19 10:22 27次下载

    基于ARM的S3C4510B开发板原理图下载

    基于ARM的S3C4510B开发板原理图下载
    发表于 04-26 11:17 4次下载