打印
[DSP]

TMS320VC5410 DSP的DSP/BIOS扩展寻址的实现(1)

[复制链接]
331|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 qwe890asd 于 2019-6-2 16:41 编辑

TMS320VC5410 DSP的DSP/BIOS扩展寻址的实现



摘要: TMS320VC5410的程序空间通常被限制在64K地址空间内, 当应用程序超出64K, 则需增加目标系统存储区和附加逻辑, 实现对系统的扩展。介绍了如何配置及使用DSP/BIOS接口来实现扩展寻址功能, 分析了API函数调用和中断触发过程, 并以DSP并行自举引导方式实现程序的脱离仿真运行


关键词DSP/BIOS 扩展寻址 API 并行自举引导


1 DSP/BIOS 接口


DSP/BIOS 接口提供了基本的运行服务如应用程序实时分析功能时钟周期函数、I/O模块优先级的任务调度等DSP/BIOS 接口提供支持汇编语言和C语言的API 接口函数这些API 函数绝大部分都是用汇编语言实现的因此汇编语言可以直接调用APIC语言调用API 则要通过DSP/BIOS C封装器应用程序通过调用API 函数来使用DSP/BIOS 接口,如软件中断背景线程和中断服务程序等都可以调用DSP/BIOS 的函数DSP/BIOS 要调用用户的C语言函数时则要通过函数链接器如图1所示






2 扩展程序空间

TMS320VC5410 的16位地址空间被划分为两块低地址块定义为公共区(或未映射区),高地址块定义为映射区(或扩展区)。这两块的地址由目标系统的外部寄存器和存储区决定。值得注意的是,TMS320VC5410 的数据区没有扩展存储区


用户可以在映射区上定义多个物理存储区它们覆盖整个映射区但彼此间不重叠当使用存储区的扩展页时内部16 位地址空间被扩展为32 位的地址进行寻址16 位代表扩展页的数目16 位代表局部的16 位地址如使用扩展程序映射存储器XPC)存放扩展页码,则XPC 存放在数据空间地址为0x1E 的位置它的值要与.CMD链接文件中定义的扩展页码保持一致2 所示的是一个扩展3 页的程序区结构图公共区的范围是0x0000-0x7FFF;映射区的范围是0x8000-0xFFFF;映射区为第一页XPC 要为0才能访问该区映射地址空间存放两个扩展页扩展程序映射寄存器限定了映射地址,使得每个扩展页的每个单元具有唯一的地址当访问扩展页时,映射区将被覆盖





TMS320VC5410 DSP/BIOS 不仅支持64K 程序页内的访问模式而且支持扩展程序的访问模式只需设置DSP/BIOS 的属性即可实现扩展程序的访问要注意的是汇编语言写的API 只能在PAGE0 页调用,而C语言写的API 可以在任何页面调用



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 (XPC12)。








使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

455

主题

583

帖子

5

粉丝