csl 配置中断和 hwi 配置中断介绍
DESCRIPTION
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 : - PowerPoint PPT PresentationTRANSCRIPT
CSL 配置中断和 HWI 配置中断介绍
Xue Zhengliang
2013-05
2
内容介绍
1. 中断
2. CSL 配置中断
3. HWI 配置中断
4. 小结
3
1 中断1.1 中断处理的流程图1.2 中断的一些术语
4
1.1 中断处理的流程图 ---- 中断拓扑结构图6616 为例:截图来自6616 的Data ManualSPRS624D
中断类型 2 :经过 CIC 后,再进入 core 的中断,例如 106 core-only Secondary Events
中断类型 1 :不经过 CIC ,直接进入 core 的中断,例如 92 Primary Events
中断类型 1 较中断类型 2 简单,哪些中断属于中断类型1 ,哪些属于中断类型 2 ?
5
1.1 中断处理的流程图 ---- 不经过 CIC ,直接进入 core 的中断
以 core0 为例:进入 core0 的中断一共有 5 路: 8+8+92+18+2=128(128 个中断见 Table 7-38 6616 Data Manual SPRS624D). 这 128 个中断有个术语描述: System Event128 个中断里与 CIC 有关的是第 2 路( 8 Broadcast Events from CIC0 )和第 4路 (18 Secondary Events) ,其余的中断都是不经过 CIC ,直接进入 core 的中断
6
1.1 中断处理的流程图 ---- 经过 CIC 后,再进入 core 的中断
7
1.1 中断处理的流程图 ---- 不经过 CIC ,直接进入 core 的中断处理流程图
这类中断由interrupt controller (INTC )来处理
当外部中断的数目大于 12的时候,才需要用到 Event combiner 。
interrupt selector 用来绑定 system event EVT[x] 和外部中断号 INTy
8
1.1 中断处理的流程图 ---- 不经过 CIC ,直接进入 core 的中断处理流程图
9
1.1 中断处理的流程图 ---- 不经过 CIC ,直接进入 core 的中断处理流程图
10
1.1 中断处理的流程图 ---- 不经过 CIC ,直接进入 core 的中断处理流程图
这类中断是在corepac 内部消化的
11
1.1 中断处理的流程图 ---- 不经过 CIC ,直接进入 core 的中断处理流程图IFR 置 1 后还需要完成的工作(这点 66x 与 64x+ 是一样的): IER (相应位置 1 ,并且保证 NMIE 位置 1 ) GIE 置 1 Vector Table :中断向量表,跳转到相应的中断处理函数 ISR
12
1.1 中断处理的流程图 ---- 不经过 CIC ,直接进入 core 的中断处理流程图
要保证进入中断处理函数,要进行如下配置: IER 寄存器中相应位需要置 1 ,并保证 NIME 位置 1
保证 CSR 寄存器中的 GIE 位置 1
选择一个外部中断向量 INTy
定义中断处理函数 ISR ,并且与相应的外部中断向量 INTy 进行绑定,这一步相当于配置 Vector Table
13
1.1 中断处理的流程图 ---- 经过 CIC 后,再进入 core 的中断处理流程图
几个概念: CIC or CpIntc System Interrupt Host Interrupt
CIC:Chip –level Interrupt Controller( 也称作 CpIntc) System Interrupt : CIC 的输入 Host Interrupt : CIC 的输出
14
1.1 中断处理的流程图 ---- 经过 CIC 后,再进入 core 的中断处理流程图
System Interrupt 有哪些?以 6616 的 CIC0 为例,详见 Table 7-39 6616 Data Manual SPRS624D
15
1.1 中断处理的流程图 ---- 经过 CIC 后,再进入 core 的中断处理流程图
Host Interrupt 有哪些?经过 CIC 后,再进入 core 的中断
16
1.1 中断处理的流程图 ---- 经过 CIC 后,再进入 core 的中断处理流程图
channel mapping
17
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
18
1.1 中断处理的流程图 ---- 经过 CIC 后,再进入 core 的中断处理流程图
与不经过 CIC ,直接进入 core 的中断相比,这类中断需要增加 CIC 的输入和输出进行一系列的配置。
19
1.1 中断处理的流程图 ---- 经过 CIC 后,再进入 core 的中断处理流程图
与不经过 CIC ,直接进入 core 的中断相比,后续处理部分是相同的。
20
1.2 中断的一些术语
缩写 全称 含义GEM Generalized
Embedded Megamodule
is a module combination of all the cores and memory controlls in which the L1 and L2 reside.c64x 用到的术语,类似 66x 的 corepac
INTC INTerruptController
corepac 内的中断控制单元
CpIntcCIC
Chip-levelInterruptController
chip 级的中断控制单元
21
2 CSL 配置中断2.1 INTC 的配置( Timer , EDMA例子)2.2 CIC 的配置( EDMA 例子)2.3 Timer+EDMA CSL 配置的例子
22
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
23
2.1 INTC 的配置 ---- 绑定外部中断向量和中断处理函数
该例使用 Timer5 的高位,选择外部中断向量为 CSL_INTC_VECTID_13 , system event ID 查 Data manual Table 7-38 得到 CSL_GEM_TINT5HCSL_intcOpen (): 绑定中断向量 CSL_intcPlugEventHandler () :绑定中断处理函数 CSL_intcHwControl() : IER 中的相应位置 1
24
2.1 INTC 的配置 ---- 中断处理函数
CSL_intcEventClear (): EVTCLR 寄存器相应位清 0
25
2.2 CIC 的配置 ----INTC 配置
这部分跟 Timer 例子的中断处理类似 具体有 CSL INTC 的初始化, NMIE 置1 , GIE 置 1 ,绑定外部中断向量,绑定中断处理函数以及 IER 相应位置 1
26
2.2 CIC 的配置 ----CIC 相关寄存器的配置
27
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.
28
2.2 CIC 的配置 ---- 中断处理函数
关闭 Host Interrupt 清 System Interrupt 使能 Host Interrupt
29
2.3 Timer+EDMA CSL 配置的例子 ---- 中断配置
intc_config() 需要配置 EDMA 和 Timer ,这块不知道如何写cp_intc_config() 需要配置 EDMA ,不需要配置Timer
30
2.3 Timer+EDMA CSL 配置的例子 ---- 期望得到的结果
该例子期望得到 3.3 类似的输出结果
31
3 HWI 配置中断3.1 Timer 的 INTC 配置3.2 EDMA 的 INTC 和 CIC 配置3.3 Timer+EDMA 的配置
32
3.1 Timer 的 INTC 配置 ---- 新建 SYS/BIOS 类型的工程
33
3.1 Timer 的 INTC 配置 ----cfg 文件新增内容
需要使用的模块:
新建一个 task ,名称为 Timer_Hwi_Task:
main 函数执行 BIOS_start() 后,会调用Timer_Hwi_Task
34
3.1 Timer 的 INTC 配置 ---- 引入 SYS/BIOS 需要包含的头文件
35
3.1 Timer 的 INTC 配置 ---- 任务 Timer_Hwi_Task
NMIE 和 GIE 由 SYS/BIOS 置 1
36
3.1 Timer 的 INTC 配置 ----Hwi 方式与 CSL 方式的比较
37
3.2 EDMA 的 INTC 和 CIC 配置 ----SYS/BIOS 工程
cfg 文件:
main.c :
38
3.2 EDMA 的 INTC 和 CIC 配置 ----INTC 的配置
39
3.2 EDMA 的 INTC 和 CIC 配置 ----CIC 的配置
40
3.2 EDMA 的 INTC 和 CIC 配置 ----CIC 的配置比较
41
3.2 EDMA 的 INTC 和 CIC 配置 ---- 中断处理函数
42
3.3 Timer+EDMA 的配置 ----EDMA 部分
43
3.3 Timer+EDMA 的配置 ----Timer 部分
44
3.3 Timer+EDMA 的配置 ---- 中断处理函数
中断处理函数与 3.1,3.2 部分的相同
45
3.3 Timer+EDMA 的配置 ---- 输出结果
46
4 小结4.1 参考文献4.2 参考程序4.3 工程说明
47
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
48
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
timer_test.c
2476.main.c.txt
49
4.3 工程说明
名称 说明C6616_edma_int_csl EDMA CSL 配置中断C6616_edma_int_hwi EDMA Hwi 配置中断C6616_timer_int_csl Timer CSL 配置中断C6616_timer_int_hwi Timer Hwi 配置中断C6616_edma_timer_int_csl EDMA+Timer CSL 配置中断C6616_edma_timer_int_hwi EDMA+Timer Hwi 配置中断
以上测试需要在 core0 上操作
Projects.rar
50
END