
具有PCI总线接口的通用嵌入式主板设计.docx
7页摘 要:嵌入式系统和 PCI 设备的广泛应用,使得越来越多的产品需要在这两种先进技术共 有的平台上运行文章以嵌入式视频传输系统设计为例介绍了以ARM9处理器S3C2510A 为主芯片、具有2个PCI插槽的嵌入式系统主板的设计思想,描述了系统的硬件构成、Boot loader的移植以及设备驱动程序的编写方法该主板的应用可以避免嵌入式系统的重复开 发,使各种PCI设备卡方便的利用嵌入式系统管理模式运行关键词:PCI总线;S3C2510A;嵌入式系统;Boot loader;卩Clinux,Abstract: With the wide application of embedded system and PCI devices, many products need to run on both platforms of embedded system and systems with PCI interface. The design of the embedded video transmission system, for example, is presented in the paper. The hardware design of the embedded motherboard of 2 PCI slots with processor S3C2510A of ARM9; transplantation of Boot loader and methods of constructing device driver is also described. The application of the newly developed motherboard will eliminate the necessity of repeated development of embedded system and kinds of ready-made PCI device can apply to the embedded system conveniently.Key words: PCI Bus; S3C2510A; embedded system; Boot loader; gClinux1. 引言使用ARM微处理器构建嵌入式系统已经广泛应用于工业控制、视频音频采集、安防监 控、消费类手持移动产品、家庭网关设备等各个领域[1]。
目前的嵌入式系统大多是针对某 项特定应用来开发的,通常分为两个部分:主控部分和数据处理部分;不同的嵌入式系统的 主控部分功能基本类似,区别大多集中在数据处理部分例如一个视频采集处理系统和一个 设备运行状态监测系统的不同就是前者的数据处理是对视频数据进行采集处理,而后者的数 据处理部分则是对监测的设备运行参数(如压力、温度、流量等)进行采集处理,所以两个 系统的主控部分可以完全一致基于这种现状,我们开发设计了一个通用嵌入式主板来完成 嵌入式系统的主控部分功能这样,在进行系统开发时可以把主要的工作精力放在数据处理 卡的开发上,而减少主控部分的重复开发另一方面,基于PCI总线的广泛应用,且PCI总线具备32Bit数据总线,时钟频率可达 66Mhz,最快传输速率达到264MB/S,能够满足高速数据传输的需要;加之大多数数据处理 模块、通信处理模块都具有PCI接口,因此嵌入式主板主控部分和数据处理部分的接口设 计采用PCI总线(设计的主板可提供两个PCI插槽)利用带有PCI接口的通用嵌入式主 板,加上根据功能需要开发或选定的数据处理板卡,使嵌入式系统运行在“独立工作模式”, 便能够完成原本需要设计整个嵌入式系统才能够完成的任务,而现在只需编写PCI设备的 驱动程序就可以直接将现有的PCI设备应用到通用嵌入式主板中。
2. 硬件电路设计图1 是以视频传输系统为例,介绍了通用嵌入式主板的应用系统处理器采用三星公司 的 S3C2510A,图 1. 视频传输系统框图Fig.1 video transmit system芯片为ARM 940T内核,最高运行频率可达200Mhz主板设计直接采用芯片内置的 SDRAM控制器、PCI控制器、USB控制器和10M/100M以太网控制器等一系列接口控制 器主板的外部时钟源为10Mhz,通过S3C2510A的4个内置倍频器,设置引脚CLKMODO、 CLKMOD1、CPU_FREQ1、BUS_FREQO 为高;设置引脚 CPU_FREQO、CPU_FREQ2、 BUS_FREQ1、BUS_FREQ2为低,使系统内核运行频率为133Mhz,PCI 设备运行频率为 66Mhz, USB 设备运行频率为 48Mhz主板采取最小系统核心板和外围接口扩展板分层的设计思想,两块板之间通过高速连接 器件相连,从而使主板的应用更加方便、灵活最小核心板由主控芯片、存储系统和调试接 口三部分组成其中主控芯片采用内置PCI控制器的S3C2510A;为了满足视频传输需要大量 内存空间和存储嵌入式Linux操作系统的需要,存储模块由2片32MByte、16Bit的 K4S561632E SDRAM 芯片和 2 片 8MByte、16Bit 的 AM29LV640MT FLASH;调试接口是 1 个RS232串口和1个Jtag硬件调试接口。
外围接口扩展卡由2个10M/100M的以太网络接 口,1个RS232串口,1个RS485串口,2个USB HOST接口可以外接硬盘等存贮设备,1 个USB DEVICE接口可以将主板设置为PC机的目标设备这里将着重介绍有关PCI总线 接口部分的硬件设计图2是S3C2510A与PCI插槽之间的连接原理框图S3C2510APCI SI.OT (1/2)PCIREQ1PCIAO431 DJ PCICBErO. J| 代桝尺U¥ PCIDEVSELPCILOCKPCIFERR PCISERRPCISTOP PGITRDY PCIFRAME PClPfd 巨PCIGNT1 FC IP AR RClRSTPCIIlMTAPCIREQ2FC IUNT2hREQ ADjD..31].測nIRDY nDEVSEL □LOCK nFERR nSERR nSTOP nTRDV HFRW1E 仃尸站E nGNTparnRSTnlNTA|A.BaC.D|nREC nGMT图 2. S3C2510A 的 PCI 实现原理框图Fig2. The hardware design of S3C2510A PCI系统上电后,PCI插槽上视频音频处理卡将等待模拟视频信号和模拟音频信号的输入, 当处理卡得到模拟数据后便对模拟数据进行压缩、编码,处理后的数据通过S3C2510A内部 AHB总线传输到以太网端口,利用主板上嵌入式Linux系统中的视频服务程序通过以太网 将压缩后的数据传输到客户端PC,客户端只需使用解码播放器就可以收看到视频。
同时也 可以传输到USB端口,把视频文件保存在硬盘存贮介质上开发板的系统调试可以通过 RS232串口来完成,而且通过RS232可以外接GPRS无线调制解调器,在无法通过以太网 进行数据传输的情况下可以无线上网,将重要资料传输出去RS485串口可以实现某些特殊 协议的传输,例如云台控制协议2.1自带PCI总线控制器的S3C2510A表1.通过模式引脚设置PCI控制器工作方式Table1. Operation Mode According to Mode Pin SettingMode Pin工作模式PCI PCCDMPd HOS™00 [PCI Agent01PCI Host10CardBus Agent11 'CardBusTCMdAHost三星的S3C2510A ARM处理器,内部集成了 PCI (MINI-PCI) & PC Card控制器,根 据应用需要将S3C2510A的PCI (MINI-PCI) & PC Card控制器设置为PCI Host工作模式, 这是通过设定PCI_PCCDM和PCI_HOSTM两个配置引脚的电平来实现的[2]见上页表1 所示S3C2510A内嵌的PCI总线控制器符合PCI总线规范2.2版本,具有32bit地址/数据复 用总线,支持非线性传输和突发传输,最高数据传输速度可以达到264MB/s@66Mhz(132MB/s@33Mhz)。
而且带有地址变换机制,可以将内部的PCI总线地址映射到内存或 者外围设备 2510A 的引脚定义是根据PCI总线来命名的,因此设计者只需将S3C2510A的PCI控制引脚接出即可在设计 中设定PCI总线的时钟频率为66Mhz,因此主板上PCI总线的最高传输速度可以达到 264MB,能够满足数据的快速传输在这里需要利用时钟反馈来弥补PCI的时钟延迟图3. S3C2510A的PCI控制器时钟反馈机制Fig3. PCI Clock Schemes如上图所示,当PCI控制器工作在PCI HOST模式下时,其时钟源是由系统内部提供的, S3C2510A有3个PCI时钟输出信号PCICLK1,PCICLK2和PCICLK3,将PCI设备诊断寄 存器PCIDIAG0的DC3位设置为1,即将PCICLK3设置为输出无效,此时PCICLK1与 PCICLK3相连,通过PCICLK3将时钟信号反馈给处理器内核,这样可以使外部PCI设备与 PCI 时钟保持一致,从而弥补时钟延迟 [3]2.2系统以及PCI控制器的工作启动顺序系统上电之后,系统以及PCI控制器的启动顺序如图4所示:其中在对PCI控制器的 特殊功能寄存器进行配置时需要首先关闭中断,即设置PCIINTEN=O。
然后设置PCI控制 和状态寄存器PCICON[ARB,ATS,SPL,IOP,MMP],某些需要的情况下还要设置PCI诊 断寄存器,这个寄存器是针对测试功能的,在PCMCIA Host工作模式下不需要进行设置 然后要对与基地址有关的寄存器PCIBAM0〜1和PCIBATPA0〜2进行设计,设置完之后要 配置有关PCI重启和时钟的寄存器,其中关键的一步是设置PCI重启和时钟寄存器 PCIRCC[MSK]=0,这是为了防止重启信号和时钟信号的冲突[3]图 4.PCI 控制器及外围设备的启动顺序 Fig4. PCI Controllers Booting Sequence在 PCI 控制器侦测外围设备并初始化外围设备的寄存器时,需要完成以下工作:1) 读取所有的配置寄存器值,包括PCIHID, PCIHSC, PCIHSSID等等2) 检查 BAR (Backup Address Register)的范围并一一分配空间3) 使能外部设备并激活总线以上配置都是在PCI视频处理卡的驱动中完成的,因为已经把驱动程序加载到了 uClinux的内核中,所以系统启动之后,操作系统会自动配置PCI外部设备。
3. 系统软件设计系统的软件主要由Boot Loader和嵌入式uClinux两大部分组成,其中Boot Loader相当 于PC机的BIOS,是在操作系统内核运行前运行的一段程序,其主要作用在于初始化硬件 设备,建立系统的内存空间映射,然后再调用操作系统内核嵌入式uClinux是这个系统的 OS,主要包括设备驱动程序和上层应用程序这里主要介绍一下移植Boot Loader的。
