
1. 项目概述从硬件信号迷宫到清晰路径在嵌入式系统尤其是像TI AM263P这类面向实时控制的高性能MCU开发中最让人头疼的往往不是算法逻辑而是底层硬件的“连线”问题。我说的“连线”不是物理PCB走线而是芯片内部各种外设如MCAN、SPI、DMA控制器产生的中断或触发信号如何精准、高效地“送达”给正确的处理单元如CPU核、PRU可编程实时单元或EDMA控制器。如果你曾面对技术参考手册TRM里动辄几十页、列满数百行信号映射的表格感到无从下手那么你正需要理解中断路由Interrupt Routing和其核心硬件——XBARCrossbar交叉开关。简单来说你可以把AM263P芯片内部想象成一个繁忙的交通枢纽。各种外设车辆不断产生事件信号鸣笛这些信号需要被引导到不同的处理车道CPU、DMA等。XBAR就是这个枢纽的智能交通调度系统。它不是一个简单的固定线路而是一个可编程的矩阵开关允许几乎任意的“源-目的”连接。PRU_ICSS_XBAR和EDMA_XBAR就是其中两个关键的“调度中心”前者主要负责将事件路由给PRU子系统用于工业实时通信协议如EtherCAT、PROFINET后者则专注于为EDMA增强型直接内存访问控制器提供触发信号以实现高效的数据搬运。本文将从实际开发的角度深入解析AM263P中这两个XBAR模块的硬件请求映射机制。我不会止步于翻译手册表格而是结合我多年在工控和汽车电子领域的踩坑经验告诉你这些映射关系在代码配置中如何体现在系统设计时如何规划以及如何避开那些手册里没明说但实际开发中一定会遇到的“坑”。无论你是正在评估AM263P用于新项目还是正在为其编写底层驱动理解这套机制都是实现稳定、高效实时系统的基石。2. XBAR中断路由机制核心原理解析在深入具体模块之前我们必须先建立起对XBAR中断路由机制的顶层认知。这不仅仅是知道“它能连”更要明白“为什么这么设计”以及“怎么连最好”。2.1 什么是硬件请求Hardware Request在AM263P的语境下硬件请求是一个关键概念。它特指由外设硬件内部状态机自动产生的一个脉冲或电平信号用于向系统其他部分宣告一个事件的发生。它与软件发起的中断Software Interrupt有本质区别源头硬件请求源于外设的特定硬件事件如SPI接收FIFO达到阈值、MCAN成功发送一帧、GPIO引脚检测到边沿、定时器周期匹配。特性它是一个纯粹的硬件电信号不携带任何数据负载仅表示“事件已发生”。目的该信号的目的地可以是CPU的中断控制器如VIM也可以是DMA控制器如EDMA用于触发中断服务程序ISR或启动一次DMA传输。例如当SPI0接收缓冲区满时其硬件会产生一个名为SPI0_dma_Read_req0的脉冲信号。这个信号就是一个硬件请求它可以通过XBAR被路由到EDMA控制器从而自动触发一次DMA读取操作将SPI数据搬到内存全程无需CPU干预。2.2 XBAR可配置的硬件信号高速公路XBAR的本质是一个高度可配置的多输入、多输出数字开关矩阵。它的核心价值在于灵活性和确定性延迟。灵活性Flexibility传统固定中断映射某个外设中断固定连接到CPU的某个中断输入会限制系统设计。当外设资源紧张或需要功能重组时可能面临冲突。XBAR允许你将几乎任何外设的硬件请求映射到几乎任何可用的目标输入上。比如你可以将MCAN0的接收中断映射到CPU中断线A也可以为了优先级管理改映射到中断线B。确定性延迟Deterministic Latency对于PRU_ICSS这类用于实时工业以太网的子系统信号传输的延迟必须是确定且极短的。XBAR作为纯硬件电路其路由延迟是固定的、可预测的通常在几个时钟周期内这满足了实时系统对时间精度的苛刻要求。解耦设计DecouplingXBAR将“事件生产者”外设和“事件消费者”CPU/DMA解耦。驱动开发者在配置外设时只需关心“产生什么事件”在配置中断或DMA时只需关心“处理什么事件”。中间的连接关系通过配置XBAR的映射寄存器来完成这使得软件架构更清晰模块化程度更高。2.3 电平Level与脉冲Pulse中断类型在映射表中你会看到每个硬件请求都有Type字段标明是Level或Pulse。这是中断信号的两种基本形式理解其区别对稳定编程至关重要电平触发Level-sensitive中断信号在请求期间持续保持有效电平高或低。CPU/DMA必须在整个有效电平期间都能识别到它。优势是对短暂的毛刺信号不敏感。风险是如果中断服务程序ISR没有清除导致该电平持续的外设状态中断会持续触发导致系统锁死。在AM263P的PRU_ICSS_XBAR输入中MCAN的中断如mcanss5_mcan_lvl_int_0通常是电平型因为CAN控制器需要CPU读取状态寄存器来清除中断标志。脉冲触发Edge-sensitive / Pulse中断信号是一个短暂的脉冲通常一个时钟周期宽度。CPU/DMA只需在脉冲上升沿或下降沿捕获一次即可。优势是即使中断源状态未及时清除也不会导致重复触发。风险是可能错过非常短暂的脉冲。EDMA_XBAR的输入几乎全是脉冲型如SPI0_dma_Read_req0因为DMA请求通常是“一次性”的数据就绪请求DMA搬运搬运完成请求结束。实操心得在配置CPU侧中断控制器VIM时必须根据XBAR路由过来的信号类型正确设置VIM通道为电平或边沿触发模式。如果配置不匹配如将电平信号配置为边沿触发可能会导致中断无法被触发或触发一次后丢失反之边沿配成电平则可能引发中断风暴。这是新手最容易栽跟头的地方之一。3. PRU_ICSS_XBAR_INTRTR0 深度解析与应用PRU_ICSS可编程实时单元和工业通信子系统是AM263P用于实现诸如EtherCAT、PROFINET IRT、EtherNet/IP等实时以太网协议的核心引擎。PRU_ICSS_XBAR_INTRTR0就是这个子系统与芯片其他部分进行事件通信的“总闸门”。3.1 模块定位与输入源分析根据手册PRU_ICSS_XBAR_INTRTR0连接在INFRA0 VBUSP Interconnect上时钟为200MHz。它的核心作用是将一系列外设的中断信号路由到PRU_ICSS内部供其两个PRU核心PRU0 PRU1或其中断控制器使用。观察其输入映射表Table 10-6我们可以将其输入源分为几大类高速通信外设MCAN5,MCAN6,MCAN7。每个MCAN实例提供了两个电平中断mcan_lvl_int_0/1和一个时间同步溢出中断ext_ts_rollover_lvl_int。这意味着PRU可以直接响应CAN FD通信的完成事件或时间同步错误实现极低延迟的CAN报文处理或网络时间同步管理。串行通信接口SPI5,SPI6,SPI7。这些SPI接口的中断被引入使得PRU可以处理高速SPI数据流例如直接驱动外部ADC/DAC或与另一个处理器进行紧耦合通信。潜在的其他来源虽然提供的片段只展示了MCAN和SPI但完整的映射表通常还会包含来自其他XBAR如GPIO_XBAR的输出、定时器事件等为PRU提供丰富的触发源。3.2 输出目的地与配置逻辑手册片段未列出PRU_ICSS_XBAR_INTRTR0的输出表但根据TI同类芯片如AM64x的设计惯例其输出通常会连接到PRU0/PRU1的中断输入每个PRU核心有多个中断输入线用于触发PRU的程序流。PRU_ICSS内部的中断控制器INTCINTC可以汇总多个中断源进行优先级仲裁后再提交给PRU核心。PRU_ICSS内部的EDMA如果有触发子系统内部的数据搬运。配置PRU_ICSS_XBAR的关键在于理解PRU的任务。例如在一个EtherCAT从站应用中你可能将MCAN5的接收中断映射到PRU0的某个中断输入。当CANopen over EtherCATCoE有SDO报文到达时PRU0能立即响应解析命令。同时将某个SPI7的中断映射到PRU1用于实时读取连接在SPI上的高精度编码器数据并将数据打包进EtherCAT过程数据PDO中。配置过程通常通过写该XBAR模块的映射寄存器完成。每个输出通道如outl_intr_X都有一个对应的配置寄存器其中包含一个“源选择”字段用于选择连接到该输出的输入信号如IN_INTR63。3.3 实战配置示例与注意事项假设我们需要将MCAN6的中断0路由到PRU_ICSS_XBAR的某个输出供PRU0使用。查找输入索引从表10-6可知MCAN6的mcanss6_mcan_lvl_int_0对应XBAR Module in_intr为IN_INTR66。确定输出目标需要查阅PRU_ICSS章节找到PRU0的中断输入在PRU_ICSS_XBAR上对应的输出引脚假设为outl_intr_10。编写配置代码// 假设 PRU_ICSS_XBAR_INTRTR0 的基地址为 0x0272_0000 // 输出通道10的配置寄存器偏移量假设为 0x100 10*4 0x128 volatile uint32_t *pru_icss_xbar_out10_cfg (volatile uint32_t*)(0x02720000 0x128); // 将输出通道10的源设置为输入66。具体位域需查寄存器手册。 // 通常格式为*pru_icss_xbar_out10_cfg (66 SOURCE_SELECT_SHIFT) | ...其他控制位; *pru_icss_xbar_out10_cfg 66; // 简化示例实际需按位操作在PRU0侧配置在PRU0的固件或Linux PRU驱动中使能对应的中断输入并编写中断服务函数。注意事项时钟使能在配置XBAR前确保其模块时钟SYSCLK已使能。通常由系统配置模块如SYS_RCM默认开启但在低功耗模式唤醒后需检查。信号同步当源外设和XBAR/PRU在不同时钟域时硬件可能自动插入同步器。但开发者需意识到这会增加1-2个时钟周期的延迟。优先级冲突如果多个重要中断都映射到同一个PRU需要考虑它们在PRU INTC内的优先级设置。XBAR只负责路由不负责优先级仲裁。4. EDMA_XBAR_INTRTR0 深度解析与应用如果说PRU_ICSS_XBAR是为实时控制核心服务的那么EDMA_XBAR_INTRTR0就是整个芯片数据搬运体系的“总调度室”。它的规模庞大得多从片段看有超过256个输入和64个输出专门用于将各种外设的DMA请求灵活地连接到EDMA控制器的64个触发输入上。4.1 模块架构与核心作用EDMA_XBAR_INTRTR0同样位于INFRA0 VBUSP Interconnect运行在200MHz。它的设计目标非常明确为TPCCThird-Party Channel Controller即EDMA控制器提供可灵活配置的触发源。输入in_intr囊括了芯片几乎所有支持DMA的外设请求从基础的LIN、I2C、SPI、UART到复杂的MCAN、MCRC循环冗余校验模块、DTHE数据加解密硬件引擎甚至来自其他XBAR如CONTROLSS_DMA_XBAR,GPIO_XBAR的级联请求。表10-11就像一个详尽的“供应商名单”。输出outl_intr固定连接到TPCC的EDMA_Trigger_XBAROut_X共64路outl_intr_0到outl_intr_63。这64路对应EDMA的64个硬件触发通道EDMA_TR_X。4.2 输入源分类与典型应用场景分析表10-11我们可以将输入源按功能分组这有助于系统设计时的资源规划外设组实例典型请求信号应用场景通信接口SPI0-SPI7SPIx_dma_Read_req0-3,Write_req0-3全双工SPI通信每个方向可配置多个DMA通道用于乒乓缓冲区等高级数据流管理。UART0-UART5usartx_dma_0,usartx_dma_1通常0为接收请求1为发送请求实现串口数据自动收发。MCAN0-MCAN7mcanssx_tx_dma_0-3,mcanssx_fe_0-6tx_dma用于自动发送CAN帧fe_0-6可能对应多个FIFO或缓冲区的接收事件实现高吞吐量CAN FD通信。I2C0-I2C3I2Cx_TX,I2Cx_RXI2C主从模式的DMA读写。定时与触发RTI0-RTI7RTIx_DMA_0-3定时器周期性触发DMA用于模拟数据采集、PWM波形生成等。SOC_TimeSync_XBARSync_Xbarout_0-1系统级时间同步事件触发DMA用于精确时间戳的数据记录。安全与校验MCRCmcrc_DMA_Event_0-3CRC校验完成触发DMA读取结果或校验错误触发告警。DTHEDTHE_SHA/AES_DMA_REQ0-7加解密引擎的输入/输出数据DMA请求实现流式加解密。存储与扩展MMCSDmmc_DMA_RD,mmc_DMA_WRSD/eMMC卡的数据读写DMA。OSPIOSPI_INTR对外部闪存如QSPI Flash操作的DMA请求。通用与级联GPIO_XBARGPIO_xbarout_4-7将GPIO引脚事件作为DMA触发源例如外部信号启动数据记录。CONTROLSS_DMA_XBARCCSS_DMA_0-15来自控制子系统ControlSS的DMA请求用于片内子系统间数据交换。4.3 核心配置流程与寄存器详解配置EDMA_XBAR的本质就是为EDMA的某个硬件触发通道例如EDMA_TR_12选择一个外设事件源例如SPI0的接收请求SPI0_dma_Read_req0。步骤一确定输入源索引从表10-11查到SPI0_dma_Read_req0对应的XBAR Module in_intr是IN_INTR18。这个“18”就是该信号在XBAR输入总线上的逻辑编号。步骤二确定输出通道映射EDMA控制器的64个触发通道EDMA_TR_0到EDMA_TR_63固定连接到EDMA_XBAR的outl_intr_0到outl_intr_63。假设我们想使用EDMA_TR_12那么对应的就是outl_intr_12。步骤三编写XBAR映射配置每个输出通道outl_intr_n都有一个对应的映射寄存器EDMA_XBAR_TR_MUX_n具体名称需查寄存器手册。我们只需向该寄存器写入输入源的索引值。// 假设 EDMA_XBAR_INTRTR0 基地址为 0x27040000 // 假设输出通道12的映射寄存器偏移量为 0x100 12*4 0x130 volatile uint32_t *edma_xbar_tr12_mux (volatile uint32_t*)(0x27040000 0x130); // 将输出通道12的源设置为输入18。寄存器可能只需写入这个索引值。 *edma_xbar_tr12_mux 18; // 将 SPI0的读请求0 连接到 EDMA_TR_12步骤四配置EDMA通道参数在EDMA控制器TPCC侧需要配置通道12的参数集PaRAM设置触发源为EDMA_TR_12即硬件触发模式。配置源/目的地址、传输数量、链接地址等。使能该通道。// 伪代码基于TI Driver或寄存器操作 EDMA_configureParamSet(channel12, ¶mSet); paramSet.triggerSource EDMA_TRIGGER_XBAR_OUT12; // 对应 outl_intr_12 // ... 设置其他参数 EDMA_enableChannel(channel12);步骤五配置外设以产生DMA请求最后需要配置SPI0控制器使其在接收FIFO达到阈值时产生SPI0_dma_Read_req0硬件请求信号。// 配置SPI0使能DMA接收请求 SPI_enableDMA(SPI0_BASE, SPI_DMA_RX); // 使能接收DMA SPI_setDMARxThreshold(SPI0_BASE, 8); // 设置接收FIFO阈值为8字节时触发请求至此一个完整的DMA触发链路就配置好了SPI0收到数据-产生IN_INTR18信号-EDMA_XBAR路由至outl_intr_12-触发EDMA_TR_12-EDMA执行传输。4.4 高级应用与性能优化技巧多通道与乒乓缓冲以SPI为例它有4个读请求和4个写请求。你可以将Read_req0和Read_req1分别映射到两个EDMA通道如TR_12和TR_13并配置这两个通道的PaRAM相互链接。当TR_12完成传输后自动将TR_13的参数加载并等待下一次请求实现零延迟的乒乓缓冲最大化SPI吞吐量。事件链ChainingEDMA可以在一次传输完成后自动触发另一个通道的传输。通过EDMA_XBAR你可以将一个外设的完成事件如DTHE加密完成路由到EDMA触发下一个处理环节的DMA如将加密结果通过MCAN发送出去构建硬件加速的数据处理流水线。GPIO触发的高灵活性GPIO_XBAR的输出可以作为EDMA_XBAR的输入。这意味着任何一个GPIO引脚上的边沿事件都可以直接触发一次DMA传输。这在同步采集外部ADC数据时极其有用无需CPU干预实现纳秒级精度的采样启动。资源冲突排查EDMA_XBAR的64个输出是唯一资源。在系统集成时必须制作一张映射表记录每个outl_intr_n被哪个外设占用避免多个外设竞争同一个EDMA触发通道。这是大型项目软件架构设计时必须完成的文档工作。5. GPIO_XBAR_INTRTR0系统事件的万能触发器GPIO_XBAR_INTRTR0是一个相对特殊但功能强大的模块。它不像前两者有明确的功能域而是作为一个通用事件分发中心将多达180个GPIO引脚GPIO_0 到 GPIO_179的输入事件灵活地路由到多个不同的目的地。5.1 设计意图与系统角色它的存在意义在于事件泛化将物理GPIO引脚的电平变化转化为标准的硬件请求脉冲。这使得按键、限位开关、同步信号等任何外部数字事件都能以统一的方式接入芯片内部复杂的事件处理网络。路由中枢如表10-15所示它的输出可以送往ICSSM_XBAR给PRU、EDMA_XBAR触发DMA、TimeSync_XBAR用于系统时间戳、以及四个VIMVectored Interrupt Manager向量中断管理器服务于Cortex-R5F/M4F等CPU核心。这意味着一个GPIO事件可以同时或选择性地触发PRU动作、启动DMA传输、打上精确时间戳、并通知CPU。5.2 输入输出映射解析输入表10-16非常直观每个GPIO引脚GPIO_0到GPIO_143以及GPIO Bank中断gpio_144_0_bank_intr_0等都对应一个唯一的in_intr_X编号。例如GPIO_15对应in_intr_15。输出表10-15显示了30个输出通道outl_intr_0到outl_intr_29每个通道都可以独立配置其输入源。输出目的地多样outl_intr_0-3-ICSSM_XBAR用于PRU实时响应。outl_intr_4-7-EDMA_XBAR用于GPIO触发DMA。outl_intr_8-13-TimeSync_XBAR用于为事件捕获精确时间戳。outl_intr_14-29-VIM_0到VIM_3用于触发CPU中断。5.3 典型应用场景与配置实例场景在电机控制中使用GPIO_23连接霍尔传感器的Z相信号每转一个脉冲我们需要用这个脉冲同时做三件事1) 触发一个DMA将当前编码器计数值记录到特定数组2) 给PRU发送一个同步信号3) 产生一个CPU中断用于更高层的逻辑处理如圈数累计。配置步骤配置GPIO引脚将GPIO_23配置为输入并使能中断检测边沿检测。GPIO_setDirMode(GPIO_BASE, 23, GPIO_DIRECTION_INPUT); GPIO_setInterruptType(GPIO_BASE, 23, GPIO_INT_TYPE_RISING_EDGE); // 上升沿触发配置GPIO_XBAR路由GPIO_23 对应输入in_intr_23。假设我们使用outl_intr_4连接到EDMA_XBARoutl_intr_0连接到ICSSM_XBARoutl_intr_14连接到VIM_0。// 配置 GPIO_XBAR 输出通道4选择输入源23 *(volatile uint32_t*)(GPIO_XBAR_BASE 0x100 4*4) 23; // 配置输出通道0选择输入源23 *(volatile uint32_t*)(GPIO_XBAR_BASE 0x100 0*4) 23; // 配置输出通道14选择输入源23 *(volatile uint32_t*)(GPIO_XBAR_BASE 0x100 14*4) 23;配置下游模块在EDMA_XBAR中将GPIO_XBAR_EDMA_out_0对应outl_intr_4映射到某个EDMA_TR_X并配置该DMA通道完成编码器数值的抓取。在PRU_ICSS_XBAR中将GPIO_XBAR_ICSSM_out_0对应outl_intr_0映射到PRU0的中断输入。在VIM_0中断控制器中配置对应的中断线并绑定CPU中断服务函数。这样当霍尔传感器Z相脉冲到来时硬件自动并行触发三条处理路径实现了极高精度和效率的协同处理。避坑指南去抖动处理GPIO_XBAR路由的是原始硬件信号。对于机械开关等可能抖动的信号务必在GPIO模块本身或软件中断服务程序中实现去抖动逻辑否则会导致一系列误触发。输出冲突同一个outl_intr_n只能连接一个输入源。如果多个GPIO事件需要送到同一个目的地如都触发CPU中断需要分配不同的outl_intr_n通道并在VIM中配置多个中断入口。电平与脉冲GPIO_XBAR输出固定为脉冲类型。这意味着即使GPIO配置为电平中断经过XBAR后也只会产生一个脉冲。下游模块如VIM必须配置为边沿触发模式。6. 系统集成设计思路与调试心得理解了单个XBAR模块后如何将它们组合起来设计一个稳健的AM263P应用系统以下是我从多个项目中总结出的思路和教训。6.1 自上而下的中断/DMA规划表在写第一行代码之前强烈建议用表格或图表工具规划整个系统的中断和DMA资源。表格应包含以下列外设/事件如SPI0_RX,MCAN1_TX,GPIO_45_rising_edge。硬件请求信号如SPI0_dma_Read_req0,mcanss1_tx_dma_0,GPIO_45。XBAR输入索引如IN_INTR18,IN_INTR78,IN_INTR45。目标处理单元如EDMA_CH12,PRU0_INT4,R5F0_VIM_INT30。XBAR输出通道如EDMA_XBAR_outl_intr_12,PRU_XBAR_outl_intr_5,GPIO_XBAR_outl_intr_15。优先级在VIM或PRU INTC中设置的优先级。软件ISR/回调函数最终处理的C函数或PRU汇编标签。这份表格是硬件和软件工程师之间的重要沟通文档能极大避免后期资源冲突和调试混乱。6.2 初始化顺序的“潜规则”芯片上电后模块初始化顺序至关重要错误的顺序可能导致无法捕获初始事件或配置失效。一个推荐的顺序是使能时钟和解除复位确保SYS_RCM模块已为所有涉及的XBAR、外设、EDMA、VIM提供了时钟和释放了复位。配置外设本身先配置SPI、MCAN、GPIO等外设的基本功能模式但先不使能其中断或DMA请求。配置XBAR路由按照规划表依次配置GPIO_XBAR-EDMA_XBAR-PRU_ICSS_XBAR的映射寄存器。此时信号通路已建立但源还未产生信号。配下游消费者配置EDMA的PaRAM集、使能通道配置VIM的中断类型和分配配置PRU的中断处理程序。最后使能外设请求使能外设的DMA请求或中断产生功能。例如执行SPI_enableDMA()和GPIO_enableInterrupt()。这个“先铺路后通车”的顺序可以避免在配置过程中产生意外的中断或DMA传输。6.3 调试实战当DMA不触发时这是最常见的问题。假设你配置了SPI0的DMA接收但数据就是不动。请按以下流程排查确认信号源头使用寄存器查看或调试器确认SPI0的接收FIFO是否真的有数据以及其DMA请求使能位和状态位是否被置起。SPI-DMACR.RX_DMA_EN和SPI-DMASR.RX_FIFO_LEVEL。检查XBAR映射读取EDMA_XBAR_TR_MUX_n寄存器确认其值是否是你期望的输入源索引如18。这是最常出错的一步可能是地址算错或者写入后被其他代码意外修改。检查EDMA配置通道参数集PaRAM的源/目的地址是否有效触发源是否设置为对应的EDMA_TRIGGER_XBAR_OUTn通道是否已使能EDMA_CHANNEL_ENABLE_SETEDMA控制器全局是否使能使用调试工具如果芯片支持利用CCS的System Analyzer或芯片的硬件事件跟踪功能可以直观看到硬件请求信号是否在XBAR输入/输出端出现这是定位硬件连接问题的利器。检查时钟与复位确认SPI0、EDMA_XBAR、TPCCEDMA控制器的模块时钟都已使能且不在复位状态。查看SYS_RCM相关寄存器。6.4 性能考量与最佳实践延迟评估XBAR引入的延迟极小通常10ns但对于纳秒级精度的应用如EtherCAT分布式时钟仍需在系统延迟预算中考虑。PRU_ICSS_XBAR的路径通常优化得最好。中断风暴防护对于电平中断务必在ISR中及时清除外设的中断标志位。可以在VIM中配置中断阈值或使用中断屏蔽寄存器作为第二道防线。DMA通道优先级EDMA控制器内部通道有优先级。对于高实时性要求的数据流应分配高优先级通道并可能需要在EDMA_XBAR路由时考虑将多个高优先级外设映射到不同的EDMA触发通道以避免在EDMA仲裁层面产生阻塞。电源管理影响在进入低功耗模式前需要评估XBAR路由的事件是否会无意中唤醒系统。必要时在休眠前临时禁用某些XBAR映射或下游中断。