"); //--> 熊猫血是什么| 老人过生日送什么礼物好| 下眼睑红肿是什么原因| 梦见别人过生日是什么意思| 鼻子上的痣有什么寓意| 牙龈化脓是什么原因| 给男朋友买什么礼物比较好| 生理盐水和食用盐水有什么区别| 丑指什么生肖| 9月3号是什么纪念日| 机能是什么意思| 什么是先天之本| 副词是什么| 骨质疏松吃什么钙片| 荡秋千有什么好处| 三省吾身是什么意思| 什么叫脑梗| 吃什么美容养颜抗衰老| 情投意合是什么意思| 补肾固精吃什么药好| 红细胞偏低有什么危害| 肉苁蓉是什么| 必有近忧是什么意思| 化疗后吃什么补白细胞| 麦子什么时候成熟| 胡汉三回来了什么意思| 早上五点半是什么时辰| 星链是什么| 脑梗怎么形成的原因是什么| 外向孤独症是什么意思| 决堤是什么意思| 甲状腺结节什么症状| 阴道放气是什么原因| 唐氏综合症是什么| 不什么不什么的四字词语| 突然戒烟对身体有什么影响| 琪字五行属什么| 第一次怀孕有什么反应| 藏红花是什么| 便秘用什么药好| 什么的鸽子| 慈禧属什么生肖| 无创是什么检查| 青牛是什么牛| 为什么会得灰指甲| 月球表面的坑叫什么| 尿胆素1十是什么意思| 乳腺纤维瘤和乳腺结节有什么区别| 红萝卜不能和什么一起吃| 什么爱| 豪爽是什么意思| 成全是什么意思| 小孩腰疼是什么原因引起的| 9月1号什么星座| 左手大拇指抖动是什么原因| 身份证后六位代表什么| co是什么| 贾字五行属什么| 金是什么结构的字| 梦到怀孕了是什么预兆| 查输卵管通不通做什么检查| 3D硬金是什么意思| 为什么胸闷一吃丹参滴丸就好| 越吃越瘦是什么原因| 向内求什么意思| 什么是黄褐斑| 白介素2是治疗什么病的| 便秘吃什么润肠通便| 背包客是什么意思| 免疫抑制剂是什么意思| 十余载是什么意思| 空调睡眠模式什么意思| 睡觉咬牙是什么原因| 肚子容易胀气是什么原因| 活动是什么意思| 黄腔是什么意思| 恩五行属什么| 肺结核的痰是什么颜色| 胃热是什么原因| 暧昧什么意思| 脱靶是什么意思| 老年人吃什么水果好| 种牙好还是镶牙好区别是什么| 柠檬苦是什么原因| 南瓜不能和什么食物一起吃| 旧衣服属于什么垃圾| 当医生需要什么条件| 疝气有什么症状| 冠状沟有溃疡是什么病| 孕妇梦见蛇代表什么| 猫咪呕吐吃什么药可以解决| 海军蓝是什么颜色| 头晕恶心呕吐是什么原因| 脾阳虚吃什么食物好| 吃什么食物能养肝护肝| 夏季吃什么| 血氯高是什么原因| 藏红花有什么功效| 兵马俑在什么地方| pre什么意思| 右手指发麻是什么原因| 为什么故宫龙椅坐不得| 月经病是什么意思啊| 哈密瓜不能和什么一起吃| 无什么| 什么是阴虚| 气胸是什么病是大病吗| 1946年属狗的是什么命| 耳朵里发炎用什么药好| 喜欢蓝色的女人是什么性格| 宝宝肋骨外翻是什么原因| 白居易主张什么| 吃避孕药对身体有什么影响| v8是什么| 藤茶是什么茶| 知性是什么意思| 甲亢不能吃什么东西| 高筋小麦粉适合做什么| 做什么检查确诊是白塞| MC是什么牌子的车| 尚书是什么官职| 土和什么相生| 咳痰带血是什么原因| 什么是情劫| 豆腐干炒什么菜好吃| 打压什么意思| 8月份什么星座| 眼睛发黄是什么原因引起的| 吼不住是什么意思| 什么是无精症| 便秘去药店买什么药吃| 12月31号什么星座| 28岁属什么生肖| spao是什么牌子| 为什么会血压低| 望梅止渴是什么故事| 月光族是什么意思啊| 和田玉籽料是什么意思| 龟龄集适合什么人吃| 公历是什么意思| 男人有腰窝意味着什么| 送朋友鲜花送什么花| 为什么时间越来越快| 厚颜无耻是什么生肖| 真丝丝绒是什么面料| 胰腺检查挂什么科| 金黄金黄的什么填空| 什么水最解渴| 蟋蟀喜欢吃什么| 舌尖发麻是什么问题| 1994年属狗是什么命| 计数单位是指什么| 属马的人佩戴什么招财| 牙疼吃什么药| 开小差是什么意思| 吃什么增加卵泡| 鹅口疮有什么症状| 缺钾吃什么好| 上火便秘吃什么最快排便| 什么是腰间盘突出| 手小的男人代表什么| 心态是什么意思| 去香港需要办理什么证件| 什么是肾癌| 什么人不能吃海参| 老人嗜睡是什么原因| 嘴角长水泡是什么原因| 阴阳先生是干什么的| braf基因v600e突变是什么意思| dtc是什么意思| 用什么药膏能拔去粉瘤| 牛黄是什么| 为什么二楼比三楼好| 月经稀发是什么意思| 子宫内膜炎什么症状| 舌头有裂纹是什么原因| 梦见青蛙是什么预兆| 头总出汗是什么原因| 老年人腿脚无力是什么原因| 梦特娇属于什么档次| 查乙肝挂什么科| 嘴巴边上长痘痘是什么原因| 脚气用什么药好| 喝玉米水有什么好处| 忙碌的动物是什么生肖| 动物园里有什么游戏| 低密度脂蛋白高是什么意思| 玫瑰花的花语是什么| 艺伎什么意思| 北京是我国的什么中心| 六味地黄丸的功效是什么| 血小板计数偏高是什么原因| 考科二紧张心慌有什么方法缓解| cpi是什么意思啊| 苍蝇是什么味道| 爱拍马屁的动物是什么生肖| 京东pop是什么意思| 引流是什么意思| 什么是回避型依恋人格| 四次元是什么意思啊| 止血芳酸又叫什么| 铁剂什么时候吃最好| 神经过敏是什么意思| 伤口不愈合用什么药| 眼睛散光和近视有什么区别| 什么水果含维生素c最多| 一什么声音| 木耳与什么食物相克| 什么馅饺子好吃| 肺炎挂什么科| 白细胞低说明什么| 运动后喝什么饮料最好| 什么字五行属水| 外阴白斑是什么样子| 喜欢吃肉的动物是什么生肖| 离职什么意思| 乙肝有什么明显的症状| 宫颈机能不全是什么原因造成的| 怀孕初期吃什么水果好| 丑角是什么意思| 蓝瘦香菇是什么意思| 梵高是什么画派| 吾日三省吾身是什么意思| 歪理是什么意思| 喝酒前吃什么不容易醉| 柚子是什么季节的水果| 肺泡是什么| 化疗之后吃什么好| 毛鸡蛋是什么| 疏肝解郁吃什么药| 九月二十四号是什么星座| 虚热是什么意思| 乙肝表面抗原是什么意思| 体感是什么意思| 公报私仇是什么生肖| 转述句什么意思| 龙虾吃什么食物| 卦不走空是什么意思| 纾字五行属什么| 红斑狼疮吃什么药| 肺部纤维化是什么意思| 1972年出生属什么生肖| 血小板低有什么危害| 绿茶属于什么茶| 讳莫如深是什么意思| 男士去皱纹用什么好| 白带多什么原因| 脚老抽筋是什么原因| 羊水少吃什么| 国防部是干什么的| 智商税什么意思| 已知晓是什么意思| 甘油三酯查什么项目| 乐色是什么意思| 胶体是什么| 烫伤抹什么药| 乳房旁边疼是什么原因| 什么时候放开二胎| l读什么| 政绩是什么意思| 髋关节在什么位置| 什么是干燥综合症| 姓林的女孩取什么名字好| 过敏忌口不能吃什么| 百度
新闻  |   论坛  |   博客  |   在线研讨会
干货!实测VxWorks响应PCIe中断的最小时间间隔
FPGA小师兄 | 2025-08-04 12:31:50    阅读:1229   发布文章

中断是外部事件通知操作系统的最常用手段。中断处理机制是计算机多任务环境运行的基础,是系统实时性的保证;VxWorks是美国Wind River公司于1983年设计开发的一种嵌入式实时操作系统。内核wind在任务调度、中断处理及网络处理等方面与其它嵌入式实时操作系统相比具有一定的优势。特别是其提供的微秒级的中断处理为VxWorks在嵌入式实时操作系统领域的旗舰地位奠定了基础。本文通过带有PCIe接口的FPGA开发板,在VxWorks6.8版本的操作系统环境下,实测一下VxWorks操作系统中断处理的最小时间间隔是否是传说中的微秒级。

准备工作

硬件平台环境如下图所示,采用两台带有以太网口的设备相连,一端是PC机插有PCIe的FPGA开发板,运行Windows操作系统;另一端是嵌入式设备,运行VxWorks操作系统。

1、嵌入式设备

母板为P2020开发板,PCIe板卡为黑金Xilinx Artix-7 PCIE AX7103 FPGA开发板,运行VxWorks操作系统。

2、PC端

电脑主机一台,拆开(机箱比较脏,见谅),通过PCIe连线连到黑金Xilinx Artix-7 PCIE AX7103 FPGA开发板上,运行Win7操作系统。

两台设备之间通过双冗余的网线连接。

中断处理流程

在上面的环境中,按照以太网帧传递过程中的需求,任何一端的中断处理都包含三个不同的主体,首先是CPU内核的中断响应机制,然后是加上操作系统之后对中断响应的处理又有操作系统的要求,之后是PCIe硬件设备也有一套向CPU操作系统发送中断的规范。任何一方的中断处理机制都可以写很长很长的文字去描述,本文在此不再赘述。

PCIe总线支持两种中断方式,传统的INTx中断和基于存储器写请求的中断请求机制即消息中断。本文的设计方案中使用的是传统的INTx中断。为了叙述上的方便,我们从FPGA的时序图的角度去描述中断的处理流程,具体分为主机(PCIe发给主机的中断信号)、PCIe硬核、驱动来配置的中断使能信号、FPGA侧的中断源。下图是具体的主机操作系统为VxWorks时FPGA开发板与主机的中断交互流程。

1)FPGA侧有三个中断源可以触发中断,分别是DMA写开始、DMA写完成和DMA读完成中断,其中,写开始中断源是FPGA告知主机此时有数据要通过DMA写操作进行上传;写完成中断是FPGA将所有的数据封装成DMA写请求包;读完成中断是FPGA收齐了所有来自主机的DMA读完成包。上图中“1”处是中断源mwr_start_interrupt拉高了。

2)任意一个中断源拉高,FPGA侧给PCIe IP核配置“置中断”时序,在cfg_interrupt和cfg_interrupt_rdy握手成功后,cfg_interrupt_assert为高则为置中断。(cfg_interrupt为PCIe硬核发给主机的中断请求,cfg_interrupt_rdy为主机接收到中断请求后的回应,此时需要看cfg_interrupt_assert的状态,cfg_interrupt_assert为高,则为置中断,如上图中“2”处所示;cfg_interrupt_assert为低电平,则为清中断请求,如上图中“5”处所示。)

3)“置中断”后一段时间(此处约为17个时钟),主机侧硬中断电平INTA拉高,此时才是FPGA板卡真正的向主机发出了一个中断。如上图中“3”。

4)驱动检测到中断电平拉高后,以PIO写操作的方式往PCIe的BAR空间中控制状态寄存器04H的第[31]位写1,关闭接收中断功能,此时中断使能信号线int_dis_o拉高,如上图中“4”位置。int_dis_o为高电平期间,CPU不再响应FPGA板卡的中断请求,此处非常重要。之后CPU则以PIO读的形式读FPGA的中断状态寄存器。

5)FPGA将中断状态寄存器的值以PIO读完成包形式发送给CPU,告知CPU该中断具体为何种中断,同时配置“清中断”时序。如上图中“5”处所示。

6)CPU驱动记录中断源后复位相应中断标志位,如上图中“6”处所示。(此处也可由FPGA自己完成)

7)FPGA拉低相应中断源信号,如上图中“7”处所示。

8)CPU驱动通过PIO写操作往控制状态寄存器04H第[31]位写0,重新开启接收中断功能。如上图中“8”处所示。

9)重复步骤1)启动下一次中断;10)下一次置中断时序;11)硬中断电平再次拉高。

下图为一次完整的DMA读操作时CPU与FPGA板卡之间的交互流程,最后会涉及到DMA读完成中断,详细过程的描述略。

VxWork响应PCIe中断的最小间隔

为了得到VxWorks响应PCIe中断的最小间隔,我们在FPGA侧对两次“置中断”间隔,即上图步骤2)与步骤10)进行了时钟计数,在“置中断”时序(cfg_interrupt_rdy & cfg_interrupt_assert)下将间隔时间寄存器inter_intr_clk_cnt[31:0]计数复位,否则计数加一,直到下一次“置中断”进行计数复位,这样就能计算出中断信号两次拉高的时间间隔。

在测试的过程中,我们用Vivado抓取了实际数据传输时两种不同的中断场景。

1、场景1:写开始中断和读完成中断一起处理

有了上面中断处理流程的介绍,就可以很方便的分析具体工作状态下的波形图。从上图可以看到,读完成中断mrd_done_interrupt触发置中断时序,主机的硬中断电平拉高,驱动往控制与状态寄存器04H的最高位(图示int_dis_o信号) PIO操作写“1”,关闭中断功能,此时硬件这边不再产生置中断时序,直到驱动跳出中断复位程序,往04H的int_dis_o写“0”,使能中断;驱动PIO读中断状态寄存器(图示蓝线)“采样”到读完成(图示mrd_done_interrupt信号)和写开始(图示mwr_start_interrupt信号)两个中断标志位为高,此时,驱动会记录下来并同时对这两个中断标志位进行复位操作,然后驱动分别执行读完成中断和写开始中断状态机。

场景2:写开始中断和读完成中断先后处理

从上图可以看到,读完成中断mrd_done_interrupt触发置中断时序,主机的硬中断电平拉高,驱动往控制与状态寄存器04H的最高位(图示int_dis_o信号) PIO操作写“1”,关闭中断功能,此时硬件这边不在产生置中断时序,直到驱动跳出中断复位程序,往04H的int_dis_o写“0”,使能中断;驱动PIO读中断状态寄存器(图示蓝线1)采样到读完成(图示mrd_done_interrupt信号)中断标志位为1,硬件产生清中断时序,将主机侧的硬中断电平拉低,注意,此刻写开始中断(图示mwr_start_interrupt信号)刚好拉高,驱动只记录读完成中断并对读完成中断标志位进行复位操作(图示蓝线2),然后驱动执行读完成中断状态机,驱动跳出读完成中断状态机后重新使能中断(图示蓝线3),此时硬件侧因为写开始中断才被允许产生置中断时序,驱动再次检测到硬中断电平信号为高,驱动PIO读中断状态寄存器(图示蓝线4)采样到写开始中断标志位为1,硬件产生清中断时序,将主机侧的硬中断电平拉低,驱动记录写开始中断并对写开始中断标志位进行复位操作(图示蓝线5),然后驱动执行写开始中断状态机。

在第二个测试场景中,我们可以通过计数得知两个相邻中断的最小时间间隔,,硬件侧产生第一次中断段时序(图示蓝线1),在执行完第一次中断后,驱动侧将int_dis_o拉低,重新使能中断,硬件侧立即产生置中断时序进行第二次中断操作(图示蓝线2),如下图所示:

我们将图示蓝线2处进行放大得到下图:

通过相邻中断时钟计数信号inter_intr_clk_cnt[31:0]可以知道相邻两中断的最小间隔是365个钟,后边测试过多次,测试结果有368,364,,我们取365,时钟周期为16ns,由此可以计算得知VxWorks下最小中断间隔是365*16=5.84us。

结论:VxWorks操作系统中断处理的最小时间间隔确实是传说中的微秒级!

Windows操作系统下PCIe中断响应间隔测试

出于好奇,我们也尝试测了一下Windows 操作系统下PCIe中断响应的时间间隔。在Windows平台下的驱动暂未使用开/关中断使能的功能,所以只是测试在点播视频以及拷贝视频文件两种场景下的中断间隔。

1、场景1:点播视频,速率为10Mbps左右

从上图可以看到,上一次置中断时序复位后计数12417491个clk(16ns)再次产生置中断时序,此时中断间隔约为198.7ms,后面统计到一些计数值:19026416(304.4ms),6486433(103.8ms),9981793(159.7ms)。在点播视频时,带宽并未达到上限,驱动处理两个相邻中断的时间间隔>100ms。为了在高带宽情况下测试,我们进行了场景2的测试。

场景2:拷贝视频,速率为几百兆bps

从上图可以看到,上一次置中断时序复位后计数4175个clk(16ns)再次产生置中断时序,此时中断间隔约为66.8us,后面统计到一些计数值:3595(57.5us)、7456(119.3us)、3582(57.3us)、4159(66.5us)。在带宽提升后,win32驱动处理中断的频率有了显著地提高。

遇到的问题

在刚开始的时候,中断处理流程中CPU操作时并没有开启或关闭接收中断的操作,结果,在Windows平台下,没有任何的问题,生成PCIe IP核时,设置传输带宽上限为2Gbps,在1G以太网口测试各种业务时都很稳定,没有出现操作系统崩溃的情况;但在VxWorks系统测试时,由于VxWorks系统实时性非常好,响应中断也比较及时,就会出现操作系统正在执行一个中断服务程序时,硬件又来了一个中断,直接导致VxWorks系统死掉,如下图所示。当然,这也是中断处理流程不规范造成的。后续会在Windows驱动中也添加上开关中断使能的步骤,测试一下Windows相应PCIe中断的最小间隔。不过从目前测试数据看,Windows相应PCIe中断的速度肯定会比VxWorks慢很多。

全文完。


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
专注网络与交换领域的FPGA实现和芯片化,如TSN、TTE等
推荐文章
最近访客
子衿什么意思 心脏跳的慢吃什么好 粒细胞是什么 bbc是什么意思 性腺六项是查什么的
梦见买馒头是什么意思 性生活后尿路感染是什么原因 心脏在什么位置图片 夏天吃姜有什么好处 太五行属什么
旮旯是什么意思 今年53岁属什么生肖 什么牌子的冰箱好用又省电 流产什么样的症状表现 甲状腺疾病有什么症状
来姨妈喝什么比较好 黑脸娃娃有什么功效 梦见肉是什么意思 金利来属于什么档次 天降横财什么意思
仗剑走天涯什么意思hcv8jop7ns3r.cn 皮肤为什么会变黑hcv9jop5ns9r.cn 浅是什么意思hcv9jop0ns7r.cn 1月28日什么星座gangsutong.com 什么怎么读hcv8jop8ns8r.cn
肠胃不好适合喝什么茶hcv9jop6ns3r.cn 医院归什么部门管理hcv8jop5ns0r.cn 什么人容易得脑梗hcv8jop9ns1r.cn 失代偿期是什么意思hcv9jop2ns9r.cn 梦魇是什么原因造成的hcv7jop7ns3r.cn
心脏病人吃什么水果好aiwuzhiyu.com 39什么意思hcv9jop8ns1r.cn 海灵菇是什么xinmaowt.com 手脚麻木吃什么药hcv8jop4ns1r.cn 相知相惜是什么意思hcv7jop7ns3r.cn
一百岁叫什么之年hcv8jop0ns7r.cn 舌下含服是什么意思hcv7jop6ns8r.cn 什么饼干养胃最好hcv9jop4ns2r.cn 什么是五谷hcv9jop6ns8r.cn 赤藓糖醇是什么hcv9jop8ns1r.cn
百度