3 系统的软件设计
本嵌入式图像采集系统软件包括两部分:底层软件和系统软件。
底层软件主要是DSP图像处理算法以及启动等运行程序。这些程序主要在CCS环境下由C语言编写并进行汇编优化。CCS即Code Composer Studio,是TI公司发布的DSP软件运行环境。
系统软件方面,在Windows操作系统下,可以充分利用Windows的窗口特性,一方面,因为Windows技术成熟,软件编写相对比较简单;另一方面,在Windows平台下,PCI驱动无需开发,可以直接利用Windows的PCI驱动程序实现图像卡的驱动。但是Windows操作系统比较庞大,而且无法依照系统的需要进行自由裁减,不适合做成嵌入式系统。因而本系统采用了VxWorks[7]操作系统。相对于Windows操作系统,VxWorks的优点表现在:
●VxWorks系统具有较好的可裁减性,可裁剪的组件超过80个,用户可根据自己系统的功能目标通过交叉开发环境方便地配置。
●VxWorks支持应用程序的动态链接和动态下载,开发者省去了每次调试都将应用程序与操作系统内核进行链接和下载的步骤,缩短了编辑/调试周期。
●VxWorks具有较好的兼容性,它是最早兼容POSIX1003.1b标准的嵌入式实时操作系统之一。
●VxWorks具有很高的可靠性和稳定性。
●VxWorks具有很好的实时性,实时性的强弱以完成规定功能和做出响应时间的长短来衡量。VxWorks的多任务机制对任务的控制采用了优先级抢占(Preemptive Priority Scheduling)和轮转调度(Round-Robin Scheduling)机制。这充分保证了可靠的实时性,使同样的硬件配置能满足更强的实时性要求,为应用的开发留下更大的余地。
PCI设备的驱动过程主要包括下面几个步骤:
首先,PCI设备的查找。在嵌入式操作系统中一般提供相应的API函数查找。在VxWorks操作系统中通过函数pci FindDevice (PCI_VENDOR_ID,PCI_DEVICE,index, &pci Bus,&pci Device,&pci Func_可以找到供应商代码为PCI_VENDOR_ID、设备标识为PCI_DEVICE的第n(index+1)个设备,并且返回总线号、设备号以及功能号,分别保存于&pci Bus、&pci Device、&pci Func中。
其次,PCI设备的配置。通过操作系统提供的API函数访问PCI设备的配置空间,配置PCI设备基址寄存器的配置、中断配置、ROM基地址寄存器的配置等,这样可以得到PCI的存储器空间和I/O地址空间映射、设备的中断号等。在VxWorks操作系统中访问PCI设备配置空间的API函数有pciConfigOutLong、pciConfigInLong等,它们分别完成对PCI设备配置空间的读写操作。
最后,根据PCI设备的配置参数,对不同的设备编写初始化程序、中断服务程序以及对PCI设备存储空间的访问程序。
很显然,用VxWorks操作系统实现虽然有一定的难度,但是系统具有很大的灵活性,系统比较小、适应性强,并且可以在工业控制计算机上运行。
3 系统的软件设计
本嵌入式图像采集系统软件包括两部分:底层软件和系统软件。
底层软件主要是DSP图像处理算法以及启动等运行程序。这些程序主要在CCS环境下由C语言编写并进行汇编优化。CCS即Code Composer Studio,是TI公司发布的DSP软件运行环境。
系统软件方面,在Windows操作系统下,可以充分利用Windows的窗口特性,一方面,因为Windows技术成熟,软件编写相对比较简单;另一方面,在Windows平台下,PCI驱动无需开发,可以直接利用Windows的PCI驱动程序实现图像卡的驱动。但是Windows操作系统比较庞大,而且无法依照系统的需要进行自由裁减,不适合做成嵌入式系统。因而本系统采用了VxWorks[7]操作系统。相对于Windows操作系统,VxWorks的优点表现在:
●VxWorks系统具有较好的可裁减性,可裁剪的组件超过80个,用户可根据自己系统的功能目标通过交叉开发环境方便地配置。
●VxWorks支持应用程序的动态链接和动态下载,开发者省去了每次调试都将应用程序与操作系统内核进行链接和下载的步骤,缩短了编辑/调试周期。
●VxWorks具有较好的兼容性,它是最早兼容POSIX1003.1b标准的嵌入式实时操作系统之一。
●VxWorks具有很高的可靠性和稳定性。
●VxWorks具有很好的实时性,实时性的强弱以完成规定功能和做出响应时间的长短来衡量。VxWorks的多任务机制对任务的控制采用了优先级抢占(Preemptive Priority Scheduling)和轮转调度(Round-Robin Scheduling)机制。这充分保证了可靠的实时性,使同样的硬件配置能满足更强的实时性要求,为应用的开发留下更大的余地。
PCI设备的驱动过程主要包括下面几个步骤:
首先,PCI设备的查找。在嵌入式操作系统中一般提供相应的API函数查找。在VxWorks操作系统中通过函数pci FindDevice (PCI_VENDOR_ID,PCI_DEVICE,index, &pci Bus,&pci Device,&pci Func_可以找到供应商代码为PCI_VENDOR_ID、设备标识为PCI_DEVICE的第n(index+1)个设备,并且返回总线号、设备号以及功能号,分别保存于&pci Bus、&pci Device、&pci Func中。
其次,PCI设备的配置。通过操作系统提供的API函数访问PCI设备的配置空间,配置PCI设备基址寄存器的配置、中断配置、ROM基地址寄存器的配置等,这样可以得到PCI的存储器空间和I/O地址空间映射、设备的中断号等。在VxWorks操作系统中访问PCI设备配置空间的API函数有pciConfigOutLong、pciConfigInLong等,它们分别完成对PCI设备配置空间的读写操作。
最后,根据PCI设备的配置参数,对不同的设备编写初始化程序、中断服务程序以及对PCI设备存储空间的访问程序。
很显然,用VxWorks操作系统实现虽然有一定的难度,但是系统具有很大的灵活性,系统比较小、适应性强,并且可以在工业控制计算机上运行。
举报