基于TMS320C6455系列DSP的中断系统的使用

本文主要是关于tms320c6455的相关介绍,并着重对tms320c6455系列dsp的中断系统的使用进行了详尽的阐述。
tms320c6455 tms320c6455是ti公司推出的的一款新型高性能单核定点dsp.它是ti公司基于第三代先进veloviti vliw(超长指令字)结构开发出来的新产品,在通信,医疗图像,无线传输方面都可以大有作为.tms320c6455主频达到了1ghz,1ns的指令周期.每周期执行8条32位指令,最大峰值速度达到8000mips.这意味着.在1g时钟频率下,8000个16位“16位的macs能在1秒钟发生.tms320c6455还带有seria/rapidlofr)总线,互连速率每秒高达25gbits,实现了极高的多处理性能,降低了系统消耗,比此前的外部存储器接口快12倍,这使得多dsp级连变得十分方便.tms320cc6455片内是基于c64xx内核的l1/l2存储结构.片上集成有大量的存储空间.l1p为32k字节,l1d为32k字节 l2为2m字节、比此前c64x器的存储器容量件翻一番,其中l1p和l2都可直接映射到存储空间。
tms320c6455的外围总线包括:一个内部集成电路总线(i2c).两个多路缓冲串口总线fmcbsps),两个64位通用定时器(可以配置成4个32位定时器),一个可配置的16位或32位主机接口(hpi6/hpi32).一个pci总线,一个16管脚的通用输入/输出端口(gpio),一个10/100/1000m 以太网媒体访问控制器(emac)。一个无缝外部存储器接口(64一bit emifa),一个32位ddr2 sdram接口。
c6455由于自带千兆emac,外接phy物理层芯片即可实现一个千兆以太网口。千兆以太网的实现使得c6455嵌入式处理器与台式机等设备的数据传输变得异常方便。ti为c6455等处理器提供了ndk(network develop kit),通过ndk的使用可以简化c6455中tcp/ip或者udp等数据传输协议的实现。
基于tms320c6455系列dsp的中断系统的使用
仔细观察上图,可以看出c6455有一下几种中断:
1. reset
2. nmi 不可屏蔽中断
3. excep 硬件异常
4. 12个普通中断int[15:4]
我们使用的最多的也就是普通中断,所以这也是本文的重点。
接下来,沿着int[15:4]往后退,看到的是interrupt selector,它的功能好比一个筛子(shuffle),对所有中断事件进行选择性映射。如下图示:
看了这个图,我们又不难发现,中断选择器是一个128--》12的映射,这也就意味着,有116个系统事件被过滤掉了。
接着往回走,可以看到,中断选择器有三个输入,分别是:
reset
event[3:0]
event[127:4]
reset不看了,硬件重启。
event[127:4]是系统事件,这个事件的编号根据芯片的不同而不同,拿6455来说,部分映射情况如下面两个图片所示:
不难看出,这些编号都是固定的,基本囊括了芯片上所有模块的事件。
最后,比较特别的是event[3:0],它是组合事件,通过下图的介绍应该就一目了然了。
可见,event0对应 4-31号事件的组合事件,event2对应32-63号事件的组合事件,以此类推。
那么,怎么组合呢?
这就不得不从寄存器开始说起了。首先,先看如下3个寄存器组:
(注:每组都是4个32位寄存器,每一组的evtxxx0[3:0]都不使用,故这里不涉及到组合事件)
系统事件发生时(124个),它们在事件标志寄存器中(evtflagx)的对应位会被置1,此时可以通过向evtclr寄存器中对应位写入1来清除中断标志,然后执行中断服务程序。若不清除,那么相同事件再次发生时会产生问题。故,手动清除中断标志是必须的!且只能通过向evtclr寄存器中写入1来清除,不能直接向evtflag寄存器写入0,因为evtflag寄存器是read only的。
另外,evtset寄存器的存在意义就是我们可以手动产生中断,这一点可以让我们测试中断服务程序的功能。
介绍完上面三个基本的寄存器组,我们可以开始讨论组合事件的机制了。先看下图:
可以明显的看出,124个事件被分成了4组。然后经过两个寄存器的运算,产生组合事件。
下面介绍evtmask和mevt flag两个寄存器组。
evt mask寄存器组用于决定每一个组中的哪些事件被屏蔽掉。默认情况下,没有事件被屏蔽(全0)。
鉴于最终的组合事件evtx的发生机制是对group中所有事件进行或运算,即只要group中有一个事件发生,就代表组合事件发生。
举个例子:
假如evtmask3=0x0fffffff,那么代表只有事件124,125,126,127参与组合。其他事件96-123都被忽略。
mevt flag寄存器同evt flag寄存器的值相同,表示事件是否发生。这样一旦知道了evtmask和mevt flag两个寄存器的值就可以断定组合事件evtx(0《=x《=3)是否发生了。
通过上面的介绍,应该已经很清楚c6455的中断机制了,再贴一张图来巩固一下上面所说的内容:
说到这里,我们对上图中红色框以及它之前的东西了解的很清楚了,下面就是interrupt selector的机制了。
其实很简单,为12个中断分别配置对应的事件编号即可。只需要3个寄存器就ok啦。
分别是intmux1,intmux2,intmux3。贴一个图就应该很明了了。
举个例子:
假设我要让int4映射到gpio4,那么通过查找前面的图,发现gpint4的事件编号是55,那么只要把intmux1的低7位设置成0x37即可。
此外,官方文档里还说了下面一段话:
可见,int4优先级最高,int15优先级最低
结语 关于tms320c6455的相关介绍就到这了,希望通过本文能让你对tms320c6455有更全面的认识。
相关阅读推荐:基于tms320c6455的高速srio接口设计
相关阅读推荐:基于tms320c6000系列dsp的维特比译码程序优化设计

基于MIPS32架构的Linux操作系统移植
企业组织如何成功抵御DDoS的七大关键因素
基于ODX诊断测试开发(1):ODX数据库剖析
工业无人机固定翼激光雷达 傲势纯电动无人机才是未来
阿里云最新研究报告《人工智能:未来制胜之道》介绍
基于TMS320C6455系列DSP的中断系统的使用
2020排名前15位的半导体供应商是哪些?
Molex新推单排镀金 Pico-Clasp线对板连接器
云创硬见PCB基础知识(一)
激光雷达的3D成像原理及应用分类
大疆农业植保无人飞机T16向全球展示中国现代农业科技
关于三种磷酸铁锂电池型号的简单介绍
教你如何保养LED车灯
一种基于MVC架构的智能储物柜交互系统设计
IBM工程师Scott Grizzle浅谈流媒体协议和Codec
智能家居远程监控系统设计与实现
苹果 A12 仿生芯片每平方毫米晶体管比 A11 仿生芯片多 70%
One Plus 3T国行发布时间确认:配置彪悍 售价有惊喜!
怎么样才能将手机上的画面投到电脑屏幕上
Redis的删除策略和内存淘汰机制介绍