3 中断
当中断产生时,DSP 的内部结构机制只能保存低16位页内的局部地址,而扩展寻址时程序地址需要23 位,这就意味着调用和返回时将超出64K(16位地址)的范围,因此必须考虑怎样保存和恢复扩展地址。解决的方法是用中断服务程序(ISR)保存XPC的值,确保能正确计算中断向量,为此中断向量表必须放在公共区或映射区的64K 程序页面上。当DSP/BIOS 在公共区上时,ISR 可以放在任何位置;如果不在公共区上,则ISR 必须放在PAGE0上。
当OVLY=0 时,为了能保证中断正确执行,必须在每一个页面上都要有中断向量表的拷贝。当OVLY=1 时,只需在公共页面上(如0x7F80)作一份中断向量表的拷贝就可以了。
4 程序实例
下面通过一个简单的例子介绍DSP/BIOS 如何实现程
序地址的扩展。本例中有三个软中断:时钟中断PRD_POST_SWI, 每100ms 触发SWI_PAGE1(或SWI_PAGE2)一次;SWI_PAGE1 完成置XF 高;SWI_PAGE2完成置XF 低。三个软中断执行的函数分别放在程序空间的不同页面上,即PRD_POST_SWI 放在公共页面上(XPC=0), Page1Func 和Page2Func 分别放在扩展程序页面1和2 上(XPC为1和2)。
5 DSP/BIOS 的配置
如要把DSP/BIOS 的程序映射到扩展程序空间,需要对其进行配置,步骤如下:
(1) 建立一个新配置文件。启动仿真软件(Code Composer Studio), 建立testfar.pjt 工程,通过File 中的New--DSP/BIOS Config 创建配置文件, 选用sd54.cdb (54X EVM)配置。
(2) 添加软件中断。右键打开软件中断管理器(Software Interrupt Manager), 选择Insert SWI, 创建SWI_PAGE1, 属性配置为:function:_Page1Func;priority2。用同样的方法
创建function为_Page2Func的SWI_PAGE2。右键打开定
时器功能管理器(Periodic Function Manage), 选择Insert PRD, 创建PRD_POST_SWI, 属性配置为:period(ticks):50, function:_PRD_Post_SWI, mode:continuous。
(3) 设置OVLY 位为1。打开System中的Global Settings 的属性页, 在PMST(6-0) 项中填入使第5位为1的值
本文关键字:暂无联系方式综合-其它,单片机-工控设备 - 综合-其它