520 likes | 836 Views
CSL 配置中断和 HWI 配置中断介绍. Xue Zhengliang 2013-05. 内容介绍. 1. 中断 CSL 配置中断 HWI 配置中断 小结. 1. 中断. 1.1 中断处理的流程图 1.2 中断的一些术语. 1.1 中断处理的流程图 ---- 中断拓扑结构图. 6616 为例: 截图来自 6616 的 Data Manual SPRS624D. 中断类型 1 : 不经过 CIC ,直接进入 core 的中断,例如 92 Primary Events. 中断类型 2 :
E N D
CSL配置中断和HWI配置中断介绍 Xue Zhengliang 2013-05
内容介绍 • 1. 中断 • CSL配置中断 • HWI配置中断 • 小结
1 中断 1.1 中断处理的流程图 1.2 中断的一些术语
1.1 中断处理的流程图----中断拓扑结构图 6616为例: 截图来自6616的Data Manual SPRS624D 中断类型1: 不经过CIC,直接进入core的中断,例如92 Primary Events 中断类型2: 经过CIC后,再进入core的中断,例如106 core-only Secondary Events 中断类型1较中断类型2简单,哪些中断属于中断类型1,哪些属于中断类型2?
1.1 中断处理的流程图----不经过CIC,直接进入core的中断 以core0为例: 进入core0的中断一共有5路:8+8+92+18+2=128(128个中断见Table 7-38 6616 Data Manual SPRS624D). 这128个中断有个术语描述:System Event 128个中断里与CIC有关的是第2路(8 Broadcast Events from CIC0)和第4路(18 Secondary Events) ,其余的中断都是不经过CIC,直接进入core的中断
1.1 中断处理的流程图---- 经过CIC后,再进入core的中断
1.1 中断处理的流程图----不经过CIC,直接进入core的中断处理流程图 这类中断由interrupt controller(INTC)来处理 当外部中断的数目大于12的时候,才需要用到Event combiner。 interrupt selector用来绑定system event EVT[x]和外部中断号INTy
1.1 中断处理的流程图----不经过CIC,直接进入core的中断处理流程图
1.1 中断处理的流程图----不经过CIC,直接进入core的中断处理流程图
1.1 中断处理的流程图----不经过CIC,直接进入core的中断处理流程图 这类中断是在corepac内部消化的
1.1 中断处理的流程图----不经过CIC,直接进入core的中断处理流程图 IFR置1后还需要完成的工作(这点66x与64x+是一样的): IER(相应位置1,并且保证NMIE位置1) GIE置1 Vector Table:中断向量表,跳转到相应的中断处理函数ISR
1.1 中断处理的流程图----不经过CIC,直接进入core的中断处理流程图 • 要保证进入中断处理函数,要进行如下配置: • IER寄存器中相应位需要置1,并保证NIME位置1 • 保证CSR寄存器中的GIE位置1 • 选择一个外部中断向量INTy • 定义中断处理函数ISR,并且与相应的外部中断向量INTy进行绑定,这一步相当于配置Vector Table
1.1 中断处理的流程图----经过CIC后,再进入core的中断处理流程图 几个概念: CIC or CpIntc System Interrupt Host Interrupt CIC:Chip –level Interrupt Controller(也称作CpIntc) System Interrupt:CIC的输入 Host Interrupt:CIC的输出
1.1 中断处理的流程图----经过CIC后,再进入core的中断处理流程图 System Interrupt有哪些? 以6616的CIC0为例,详见Table 7-39 6616 Data Manual SPRS624D
1.1 中断处理的流程图----经过CIC后,再进入core的中断处理流程图 Host Interrupt有哪些?经过CIC后,再进入core的中断
1.1 中断处理的流程图----经过CIC后,再进入core的中断处理流程图 channel mapping
1.1 中断处理的流程图----经过CIC后,再进入core的中断处理流程图 通过一个例子了解该类型中断的配置: 使用EDMA3 CC1,假设EDMA的中断选择的是EDMA3CC1 GINT,通过Table 7-39,得到System Interrupt为6。 Host Interrupt可以有多种选择,假设选择的Host Interrupt为Table 7-38中的CIC0_OUT(8+16*n)。如果是core0,则n=0, Host Interrupt为8。 Event ID是伴随着CIC0_OUT(8+16*n)而确定的。 CPU Interrupt Vector是自定义的,假设这里选择的是4
1.1 中断处理的流程图----经过CIC后,再进入core的中断处理流程图 与不经过CIC,直接进入core的中断相比,这类中断需要增加CIC的输入和输出进行一系列的配置。
1.1 中断处理的流程图----经过CIC后,再进入core的中断处理流程图 与不经过CIC,直接进入core的中断相比,后续处理部分是相同的。
2 CSL配置中断 2.1 INTC的配置(Timer,EDMA例子) 2.2 CIC的配置(EDMA例子) 2.3 Timer+EDMA CSL配置的例子
2.1 INTC的配置----INTC初始化 该例使用Timer5的高位,intc_init()函数跟外设无关 CSL_intcInit(): This is the initialization function for the INTC.This function initializes the CSL data structures, and doesn't affect the H/W. CSL_intcGlobalNmiEnable() :NMIE置1 CSL_intcGlobalEnable() :GIE置1
2.1 INTC的配置----绑定外部中断向量和中断处理函数 该例使用Timer5的高位,选择外部中断向量为CSL_INTC_VECTID_13,system eventID 查Data manual Table 7-38得到CSL_GEM_TINT5H CSL_intcOpen ():绑定中断向量 CSL_intcPlugEventHandler () :绑定中断处理函数 CSL_intcHwControl() :IER中的相应位置1
2.1 INTC的配置----中断处理函数 CSL_intcEventClear():EVTCLR寄存器相应位清0
2.2 CIC的配置----INTC配置 这部分跟Timer例子的中断处理类似 具体有CSL INTC的初始化,NMIE置1,GIE置1,绑定外部中断向量,绑定中断处理函数以及IER相应位置1
2.2 CIC的配置----CSL函数的分析 CSL_CPINTC_open():opens the CPINTC instance and returns a handle used in all subsequent calls CSL_CPINTC_disableAllHostInterrupt():disables all the Host Interrupts in the system. CSL_CPINTC_mapSystemIntrToChannel(): used to map a system interrupt to a specific channel. CSL_CPINTC_enableSysInterrupt(): enables the system interrupt in the CIC. CSL_CPINTC_enableHostInterrupt() enables the host interrupt in CIC CSL_CPINTC_enableAllHostInterrupt() enables all the Host Interrupts in the system.
2.2 CIC的配置----中断处理函数 关闭Host Interrupt 清System Interrupt 使能Host Interrupt
2.3 Timer+EDMA CSL配置的例子----中断配置 intc_config()需要配置EDMA和Timer,这块不知道如何写 cp_intc_config()需要配置EDMA,不需要配置Timer
2.3 Timer+EDMA CSL配置的例子----期望得到的结果 该例子期望得到3.3类似的输出结果
3 HWI配置中断 3.1 Timer的INTC配置 3.2 EDMA的INTC和CIC配置 3.3 Timer+EDMA的配置
3.1 Timer的INTC配置----cfg文件新增内容 需要使用的模块: 新建一个task,名称为Timer_Hwi_Task: main函数执行BIOS_start()后,会调用Timer_Hwi_Task
3.1 Timer的INTC配置----引入SYS/BIOS需要包含的头文件
3.1 Timer的INTC配置----任务Timer_Hwi_Task NMIE和GIE由SYS/BIOS置1
3.2 EDMA的INTC和CIC配置----SYS/BIOS工程 cfg文件: main.c:
3.3 Timer+EDMA的配置----中断处理函数 中断处理函数与3.1,3.2部分的相同
4 小结 4.1 参考文献 4.2 参考程序 4.3 工程说明
4.1 参考文献 • 1 configuring Interrupts on Keystone Devices----TI wiki • http://processors.wiki.ti.com/index.php/Configuring_Interrupts_on_Keystone_Devices • 2 TMS320TCI6616 Communications Infrastructure KeyStone SoC----SPRS624D • 3 TMS320C66x DSP CPU and Instruction Set Reference Guide---- SPRUGH7 • 4 TMS320C66x DSP CorePac User Guide---- SPRUGW0B • 5 KeyStone Architecture Chip Interrupt Controller (CIC) User Guide---- SPRUGW4A
4.2 参考程序 • 1 Timer: • C:\ti\pdk_C6678_1_0_0_20\packages\ti\csl\example\timer • timer_test.c • 2 EDMA: • http://e2e.ti.com/support/dsp/c6000_multi-core_dsps/f/639/t/177116.aspx
4.3 工程说明 以上测试需要在core0上操作