利用GPIO模块来测量Cortex-M7系统中断延迟

鱼鹰谈单片机 2022-01-17 08:52

大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是i.MXRT1xxx的系统中断延迟时间

在 《Cortex-M系统中断延迟及其测量方法简介》 一文里,痞子衡介绍了 Cortex-M 中断延迟的基本概念及一种用 GPIO 模块来测量中断延迟时间的方法,今天我们就在 i.MXRT1xxx 系列芯片上用这种方法实测一下中断延迟:

一、官方指标

恩智浦 i.MXRT1xxx 系列目前有很多型号,都是基于 Cortex-M7 内核,主频从 500MHz 到 1GHz 不等。拿该系列第一款型号 i.MXRT1050 来说,在其官方主页可以看到其标称中断延迟时间低至 20ns。

在 《Cortex-M系统中断延迟》 一文第一小节里我们知道 Cortex-M7 的标准中断延迟是 12 - 14 个内核时钟周期,i.MXRT1050 主频是 600MHz ,理论计算可得 (1s / 600MHz) * 12 = 20ns,所以 i.MXRT1050 上这 20ns 的中断延迟是符合 ARM 标准的。

二、测试代码

现在我们在芯片上实测一下,痞子衡把 i.MXRT1011/1021/1052/1062/1176 这五个型号均测了一遍,测试代码可以基于其各自 SDK 包。

以 i.MXRT1052 为例,选用 \SDK_2.10.0_EVKB-IMXRT1050\boards\evkbimxrt1050\driver_examples\gpio\input_interrupt 例程为模板(注意选择 debug build,即代码链接在 TCM 里,满足零等待内存的测试需求),按 《Cortex-M系统中断延迟》 一文第二小节设计思想修改主函数如下(关于 GPIO 中断使用可以参考 《以i.MXRT1xxx的GPIO模块为例谈谈中断处理函数(IRQHandler)的标准流程》 一文):

  • Note1: 为了结果的准确性,痞子衡同时测试了多个不同类型的 GPIO 中断,因为部分 i.MXRT 型号中包含普通 GPIO 和 HSGPIO,并且有些 GPIO 事件既可以触发 Combined 型中断,也可以触发独立的中断。
  • Note2: 输出信号用的 GPIO 类型对于本次测试不重要,无论选择普通 GPIO 还是 HSGPIO 去翻转,其翻转时长不影响最终测试结果。
uint32_t s_pin_low  = 0x000000;
uint32_t s_pin_high = 0x800000;

////////////////////////////////////////////////////////////////////////////////
// User Button SW8 - Pin4 in RT1050-EVKB
void GPIO5_Combined_0_15_IRQHandler(void)
{
    GPIO2->DR = s_pin_low;
    GPIO2->DR = s_pin_high;
    GPIO_PortClearInterruptFlags(GPIO5, 1U << 0);
    __DSB();
}

void init_gpio5_0(void)
{
    gpio_pin_config_t din_config = {kGPIO_DigitalInput, 0, kGPIO_IntFallingEdge};       
    IOMUXC_SetPinMux(IOMUXC_SNVS_WAKEUP_GPIO5_IO00, 0U); 
    GPIO_PinInit(GPIO5, 0, &din_config);
    NVIC_EnableIRQ(GPIO5_Combined_0_15_IRQn);
    GPIO_PortEnableInterrupts(GPIO5, 1U << 0);    
}

////////////////////////////////////////////////////////////////////////////////
// Arduino Interface, J24-2 in RT1050-EVKB
void GPIO1_Combined_0_15_IRQHandler(void)
{
    GPIO2->DR = s_pin_low;
    GPIO2->DR = s_pin_high;
    GPIO_PortClearInterruptFlags(GPIO1, 1U << 2);
    __DSB();
}

void GPIO1_INT2_IRQHandler(void)
{
    GPIO2->DR = s_pin_low;
    GPIO2->DR = s_pin_high;
    GPIO_PortClearInterruptFlags(GPIO1, 1U << 2);
    __DSB();
}

void init_gpio1_2(void)
{
    gpio_pin_config_t din_config = {kGPIO_DigitalInput, 0, kGPIO_IntFallingEdge};
    IOMUXC_SetPinMux(IOMUXC_GPIO_AD_B0_02_GPIO1_IO02, 0U); 
    GPIO_PinInit(GPIO1, 2, &din_config);
    NVIC_EnableIRQ(GPIO1_Combined_0_15_IRQn);
    //NVIC_EnableIRQ(GPIO1_INT2_IRQn);
    GPIO_PortEnableInterrupts(GPIO1, 1U << 2);    
}

////////////////////////////////////////////////////////////////////////////////
// TP26
void init_gpio2_23(void)
{
    gpio_pin_config_t dout_config = {kGPIO_DigitalOutput, 0, kGPIO_NoIntmode};
    IOMUXC_SetPinMux(IOMUXC_GPIO_B1_07_GPIO2_IO23, 0U); 
    IOMUXC_SetPinConfig(IOMUXC_GPIO_B1_07_GPIO2_IO23, 0x70F9U); 
    GPIO_PinInit(GPIO2, 23, &dout_config);
    GPIO2->DR |= 0x800000;
}

int main(void)
{
    BOARD_ConfigMPU();
    BOARD_InitBootClocks();
    CLOCK_EnableClock(kCLOCK_Iomuxc);           
    CLOCK_EnableClock(kCLOCK_IomuxcSnvs);     
    
    init_gpio5_0();
    init_gpio1_2();
    init_gpio2_23();

    while (1);
}

三、测试结果

现在我们来看 5 个 i.MXRT 型号的详细测试结果,根据测试结果,我们得出如下结论:

  • 结论1:不同类型 GPIO(普通GPIO/HSGPIO)或者不同类型的 GPIO 中断(Combined 型/独立型),其中断延迟结果几乎是一样的(但是 i.MXRT1170 除外)。
  • 结论2:i.MXRT1020/1050 上测出的 GPIO 中断延迟接近 ARM 标准值,但是 i.MXRT1010/1060/1170 上测出的 GPIO 中断延迟大于 ARM 标准值(猜测是 GPIO 模块设计导致的延迟较大,并不是内核本身延迟大)。
  • 结论3:本次方法测出的 GPIO 中断延迟不是一个固定值,存在约 3 个内核时钟周期的波动(多次测量观测到),原因可能是 PAD 信号跳变与 NVIC IRQ 信号置起的同步时机差异。

3.1 实测i.MXRT1011

系统时钟配置PADGPIOIRQt1t2td中断延迟时钟数
Core: 500MHz
           IPG: 125MHz
GPIO_01GPIO1[1]GPIO1_Combined_0_15_IRQn74 - 78ns33ns41 - 45ns20 - 23 cycles
GPIO2[1]GPIO2_Combined_0_15_IRQn
GPIO_SD_05GPIO2[5]

3.2 实测i.MXRT102x

系统时钟配置PADGPIOIRQt1t2td中断延迟时钟数
Core: 500MHz
           IPG: 125MHz
GPIO_AD_B0_06GPIO1[6]GPIO1_Combined_0_15_IRQn92 - 96ns64ns28 - 32ns14 - 16 cycles
GPIO1_INT6_IRQn
SNVS_WAKEUPGPIO5[0]GPIO5_Combined_0_15_IRQn

3.3 实测i.MXRT105x

系统时钟配置PADGPIOIRQt1t2td中断延迟时钟数
Core: 600MHz
           IPG: 150MHz
GPIO_AD_B0_02GPIO1[2]GPIO1_Combined_0_15_IRQn78 - 82ns54ns24 - 28ns14 - 17 cycles
GPIO1_INT2_IRQn
SNVS_WAKEUPGPIO5[0]GPIO5_Combined_0_15_IRQn

3.4 实测i.MXRT106x

系统时钟配置PADGPIOIRQt1t2td中断延迟时钟数
Core: 600MHz
           IPG: 150MHz
GPIO_AD_B0_02GPIO1[2]GPIO1_Combined_0_15_IRQn62 - 66ns27ns35 - 39ns21 - 24 cycles
GPIO1_INT2_IRQn
GPIO6[2]GPIO6_7_8_9_IRQn
SNVS_WAKEUPGPIO5[0]GPIO5_Combined_0_15_IRQn

3.5 实测i.MXRT117x

系统时钟配置PADGPIOIRQt1t2td中断延迟时钟数
Core: 996MHz
           BUS: 240MHz
GPIO_AD_01GPIO2[31]GPIO2_Combined_16_31_IRQn52 - 54ns29ns23 - 25ns23 - 25 cycles
CM7_GPIO2[31]CM7_GPIO2_3_IRQn
WAKEUP_DIGGPIO13[0]GPIO13_Combined_0_31_IRQn47 - 50ns18 - 21ns18 - 21 cycles







至此,i.MXRT1xxx的系统中断延迟时间痞子衡便介绍完毕了,掌声在哪里~~~


鱼鹰谈单片机 面向软件开发进阶读者,分享包括但不限于 C 语言、KEIL、STM32、51 等知识!
评论 (0)
  • 核心板简介创龙科技 SOM-TL3562 是一款基于瑞芯微 RK3562J/RK3562 处理器设计的四核 ARM C ortex-A53 + 单核 ARM Cortex-M0 全国产工业核心板,主频高达 2.0GHz。核心板 CPU、R OM、RAM、电源、晶振等所有元器件均采用国产工业级方案,国产化率 100%。核心板通过 LCC 邮票孔 + LGA 封装连接方式引出 MAC、GMAC、PCIe 2.1、USB3.0、 CAN、UART、SPI、MIPI CSI、MIPI
    Tronlong 2025-03-24 09:59 159浏览
  • 无论你是刚步入职场的新人,还是已经有几年经验的职场老手,培养领导力都是职业发展中一个至关重要的环节。拥有良好的领导能力不仅能让你从人群中脱颖而出,也能让你在团队中成为一个值得信赖、富有影响力的核心成员。什么是领导力?领导力并不仅仅意味着“当老板”或者“发号施令”。它更多地是一种能够影响他人、激发团队潜能,并带领大家实现目标的能力。一位优秀的领导者需要具备清晰的沟通能力、解决问题的能力,以及对人心的深刻理解。他们知道如何激励人心,如何在压力下保持冷静,并能在关键时刻做出正确的决策。如何培养领导力?
    优思学院 2025-03-23 12:24 77浏览
  • 在智能终端设备快速普及的当下,语音交互已成为提升用户体验的关键功能。广州唯创电子推出的WT3000T8语音合成芯片,凭借其卓越的语音处理能力、灵活的控制模式及超低功耗设计,成为工业控制、商业终端、公共服务等领域的理想选择。本文将从技术特性、场景适配及成本优势三方面,解析其如何助力行业智能化转型。一、核心技术优势:精准、稳定、易集成1. 高品质语音输出,适配复杂环境音频性能:支持8kbps~320kbps宽范围比特率,兼容MP3/WAV格式,音质清晰自然,无机械感。大容量存储:内置Flash最大支
    广州唯创电子 2025-03-24 09:08 166浏览
  • 人形机器人产业节奏预估:2024年原型机元年,2025年小规模量产元年。当宇树科技H1人形机器人以灵动的手部动作在春晚舞台上演创意融合舞蹈《秧Bot》,舞出"中国智造"时,电视机前十几亿观众第一次深刻意识到:那个需要仰望波士顿动力的时代正在落幕。*图源:宇树科技短短数周后,宇树G1机器人又用一段丝滑的街舞在网络收割亿级播放量,钢铁之躯跳出赛博朋克的浪漫。2月11日,宇树科技在其京东官方旗舰店上架了两款人形机器人产品,型号分别为Unitree H1和G1。2月12日,9.9万元的G1人形机器人首批
    艾迈斯欧司朗 2025-03-22 21:05 121浏览
  • 在智慧城市领域中,当一个智慧路灯项目因信号盲区而被迫增设数百个网关时,当一个传感器网络因入网设备数量爆增而导致系统通信失效时,当一个智慧交通系统因基站故障而导致交通瘫痪时,星型网络拓扑与蜂窝网络拓扑在构建广覆盖与高节点数物联网网络时的局限性便愈发凸显,行业内亟需一种更高效、可靠与稳定的组网技术以满足构建智慧城市海量IoT网络节点的需求。星型网络的无线信号覆盖范围高度依赖网关的部署密度,同时单一网关的承载设备数量有限,难以支撑海量IoT网络节点的城市物联系统;而蜂窝网络的无线信号覆盖范围同样高度依
    华普微HOPERF 2025-03-24 17:00 148浏览
  • 在人工智能与物联网技术蓬勃发展的今天,语音交互已成为智能设备的重要功能。广州唯创电子推出的WT3000T8语音合成芯片凭借其高性能、低功耗和灵活的控制方式,广泛应用于智能家居、工业设备、公共服务终端等领域。本文将从功能特点、调用方法及实际应用场景入手,深入解析这款芯片的核心技术。一、WT3000T8芯片的核心功能WT3000T8是一款基于UART通信的语音合成芯片,支持中文、英文及多语种混合文本的实时合成。其核心优势包括:高兼容性:支持GB2312/GBK/BIG5/UNICODE编码,适应不同
    广州唯创电子 2025-03-24 08:42 152浏览
  • 文/郭楚妤编辑/cc孙聪颖‍在人工智能与实体经济深度融合的时代浪潮中,究竟何种 AI 产品,方能切实契合用户对美好未来的向往与期待?3 月 20 日,备受全球瞩目的中国家电及消费电子博览会(AWE2025)于上海新国际博览中心盛大开幕。展会首日,长虹重磅推出首款治愈系 AI TV、客餐厅 PRO 共享空调,以及面向低空经济领域的通信模组等一系列创新产品。这一举动充分展现了长虹在家电领域全面推进 AI 化的坚定决心,以及为低空经济等新兴产业提供有力科技支撑的硬核实力 。“首发” 新品,领航用户价值
    华尔街科技眼 2025-03-21 21:13 54浏览
  • 文/Leon编辑/cc孙聪颖‍去年,百度公关部副总裁璩静的争议言论闹得沸沸扬扬,最终以道歉离职收场。时隔一年,百度的高管又出事了。近日,“百度副总裁谢广军女儿开盒孕妇”事件登上热搜,持续发酵,引起网友对百度数据安全性的怀疑。3月19日晚间,百度正式发布声明,表示坚决谴责窃取和公开他人隐私的网络暴力行为,同时强调,百度内部实施匿名化、假名化处理,经查验,泄露数据并非来自百度,而是海外的社工库,“当事人承认家长给她数据库”为不实信息,针对相关谣言百度已经向公安机关报案。然而,并非所有网友都对这份声明
    华尔街科技眼 2025-03-21 21:21 104浏览
  •       知识产权保护对工程师的双向影响      正向的激励,保护了工程师的创新成果与权益,给企业带来了知识产权方面的收益,企业的创新和发明大都是工程师的劳动成果,他们的职务发明应当受到奖励和保护,是企业发展的重要源泉。专利同时也成了工程师职称评定的指标之一,专利体现了工程师的创新能力,在求职、竞聘技术岗位或参与重大项目时,专利证书能显著增强个人竞争力。专利将工程师的创意转化为受法律保护的“无形资产”,避免技术成果被他人抄袭或无偿使
    广州铁金刚 2025-03-25 11:48 94浏览
  • 今年全国两会期间,“体重管理”和“育儿”整体配套政策引发了持久广泛关注。从“吃”到“养”,都围绕着国人最为关心的话题:健康。大家常说“病从口入”,在吃这件事上,过去大家可能更多是为了填饱肚子,如今,消费者从挑选食材到厨电都贯彻着健康的宗旨,吃得少了更要吃得好了。这也意味着在新消费趋势下,谁能抓住众人的心头好,就能带起众人的购买欲望,才能在新一轮竞争中脱颖而出。作为家电行业的风向标,在2025年中国家电及消费电子博览会(AWE)上,这两个话题也被媒体和公众频繁提及。深耕中国厨房三十余年的苏泊尔再次
    华尔街科技眼 2025-03-22 11:42 66浏览
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦