"); //--> 吗丁啉有什么功效| eb病毒感染是什么病| 鼻窦炎长什么样图片| 大便干燥用什么药| 竹外桃花三两枝的下一句是什么| 眩光是什么意思| 风湿关节炎用什么药| 小孩半夜哭闹是什么原因| 海市蜃楼是什么现象| 什么情况下需要根管治疗| 头顶秃了一小块是什么原因怎么办| 黄精长什么样| 婴儿第一次理发有什么讲究吗| 紫菜和海苔有什么区别| 坐月子什么不可以吃| 什么叫雷达| 乳糖不耐受吃什么奶粉好| 吃什么水果降血压| 肝火旺会出现什么症状| 绘本是什么意思| 猫屎为什么那么臭| 伤寒是什么病| 什么人不能献血| 绯色是什么颜色| 大地色眼影是什么颜色| 私生子是什么意思| 恐龙蛋是什么水果| 乙肝通过什么途径传染| 马冬梅是什么电影| 姑妈的老公叫什么| 曲高和寡什么意思| 舌头挂什么科| 急性痛风吃什么药| 李白长什么样| 去医院点痣挂什么科| 手麻脚麻吃什么药| 老公的妈妈叫什么| 爱上一个人是什么感觉| 湿疹抹什么药膏| 红黄是什么颜色| 岑字五行属什么| 孕激素高会有什么影响| 绰号是什么意思| 为什么睡不着| 试管都有什么方案| 灌肤是什么意思| 大便溏泄是什么意思| 情妇是什么意思| 孕妇吃鸽子蛋对胎儿有什么好处| 天性是什么意思| 日成是什么字| 三十而立四十不惑什么意思| 左侧肋骨下面是什么器官| 什么的鱼| 脾胃气滞吃什么中成药| gg是什么牌子的包包| 无脑儿是什么意思| 酱油什么时候发明的| 旗舰机是什么意思| 什么炒鸡蛋最好吃| gln是什么意思| 中国黄金为什么便宜| 半夜脚抽筋是什么原因| tide什么意思| fs是什么意思| 急性肠胃炎能吃什么| 法是什么| 爱恨就在一瞬间是什么歌| 红茶用什么茶具泡好| 做尿常规挂什么科| 老鹰的绝症是什么| out代表什么意思| 梅菜在北方叫什么菜| 淋巴细胞百分比高是什么原因| 在水一方是什么意思| 洗面奶什么时候用最好| 眉毛附近长痘痘是什么原因| 药店加盟需要什么条件| 理数是什么| 辰寅卯是什么生肖| 羽加立念什么| 什么原因会导致月经推迟| 吃芥末有什么好处| 嗓子疼不能吃什么| 人为什么会有狐臭| 跖疣念什么字| 垂体分泌什么激素| 球蛋白偏高说明什么| 发物有什么| 宫腔积液和盆腔积液有什么区别| 抗坏血酸是什么| 神机妙算是什么意思| 胃粘膜脱落什么症状严重吗| 唇炎应该挂什么科室| 胃肠道功能紊乱吃什么药| 农历十月份是什么星座| 特应性皮炎是什么病| 来例假喝红糖水有什么好处| 白头翁是什么鸟| od是什么意思| 清分日期是什么意思| 诛仙讲的是什么故事| baby是什么意思| 智齿疼吃什么药最管用| 学生近视配什么镜片好| 叫床是什么| 木灵念什么| 淡盐水是什么水| 亥和什么合| bella什么意思| 什么属相不适合养鱼| 低钾有什么症状和危害| 鸽子和什么一起炖汤最有营养| 牛皮和牛皮革有什么区别| 什么样的阳光填形容词| 梦见家里水管漏水是什么意思| 无花果吃多了有什么坏处| u什么意思| 喝完酒早上吃什么好| tory burch什么牌子| 宝宝打嗝是什么原因引起的| 偏财代表什么| 春天像什么的比喻句| 骑士是什么意思| 糖耐筛查主要检查什么| 什么能美白皮肤而且效果快| 宫颈纳氏囊肿是什么意思严重吗| 康波是什么意思| 人嗜睡是什么原因| 正太是什么意思| 冤亲债主是什么意思| 梦见发面是什么意思| 手脚麻是什么原因| 尿胆红素阳性是什么意思| 紫苏有什么作用| 09年的牛是什么命| 再接再厉什么意思| 汪星是什么意思| 长期肚子疼是什么原因| 什么地方能出生入死| 上午9点是什么时辰| 尿囊素是什么| 下巴长硬包是什么原因| 栀子泡水喝有什么功效| 吃什么能阻止性早熟| 1989是什么生肖| 对乙酰氨基酚片是什么药| 打呼噜挂什么科| 桃和什么不能一起吃| 局灶肠化是什么意思| 胀气是什么原因引起的| 宫颈炎吃什么药好得快| 脚趾甲凹凸不平是什么原因| mmp是什么意思| 美团和美团外卖有什么区别| 海椒是什么辣椒| 神经纤维由什么组成| miu什么牌子| 贫血是什么原因| 饭后痰多是什么原因| 花园里面有什么| 母亲吃什么退婴儿黄疸| 西洋菜俗称叫什么| 胆结石吃什么水果好| 什么叫会车| h是什么| 下午5点半是什么时辰| 脑垂体在什么位置图片| dsa检查是什么| 切莫是什么意思| 恢复伤口的鱼叫什么鱼| 叶公好龙告诉我们什么道理| 宋字五行属什么| 海为什么是蓝色| 小孩子肚子痛吃什么药| 排骨汤里放什么食材好| 包干费用是什么意思| 肾阴虚是什么意思| 半熟芝士是什么意思| 祉是什么意思| 横行霸道的意思是什么| 甲片是什么| 大吉大利是什么生肖| 颌下腺肿大是什么原因| 小月子同房有什么危害| 木加一笔变成什么字| 牛头人什么意思| 大千世界什么意思| 过敏期间不能吃什么东西| 女人吃知了有什么好处| 阿托伐他汀钙片治什么病| 台风是什么| 梦到自己生病了什么意思| 什么发型适合自己| 人养玉三年玉养人一生是什么意思| 湿漉漉是什么意思| 无妄是什么意思| 溯溪是什么意思| 梦见河水是什么意思| 酱油是什么做的| 黑色碳素笔是什么笔| 字母圈什么意思| 猫摇尾巴是什么意思| 七月一号是什么节| 神经纤维由什么组成| 我的梦想是什么| 为什么养鱼双数是大忌| 什么星座最好| 什么东西可以淡化疤痕| 89年属什么的| 什么属相不能摆放大象| 逻辑性是什么意思| 氧氟沙星和诺氟沙星有什么区别| 87属什么生肖| 茶叶里面含有什么成分| 业力重是什么意思| 什么叫人| 扁桃体发炎吃什么消炎药| 胡人是什么民族| 身上起火疖子什么原因| 大暑什么时候| 为什么趴着睡觉会胀气然后打嗝| 数农是什么| 乳头疼吃什么药| 去湿气吃什么食物| 掉牙齿是什么征兆| 璋字五行属什么| 把妹什么意思| 入睡困难是什么原因引起的| 什么不见| 丙肝有什么症状表现| 手指发红是什么原因| 1944年属什么生肖| 穿裙子搭配什么鞋子| 世界上最大的鱼是什么| 沙僧属什么生肖| 固本培元是什么意思| 河南为什么简称豫| 人的五官指什么| 什么病不能吃鲤鱼| 吃什么水果去火| 什么如泰山| 处女是什么象星座| 陋习什么意思| 75年属什么生肖| 一个马一个尧读什么| 12月10日什么星座| 合肥有什么玩的| 麻瓜是什么意思| 世界屋脊指的是什么| 阴部痒是什么原因| 泰迪吃什么| 曾是什么意思| asic是什么意思| 血脂高是什么原因| 喝茶拉肚子是什么原因| 什么的食物| 抹布是什么意思| 欣慰的意思是什么| 吃生蚝补什么| 罹患率是什么意思| 男孩叫什么名字| 烫伤用什么药膏好| 不拘小节是什么意思| 百度
新闻  |   论坛  |   博客  |   在线研讨会
干货!实测VxWorks响应PCIe中断的最小时间间隔
FPGA小师兄 | 2025-08-04 12:31:50    阅读:1230   发布文章

中断是外部事件通知操作系统的最常用手段。中断处理机制是计算机多任务环境运行的基础,是系统实时性的保证;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等
推荐文章
最近访客
吐槽是什么意思啊 空腹喝牛奶为什么会拉肚子 腱子肉是什么意思 宝宝吃什么鱼比较好 主任科员是什么级别
土猪肉和普通猪肉有什么分别 怀孕什么时候开始孕吐 知天命是什么年纪 右侧卵巢囊性回声什么意思 云字属于五行属什么
烧心吃什么药 标的是什么 梦见和死去的人说话是什么意思 阿迪耐克为什么那么贵 大雄宝殿是什么意思
沙土地适合种什么农作物 屁股右边痛是什么原因 gly是什么氨基酸 小壁虎吃什么 卵泡刺激素是什么意思
tin是什么0735v.com 撒旦和路西法什么关系hcv8jop0ns8r.cn 梦见滑雪是什么意思hcv8jop4ns7r.cn 吃毓婷有什么副作用hcv9jop2ns0r.cn 聊表心意是什么意思hcv9jop3ns0r.cn
为什么有些人特别招蚊子hcv8jop1ns2r.cn 孕妇梦见老公出轨是什么意思hcv8jop5ns0r.cn 奔走相告是什么意思hcv9jop5ns0r.cn 档次是什么意思hcv8jop1ns8r.cn 兰花是什么颜色hcv8jop4ns1r.cn
白细胞计数偏高是什么原因hcv9jop2ns5r.cn gdp是什么意思hcv8jop1ns5r.cn 蚂蚁爱吃什么东西hcv8jop7ns1r.cn 99年属什么hcv9jop1ns3r.cn 胸痛什么原因hcv9jop2ns8r.cn
呦呦鹿鸣什么意思sanhestory.com 甲功七项检查什么hcv9jop1ns8r.cn 检查肠胃挂什么科hcv9jop3ns3r.cn 内分泌失调吃什么hcv8jop7ns8r.cn 龙生九子下一句是什么hcv9jop6ns8r.cn
百度