2023年12月7日发(作者:)

RTX常见问题解答

问:什么是RTX?

答:RTX是Windows XP/2000/NT系统的硬实时扩展,为Windows系统提供了高速确定性的硬实时能力,满足了对设备I/O进程的确定性响应的要求。

1. 问:RTX提供什么样的性能特征?

答:RTX提供了简单易用的API函数----RT API 2.0。如果一个进程只使用RT API,在配置适当的系统上可以提供小于50微秒的最坏响应时间。但如果同时使用其他的Windows API ,RTX就只能提供软实时性能,最坏响应时间为1到5毫秒左右。这两种模式可以同时在相同的系统上运行----既是说,某些进程只使用实时API,某些进程混合使用这两种API,而剩下的进程则只使用Windows下的API函数。

2. 问:“不确定性”指的是什么?

答:“不确定性”指的是一个函数调用不能确保完成全部功能的时间在5微秒以内。

3. 问:不包含RTX的Windows系统实时性能如何?

答:其性能由不同的硬件决定,在最好的情况下,Windows下的中断延迟平均小于25微秒。但是,最坏情况下的中断延迟是无法确定的,甚至可能超过5毫秒!这种延迟是由于应用程序运行在用户模式下造成的。

用户模式下的应用程序在磁盘中是分页管理的,运行于Windows的线程管理器下,也具有直接访问硬件的能力。但所有这些在设计时都没有考虑到确定性,而RTX提供了相应的确定性能力。

4. 问:RTX是否对Windows XP/2000/NT 进行修改?

答:RTX不对Windows的内核,可执行文件,设备驱动做任何修改。所有的功能,DDK,API都不会改变。

5. 问:Ardence推荐使用哪种调试器调试RTX?

答:从RTX SDK 5.1.1以后,开发包中就自带了调试工具,可以嵌入到Visual Studio 中,在RTX环境下调试程序。如果是调试RTX SDK 5.1.1以前版本的RTX应用程序,可以使用内核级调试工具Microsoft WinDbg 或者 NuMega's SoftICE 。大多数初始调试和测试工作都是首先将RTX应用程序作为Win32进程调试,这样就可以使用所有的Windows调试工具,因为相同的API在Win32和RTX两种环境下都是可用的。最终的调试需要在RTX的环境下运行,这就要用到上文所提到的调试工具了。

6. 问:可以推荐一些支持RTX的板卡吗?

答:Ardence并不推荐某些特殊的A/D,D/A,或者通信板卡。RTX提供了针对端口I/O和总线I/O所有操作的功能函数,几乎可以用于所有的驱动开发。另外,RTX提供了很多关于进程间通信的例程,可以用在实时进程与非实时进程间的数据交换。其中实时进程控制I/O板卡,非实时进程提供数据分析,显示,TCP/IP通信和对二级存储系统的访问。

7. 问:如何衡量评价实时硬件平台的响应时间?

答:RTX提供了两个工具可以对实时硬件平台的响应时间进行衡量和评价:

内核系统响应时间测量工具(Kernel System Response Time Measurement ,KSRTM)对中断服务例程的延迟进行测量。KSRTM可以检测当最大延迟发生时哪个驱动或者内核组件正在运行。

系统响应时间测量工具(System Response Time Measurement ,SRTM)被用来测量应用程序级的线程延迟。并且可以用来测量Windows NT设备驱动相对的实时性优点。同时SRTM还可以清楚地检测到由于NT的缓存泄漏造成的缓存不稳定对系统的影响。

一般情况下,KSRTM是评估硬件平台最有效的工具。一般在使用KSRTM时加入下述参数:

-h 输出直方图

-l 输出最长中断延迟的具体信息

-u # 对当前所作收集到的信息有选择的分段输出

然后,就可以运行KSRTM一段时间了,这段时间可以长到几天。在运行的同时可以为系统加上显卡测试,网络通讯,磁盘读写,编译等负载。

8. 问:系统配置和CPU的选择如何影响中断延迟?

答:硬件平台和使用硬件的相关驱动的配置会对响应时间造成影响。包括:

显卡:某些高端显卡会封锁总线或者使总线忙等待以争取额外的时间提高性

能。

DMA设备,内存速度,处理器速度等等。

9. 问:RTX如何处理内存的隔离和保护?

答:RTX几乎可以检查所有的RTSS进程中的内存问题,包括值为NULL或-1的指针,栈溢出,和其他等等问题。RTX进程可以首先在Win32环境下运行,由于有更多的Windows工具支持,从而可以更好的检查内存泄漏方面的问题。

10.问:RTX可以处理“蓝屏”吗?

答:可以。RTX的实时HAL中途截取到NT的停止和关机信号,从而使得RTSS子系统和其实时进程能够继续运行。当蓝屏发生时,RTX会采取一些措施,首先RTX进程会收到系统停止的通知,然后会制设备进入一种安全的“空闲”状态,从而允许系统重新启动。根据不同BIOS的POST速度,系统会在15秒内恢复其原来的操作。

11.问:可以同时分配连续内存和锁定内存吗?

答:可以。RTSS内存管理允许一个进程同时分配连续内存和锁定内存。

12.问:相比传统的线程中断模型,RTX的线程中断模型有什么优点?

答:所有异步的RTX可执行程序在RTSS子系统中都是通过赋予优先级,以线程的形式执行的,所以RTX的线程模型为中断处理提供了一致的编程环境。所有的RTX

API和其他特征(包括浮点指针)都可以使用在中断处理程序中。系统因此变得更稳定因为中断处理程序中的错误不会造成更大的影响。当中断引发IPC通信时,所有传统线程模型的优点就都不存在了。

13.问:哪些因素会影响可创建的线程数目?

答:线程的创建牵扯到一些小型RTSS结构的分配以及为战分配初始空间的问题。对于线程数目,没有优先级方面的限制,只会受不分页内存的影响。线程创建的所需的总内存中包括初始栈的大小,每个线程也会多占用一些(大约100字节)。

14.问:是否有关于调用,DLL链接,访问实时时钟,程序调度,优先级切换,线程管理,数据访问等方面操作的例程?

答:在SDK安装包中的实例包含了上述提到的这些特征。

15.问:为使RTX源代码能够在NT与CE之间移植,编程时有没有什么需要特殊考虑的内容?

答:在API的实现上,NT与CE两者是不同的,这影响了GUI应用程序的可移植性。WinCE的API函数只是Win32函数的一个子集,并且有一些对专有硬件平台的特殊控制。

为了确保NT与CE之间的可移植性,避免CE的扩展和应用程序只针对CE子集,7月和10月的MSDN文档明确地指出了CE使用Windows API的特殊情况。MFC对底层的API函数的区别并不是很敏感,但要注意MFC并不适用于某些CE平台(譬如Plam/PC),并且CE应用程序必须使用Uincode。

应用程序的编写必须确保GUI操作与实时控制各自独立进行。在NT的环境中,必须为实时控制循环提供最大的确定性。为了确保兼容性,在CE下也应将实时控制与GUI操作分开进行。

16.问:需不需要附加一种标准的通信/调用机制或是Win32的子集以实现不同平台间的兼容性?

答:RTX提供的API都是具有确定性目的的,可以被NT及CE两者识别。对于RTX应用程序,并不需要考虑很多关于CE与NT之间兼容性的问题。RTX用户手册(RTX User’s Guide)中提供了关于编写适用于两种系统的应用程序需要用到的信息,并且RTX提供的资料中也有关于这个问题的例程。

问:RTX支持DCOM架构吗?

答:DCOM (Distributed Component Object Model)并不直接被RTX中的实时进程所支持,但是,Win32应用程序可以使用DCOM技术,并通过IPC机制与实时进程通信,这也是实现实时OPC的方法(OPC就是基于DCOM的)。

某些用户在RTSS环境中实现网卡驱动,以提供对网络的确定性支持。但是,这样却无法使用NT的服务(譬如网络协议栈)。

一般的供应商都使用OPC或DCOM通过网络或者底层的本地硬实时交互控制以实现实时进程与外部非实时(或软实时)进程间的通信,有很多种方式实现这种通信,如网络,点对点以太网,以及反射内存系统等。

1. 问:RTAPI包括什么?

答:RTAPI包括:高速时钟和定时器;

对I/O总线和物理内存的访问;

内存分配和分页错误的消除;

设备中断管理(完全线程模型);

RTAPI也包含Win32下的一些接口:确定性线程调度,具有中断倒置管理的128个线程优先级,RTX环境下的IPC机制,包括:事件,信号量,互斥体和共享内存;

实时进程和线程管理。

2. 问:可以推荐一些关于嵌入式应用程序开发的资源吗?

答:可以。请登陆微软的嵌入式网站Windows® Embedded。此网站为开发者提供了开发Windows NTE, Windows XPE 和SAK.的大量资源。