- 1、本文档共90页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
课件地址 网址: 用户名:radar2464@126.com 密码:100081 题外话:DSP加载 4种方式: EPROM/FLASH引导: TigerSHARC作为主动方,用外部口输出地址、读、BMS等控制信号,从EPROM或FLASH中加载代码 主机引导: TigerSHARC作为被动方,不向外部输出控制信号,外部主机或其它设备向TigerSHARC的主机、链路口传送要加载的代码 链路口引导: 通过处理器的链路口实现程序的引导和加载; 非引导: 通过外部不同的Strap信号,从内部存储器的不同地址开始执行程序。 在四种方式中,前三种需要引导程序内核,而且都有相同的引导过程: TigerSHARC自动启动一个DMA,自动把256字(32位)传送到内部存储器的地址0x00~0xFF 内核执行上述256字指令(称为加载核),加载核启动其它DMA,把后续指令和数据加载到内部或外部存储器 最后加载核自我覆盖 TS201加载核 一段加载核程序,描述DSP执行加载核程序 如何启动AutoDMA进行收数逻辑设计 如何根据收到数据的类型对后续的指令和数据加载到内部或外部存储器 最后进行加载核的自我覆盖的实现过程 参看C:\Program Files\Analog Devices\VisualDSP 5.0\TS\ldr\TS201_host工程内的主机加载工程 加载核原理 (1)寄存器初始化和锁定总线 (2) 对DSP做一些相关设置,以匹配处理器复位后的芯片状态 关闭全局中断,关闭所有Link收发中断通道,外部口DMA中断通道0 没有对AutoDMA通道进行关闭 关闭Cache 重设置SQCTL寄存器,使能全局中断,运行处理器响应中断 建立AutoDMA0中断向量表,挂AutoDMA0中断服务程序 加载后续指令和数据时要用到的一些寄存器的初始化 (3) 启动DMA数据传输,传输结束后自动进入中断函启动下一次DMA传输 (4)对接收到的数据进行分析及处理 调试信息查看方法 Simulator环境 以文件作为输入数据 单步、断点时察看内存、外存、变量值 运行时printf打印中间结果(编程实现) Emulator环境(JTAG或PCI) 通过外设接口来接收数据 单步、断点时察看内存、外存、变量值 运行时printf打印中间结果(编程实现) 实际运行时多板卡并行调试 通过外设接口发送中间结果(编程实现) 通过外设显示中间结果(编程实现闪灯) X,Y计算块寄存器:X,Y前缀 寻址寄存器:J,K前缀 程序控制寄存器:CJMP、SQSTAT等 链路口寄存器 :LCTLx,LSTATx DMA寄存器:DCSx 外部端口控制和状态寄存器 调试寄存器:CCNT、WPxCTL、TRCBx 广播空间和多处理器空间的作用 多DSP间直接内存操作 锁定、释放总线 芯片处理同步 计算结果共享 汇编语言程序设计 标识符和运算符 标识符:以字母或者_开头,可包括数字,区分大小写 运算符:()、~求补、-、*/%+-、、、与、|或、^异或 预处理伪指 #define 定义宏,必须在一行内写完,超过时行末加 \ 来续 #include “文件名”,defts201.h重要头文件 汇编伪指令 .segment = .section 标记段的起始 .var 定义变量或缓冲 .global 使一个符号全局化 .extern 使一个符号外部化(由其他文件定义) 行嵌入式汇编语句 asm(“汇编指令”):直接形式 asm(模板:输出操作数,.....:输入操作数,......:选中寄存器) 操作数用%0,%1,%2等表示,输出操作数前用=注明 例:asm(“r9=%1;r10=%2;%0=r9+r10;”:“=d”(result):\ “d”(from),“d”(to):“r9”,“r10”); 注意分行时用续行标志 \ C程序设计 输入输出文件 .c c源文件 .h 头文件 .cpp,.cxx c++源文件 .pch 编译预处理头文件 支持的数据类型 (unsigned)int/long/short、char、float、double 32位 long do
文档评论(0)