3.3 使用集成开发环境
在进行VxWorks下BSP开发时,如果最小系统的BSP已经能够正常运行,则可以使用VxWorks的集成开发环境Tornado。 Tornado II工具提供一个高度可视化和自动化的开发环境,加快了基于VxWorks的应用开发。这样,不论对于初次使用还是有经验的开发者,使用Tornado II开发其应用是快速而方便的。
4 中断处理
4.1 采用中断处理方式的原因:
保证处理的实时性、减少CPU的消耗。
4.2 中断的处理流程
中断处理程序首先切换到中断堆栈,保存程序计数器和寄存器等中断现场状态,然后对中断进行处理,中断处理过程中必须要及时清除中断源,最后要恢复中断前的程序计数器和寄存器等现场状态,由中断处理程序返回。
Interrupt Service Code
实时系统中的中断处理非常重要,系统通常通过中断获取外部事件。为了尽可能块的响应中断,VxWorks中的ISRs运行在特定的上下文(非任务上下文),中断处理无需任务的上下文切换。
我们可以使用除了VxWorks系统使用的之外的系统硬件中断,VxWorks提供了例程intConnect( )用于将C程序与任何中断相连接。VxWorks的ISRs运行在特定的上下文(x86中断使用当前被中断掉的任务的堆栈,PPC有单独的全局中断堆栈)因而中断处理没有任务的上下文切换。
4.3 中断的堆栈
大部分系统规定(如PowerPC):所有的中断使用同一个专用堆栈,这个堆栈在系统启动时根据特定的配置参数由系统来分配和初始化。要求堆栈足够大来处理最坏的中断嵌套。
然而有一些系统不允许有单独的中断堆栈(如x86),在这种情况下,中断使用当前被中断掉的任务的堆栈。如果使用这种结构,必须给每个任务开足够大的任务堆栈来处理最坏的中断嵌套和调用嵌套。
可以在开发中使用 checkStack()来查看在栈空间中任务和中断的堆栈是如何分布的。
4.4 ISR的一些限制
1、 ISR要尽量的短,能在任务中完成的工作就不要放在ISR中。 2、 ISR不能调用将会导致阻塞的子程序。
3、 ISR不能take 信号量,但是ISR可以give信号量。 4、 由于子程序malloc()、free()使用了信号量,ISR不能调用它们。 5、 ISR不能通过VxWorks的驱动执行I/O。
6、 ISR不能调用使用了浮点协处理器的子程序。
在ISR中不能调用的函数列表参见:《VxWorks Programmer Guide》中2.5.3 Special Limitations of ISRs。
4.5 中断服务程序与任务的通信
由于中断事件通常涉及到任务级代码,因此必须提供中断服务程序和一般任务的通信机制。VxWorks提供的中断服务程序和一般任务的通讯机制有:
?共享存储区和环形缓冲
?信号量: 中断服务程序能够释放信号量(不包括互斥信号量和VxMP共享信号量),任务
能够等待该信号量。
?消息队列,中断服务程序能够向消息队列发送消息,任务能够从消息队列里接收消息。 ?管道:中断服务程序可以向管道写数据,任务可以从管道读取数据。
?信号灯:中断服务程序能够通过发信号通知任务,触发相应的信号处理程序的异步调度。
5 常用总线协议:
?HDLC、
High-level data link control (HDLC) is one of the most common protocols in the data link layer, layer 2 of the OSI model.
?UART、
universal asynchronous receiver transmitter (UART) protocol is commonly used to
send low-speed data between devices. ?Ethernet/IEEE 802.3 、
?ATM、 ?PCI、 ?I2C、
?SPI(motorola : Serial Peripheral Interface)
exchange data between cpu and peripheral devices (such as EEPROMs, real-time clocks, A/D)converters, and ISDN devices.
5.1 PCI总线简介
PCI:周边器件互联(Peripheral Component Interconnect)。 目前最新版本2.2,但很多器件还只支持2.1。 PCI与器件的基本关系。
? Host/PCI 北桥:连接主处理器总线到PCI总线
? PCI/ISA 南桥:连接PCI总线到ISA(或EISA)总线,南桥通常含IDE控制器、中断
控制器、USB主控制器、DMA控制器。
? PCI/PCI : 连接PCI总线到PCI总线
设备和功能:
支持256个PCI总线。
每条PCI总线上最多可以有32个设备(最多5-6个比较合适)。 每个设备可以有1-8个功能。
性能:
33M,32bit 传输速率132MB 33M,64bit 传输速率264MB 66M,32bit 传输速率264MB 66M,64bit 传输速率528MB
6 单板的硬件组成
BSP与单板密切相关,要开发BSP就要了解单板的硬件组成,单板一般由CPU最小系统和一些外围硬件设备构成。
CPU最小系统:
CPU、内存、内存控制器、调试串口、调试网口、系统时钟、桥片、外围芯片(包括)、实时时钟、定时器、FPGA、部分嵌入式系统也包括软硬盘控制器、显卡、键盘。 不同单板使用不同的专用设备芯片:
DMA控制器、E1传输芯片、光接口芯片、时隙交换、FLASH、host/pci桥片 pci/pci桥片、以太网口芯片(如intel的82559、realtek的8139)、以太网口交换芯片(BCM5616)、CSM5000、CSM5500、看门狗、专用FPGA逻辑等等。 典型的单板组成示意图:
?IS95/1X中的SVICM单板组成示意图