微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > MCU和DSP > 嵌入式系统的PCI接口设计

嵌入式系统的PCI接口设计

时间:11-18 来源:嵌入式研究 点击:
4驱动程序

开发Windows环境和Linux环境的驱动程序有很大不同。

4.1 Windows环境中驱动程序的编写

  由于Windows操作系统被Microsoft所垄断,它是一个封闭的操作系统,因此很难将用户驱动程序挂接到Windows操作系统中。通常要利用一些开发工具,如Microsoft的DDK、Numega的DriverStudio和Jungo的WinDriver等。因而应首先是由它们生成驱动程序的框架后,再导入到Microsoft的Visual C++中,在填入与设计对象相关的代码后,最后由build生成Windows环境下的驱动程序。

  PLX公司的PLX9656RDK提供了Windows API及其源代码和调试工具PLXMon。利用这些针对PLX芯片的API可以驱动PCI接口,而且其编程工作也非常快捷。

PLX芯片的初始化函数原型为:
S8 Select Device(DEVICE_LOCATION*pDev);

  它可提供很多对PCI的接口操作,其中包括寄存器读/写、中断允许/禁止、获取中断状态、IOP总线读/写、IOP端口读/写、电源管理、热插拔功能、VPD读/写、EEPROM读/写、邮箱寄存器读/写、门铃寄存器读/写、DMA控制/状态、DMA块通道操作、DMASgl通道操作以及 DMAShuttle通道操作等。

  在对PLX芯片进行初始化后,便可利用PLX9656RDK提供的上述功能对PCI接口进行操作。

4.2 Linux环境下驱动程序编写

  Linux是源代码开放型操作系统。在这种系统中,用户自编的设备驱动程序可以和原操作系统的驱动程序享有同等的"地位"。Linux环境下,驱动程序的编写有两种方式,一种是基于内核的,另一种是基于模块的。前一种方式是将驱动程序直接注册在相应的系统文件中,然后在操作系统启动时将它装载在内存中使用;后一种方式则通过命令行insmod和mmod来加载和卸载驱动程序模块,因此比较方便灵活。


Linux对设备的操作与对文件的操作一致,所有的驱动程序都毫不例外地要使用file operations结构。其中的read、write、ioctl、mmap、open、release指针分别指向用户编写的驱动程序的相关操作。

  每个PCI设备均可由总线号、设备号和功能号来确定,它共有三个访问空间,即内存空间、I/O端口和配置寄存器。配置空间用于决定PCI器件的工作方式和映射到系统中的地址。其基本功能函数如下:

访问I/O和内存空间时,要根据配置寄存器中PCL-BASE-ADDRESS-i(i=0...5)所给定的基地址来读写数据。

5嵌入式系统的实现

嵌入式系统的开发平台包括Host(主机)和Tar-get(目标)两部分。通常,Host和Target的硬件构架(如x86、PowerPC、 ARM、MIPS等)和操作系统都不尽相同。因此需要用CDK(交叉开发工具包)把在Host上开发的代码下载到Target上。此开发平台的模型如图3 所示。


由于主机上资源丰富(如功能强大的操作系统和应用软件、CRT显示输出和打印机硬拷贝输出、键盘和鼠标输入等),因此调试起来非常便捷。针对不同的目标系统,HardHat CDK有不同的开发工具包,但开发流程及工具的使用几乎一样。首先用相应目标系统的交叉编译器将源程序编译为可执行文件,再将可执行文件拷贝到目标系统的 NFS目录下,待目标系统装载内核并引导后,便可调试和运行应用程序了。程序调试成功后,就可以使用EmbeddedPlanet公司的Planet Core来将应用程序烧录到目标板的FLASH中,这样,目标板就成了可独立运行的嵌入式系统了。

6小结

由MPC8260和PLX9656构成的嵌入式系统有着广阔的应用前景。可应用于高性能通信系统中的WAN/LAN控制卡、高速MODEM卡、帧中继卡、路由和交换机等,处理器集成的ATM、T1/E1及以太网等通信通道均能很好地支持上述通信功能;另外还支持高速PC适配卡、CompctPCI接口卡以及嵌入式主机系统等。由于PLX9656具有数据管道构架的直接传输方式,因而可方便的用于PCI及Local Bus端的I/O和设备的高速数据传输。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top