csl 配置中断和 hwi 配置中断介绍

50
CSL 配配配配配 HWI 配配配配配配 Xue Zhengliang 2013-05

Upload: ima

Post on 14-Jan-2016

224 views

Category:

Documents


6 download

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 Presentation

TRANSCRIPT

Page 1: CSL 配置中断和 HWI 配置中断介绍

CSL 配置中断和 HWI 配置中断介绍

Xue Zhengliang

2013-05

Page 2: CSL 配置中断和 HWI 配置中断介绍

2

内容介绍

1. 中断

2. CSL 配置中断

3. HWI 配置中断

4. 小结

Page 3: CSL 配置中断和 HWI 配置中断介绍

3

1 中断1.1 中断处理的流程图1.2 中断的一些术语

Page 4: CSL 配置中断和 HWI 配置中断介绍

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 ?

Page 5: CSL 配置中断和 HWI 配置中断介绍

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 的中断

Page 6: CSL 配置中断和 HWI 配置中断介绍

6

1.1 中断处理的流程图 ---- 经过 CIC 后,再进入 core 的中断

Page 7: CSL 配置中断和 HWI 配置中断介绍

7

1.1 中断处理的流程图 ---- 不经过 CIC ,直接进入 core 的中断处理流程图

这类中断由interrupt controller (INTC )来处理

当外部中断的数目大于 12的时候,才需要用到 Event combiner 。

interrupt selector 用来绑定 system event EVT[x] 和外部中断号 INTy

Page 8: CSL 配置中断和 HWI 配置中断介绍

8

1.1 中断处理的流程图 ---- 不经过 CIC ,直接进入 core 的中断处理流程图

Page 9: CSL 配置中断和 HWI 配置中断介绍

9

1.1 中断处理的流程图 ---- 不经过 CIC ,直接进入 core 的中断处理流程图

Page 10: CSL 配置中断和 HWI 配置中断介绍

10

1.1 中断处理的流程图 ---- 不经过 CIC ,直接进入 core 的中断处理流程图

这类中断是在corepac 内部消化的

Page 11: CSL 配置中断和 HWI 配置中断介绍

11

1.1 中断处理的流程图 ---- 不经过 CIC ,直接进入 core 的中断处理流程图IFR 置 1 后还需要完成的工作(这点 66x 与 64x+ 是一样的): IER (相应位置 1 ,并且保证 NMIE 位置 1 ) GIE 置 1 Vector Table :中断向量表,跳转到相应的中断处理函数 ISR

Page 12: CSL 配置中断和 HWI 配置中断介绍

12

1.1 中断处理的流程图 ---- 不经过 CIC ,直接进入 core 的中断处理流程图

要保证进入中断处理函数,要进行如下配置: IER 寄存器中相应位需要置 1 ,并保证 NIME 位置 1

保证 CSR 寄存器中的 GIE 位置 1

选择一个外部中断向量 INTy

定义中断处理函数 ISR ,并且与相应的外部中断向量 INTy 进行绑定,这一步相当于配置 Vector Table

Page 13: CSL 配置中断和 HWI 配置中断介绍

13

1.1 中断处理的流程图 ---- 经过 CIC 后,再进入 core 的中断处理流程图

几个概念: CIC or CpIntc System Interrupt Host Interrupt

CIC:Chip –level Interrupt Controller( 也称作 CpIntc) System Interrupt : CIC 的输入 Host Interrupt : CIC 的输出

Page 14: CSL 配置中断和 HWI 配置中断介绍

14

1.1 中断处理的流程图 ---- 经过 CIC 后,再进入 core 的中断处理流程图

System Interrupt 有哪些?以 6616 的 CIC0 为例,详见 Table 7-39 6616 Data Manual SPRS624D

Page 15: CSL 配置中断和 HWI 配置中断介绍

15

1.1 中断处理的流程图 ---- 经过 CIC 后,再进入 core 的中断处理流程图

Host Interrupt 有哪些?经过 CIC 后,再进入 core 的中断

Page 16: CSL 配置中断和 HWI 配置中断介绍

16

1.1 中断处理的流程图 ---- 经过 CIC 后,再进入 core 的中断处理流程图

channel mapping

Page 17: CSL 配置中断和 HWI 配置中断介绍

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

Page 18: CSL 配置中断和 HWI 配置中断介绍

18

1.1 中断处理的流程图 ---- 经过 CIC 后,再进入 core 的中断处理流程图

与不经过 CIC ,直接进入 core 的中断相比,这类中断需要增加 CIC 的输入和输出进行一系列的配置。

Page 19: CSL 配置中断和 HWI 配置中断介绍

19

1.1 中断处理的流程图 ---- 经过 CIC 后,再进入 core 的中断处理流程图

与不经过 CIC ,直接进入 core 的中断相比,后续处理部分是相同的。

Page 20: CSL 配置中断和 HWI 配置中断介绍

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 级的中断控制单元

Page 21: CSL 配置中断和 HWI 配置中断介绍

21

2 CSL 配置中断2.1 INTC 的配置( Timer , EDMA例子)2.2 CIC 的配置( EDMA 例子)2.3 Timer+EDMA CSL 配置的例子

Page 22: CSL 配置中断和 HWI 配置中断介绍

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

Page 23: CSL 配置中断和 HWI 配置中断介绍

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

Page 24: CSL 配置中断和 HWI 配置中断介绍

24

2.1 INTC 的配置 ---- 中断处理函数

CSL_intcEventClear (): EVTCLR 寄存器相应位清 0

Page 25: CSL 配置中断和 HWI 配置中断介绍

25

2.2 CIC 的配置 ----INTC 配置

这部分跟 Timer 例子的中断处理类似 具体有 CSL INTC 的初始化, NMIE 置1 , GIE 置 1 ,绑定外部中断向量,绑定中断处理函数以及 IER 相应位置 1

Page 26: CSL 配置中断和 HWI 配置中断介绍

26

2.2 CIC 的配置 ----CIC 相关寄存器的配置

Page 27: CSL 配置中断和 HWI 配置中断介绍

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.

Page 28: CSL 配置中断和 HWI 配置中断介绍

28

2.2 CIC 的配置 ---- 中断处理函数

关闭 Host Interrupt 清 System Interrupt 使能 Host Interrupt

Page 29: CSL 配置中断和 HWI 配置中断介绍

29

2.3 Timer+EDMA CSL 配置的例子 ---- 中断配置

intc_config() 需要配置 EDMA 和 Timer ,这块不知道如何写cp_intc_config() 需要配置 EDMA ,不需要配置Timer

Page 30: CSL 配置中断和 HWI 配置中断介绍

30

2.3 Timer+EDMA CSL 配置的例子 ---- 期望得到的结果

该例子期望得到 3.3 类似的输出结果

Page 31: CSL 配置中断和 HWI 配置中断介绍

31

3 HWI 配置中断3.1 Timer 的 INTC 配置3.2 EDMA 的 INTC 和 CIC 配置3.3 Timer+EDMA 的配置

Page 32: CSL 配置中断和 HWI 配置中断介绍

32

3.1 Timer 的 INTC 配置 ---- 新建 SYS/BIOS 类型的工程

Page 33: CSL 配置中断和 HWI 配置中断介绍

33

3.1 Timer 的 INTC 配置 ----cfg 文件新增内容

需要使用的模块:

新建一个 task ,名称为 Timer_Hwi_Task:

main 函数执行 BIOS_start() 后,会调用Timer_Hwi_Task

Page 34: CSL 配置中断和 HWI 配置中断介绍

34

3.1 Timer 的 INTC 配置 ---- 引入 SYS/BIOS 需要包含的头文件

Page 35: CSL 配置中断和 HWI 配置中断介绍

35

3.1 Timer 的 INTC 配置 ---- 任务 Timer_Hwi_Task

NMIE 和 GIE 由 SYS/BIOS 置 1

Page 36: CSL 配置中断和 HWI 配置中断介绍

36

3.1 Timer 的 INTC 配置 ----Hwi 方式与 CSL 方式的比较

Page 37: CSL 配置中断和 HWI 配置中断介绍

37

3.2 EDMA 的 INTC 和 CIC 配置 ----SYS/BIOS 工程

cfg 文件:

main.c :

Page 38: CSL 配置中断和 HWI 配置中断介绍

38

3.2 EDMA 的 INTC 和 CIC 配置 ----INTC 的配置

Page 39: CSL 配置中断和 HWI 配置中断介绍

39

3.2 EDMA 的 INTC 和 CIC 配置 ----CIC 的配置

Page 40: CSL 配置中断和 HWI 配置中断介绍

40

3.2 EDMA 的 INTC 和 CIC 配置 ----CIC 的配置比较

Page 41: CSL 配置中断和 HWI 配置中断介绍

41

3.2 EDMA 的 INTC 和 CIC 配置 ---- 中断处理函数

Page 42: CSL 配置中断和 HWI 配置中断介绍

42

3.3 Timer+EDMA 的配置 ----EDMA 部分

Page 43: CSL 配置中断和 HWI 配置中断介绍

43

3.3 Timer+EDMA 的配置 ----Timer 部分

Page 44: CSL 配置中断和 HWI 配置中断介绍

44

3.3 Timer+EDMA 的配置 ---- 中断处理函数

中断处理函数与 3.1,3.2 部分的相同

Page 45: CSL 配置中断和 HWI 配置中断介绍

45

3.3 Timer+EDMA 的配置 ---- 输出结果

Page 46: CSL 配置中断和 HWI 配置中断介绍

46

4 小结4.1 参考文献4.2 参考程序4.3 工程说明

Page 47: CSL 配置中断和 HWI 配置中断介绍

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

Page 48: CSL 配置中断和 HWI 配置中断介绍

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

Page 49: CSL 配置中断和 HWI 配置中断介绍

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

Page 50: CSL 配置中断和 HWI 配置中断介绍

50

END