微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > MS Windows CE的实时系统

MS Windows CE的实时系统

时间:05-02 来源:互联网 点击:

检查返回的中断ID号,并设置相关事件,中断服务线程等待事件。当内核设置事件时,IST停止等待并开始执行,附加的中断进程,中断处理大部分实际上出现在IST中,两个最高的线程优先权(级别0和1),通常指定为ISTS,保证这些线程运行得足够快。

正如前面所说,处在最高级的ISTS不能被其它的线程占用,这些线程持续执行直到它们截止或放弃。

WindowsCE不能支持群体中断,这就意味着当以前一个中断处理中,另一个不同接受服务,也就是当内核位于ISR时如果中断出现,在为新的IRQ开始ISR前它将一直执行直到ISR结束,这将引起硬件中断和ISR开始之间的延迟,拖延和响应时间中断响应。

中断响应

本论文中,IntervuptLatency词组主要指的是较件中断,处理响应,也即是从处部中断到达处理器到中断开始处理间的时间。

WindowsCE中断响应时间是针对锁存在内存上的线程(当内存响应不存在时)。这使得计算最差事件响应成为可能——中断服务程序(ISR)开始和中断服务线程(IST)开始D的总时间,直到中断处理的总时间能够通ISR和IST中所需时间计算决定。

ISR响应通用公式定义如下:

ISR开始时间=value1+dISR_Current+sum(dISR_Higher)

value1=由内核处理过程获得响应值

dISR_Current=中断到达时程序中ISR持续时间。这个值范围由0到系统中最长的ISR持续时间

sum(dISR_Higher)=所有在ISR开始前的较高级ISRS持续时间总和,即在时间vahe1+dISR-cumeneu间到达的中断

例如,考虑一个拥有关键优先权ISR的嵌入式系统,因为ISR被设成最高级,这有样ISRSdISR-Higher值为0。当没有其它ISRS最低响应,在程序中,即为value1最低响应即为value1加系统中最长ISR周期,当中断到达时,正是系统中最长的ISR开始执行。

IST响应周期定义如下:

IST开始时间=value2+sum(dIST)+sum(dISR)

value2=由内核处理的响应值

sum(dIST)=所有的出现在ISR和IST,开始的优先级ISTS和线程上下文转换时间总和。

sum(dISR)=在中断(?)ISR和它的IST之间运行的其它ISRS持续时间总和。

最简单的例子——具有一个关键级ISR和一个关键级线程(无其它0优先级的线程)的嵌入式系统——没有其它的ISTS能够在ISR和IST之间中断,然而在关键级的ISR和它相关的IST开始间其它的ISRS能被处理。

因为ISRS一旦能够获得,即可被处理,很容易想象成病态情况,涉及产生一个持续的ISRS流,从而产生不确定的推迟。IST的开始不可能出现,因为OEM对系统中的中断完成控制。因为OEM(原始设备制造商)为特定操作系统设计传统WindowsCE版本。OCM利用目标操作环境限制使系统设计最佳化。

为减少响应时间,OEM控制ISR和IST处理时间中断优先级线程优先级。公式中的value1和walue2代表,WindowsCE内核中处理时间,这是OEM不能控制的目前的在分时,研究工作涉及这些确认值。

确保WindowsCE的实时操作

两种不同途径被用来确保WindowsCE操作:

由WindowsCE开发组进行内部的检查或分析内核代码,

OEM和ISV(独立软件销售商)利用一些将在未来的WindowsCE版本嵌入式工具包(forVCFT)提供工具来确保特定配置。

WindowsCE关于VC++的嵌入工具包包括以下工具:

(一个对于分时研究的内核的工具版本和Intrtinrt.ext应用软件来观察,中断过程的最大、最小、平均时间。

微软也能开发其它的针对顾客需要的分时工具。

WindowsCE开发组,已经检查了内核代码以证实它能由最差的情况时间表征,它是独立于系统对象数目的。

为了利用这个检查,内核被表征成一套KCALLS或系统调用,在内核关闭优先权是它们是内核程序,并且不允许其它的线程运行,最差事件时间,此时,实时进程、标止运行,它能在内核中表征成最差事件KCALL时间(注意:这些时间不影响ISRS,只影响线程,例如ISTS)。

开发组通过检查发现这没有非持久的循环在KCALLS,这意味着:并所有的KCALLS能够表示成单向分支,代码路径,并确保通过KCALL并独立于输入参数发现最差事件时间成为可能。

查找实际的最差事件时间包括使用Instrumentedkemal,这仅是一个内核版本,它在设定应用环境后编辑使用,KCALL_PROFICE=1,以保证额外的分时功能,这个instrumentedkemel与debugkemel不同,Instrumentted是为一个零售的内核使用,它用来获得分时值,这常对于装运产品常常讳之莫深,在retailkernal和instrumentedkernel唯一区别是它的装备。

Instrumenttedkernel记录所有的KCALL时间,这些值,包括最孝最大和平均时间,并能够通过调用专用的API函数DumPkcallprofile打印到调试接口,Instrumentedkernel通常运行在强状态下,然后调用Dumpkcallpref

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

网站地图

Top