CCS初学调试以及RTDX
1.DSP/BIOS应用程序调试(2009.10.20)
在CCS2.0 的emulator写dsp/bios 的程序,编译链接无错误,而点击LOAD Program下载xxx.out完成时弹出如下对话框:
RTDX target application does not match emulation protocol!
Loaded program was created with an rtdx library which does not match the target device
这将导致RTDX(实时数据交换)不能使用
分析:
RTXD可以在DSP/BIOS中使用,也可以脱离DSP/BIOS使用;目前CCS Simulator不支持RTDX,故RTDX必须在Emulator下使用,即还需要硬件仿真器和DSP目标板。
故这是由于下载BIOS/DSP程序时RTDX设置错误导致的;
问题解决如下:
把DSP/BIOS配置窗口中的input/output-->RTDX -real-Time Exchange settings的RTDX mode 改为JTAG(原来是simulator),重新编译后LOAD,上述警告消除,可以在模拟的情况下进行BIOS调试了。
PS:虽然simulator能编译运行DSP/BIOS程序,并能提供实时查询程序运行情况(主要是CPU负荷,时序,日志以及线程等)。但实际开发DSP/BIOS应用程序时为了真实的了解目标板的各种信息,仅有Simulator(软件仿真器)是不行的,还需要使用Emulator(硬件仿真器)和DSP/BIOS插件(安装时已装入)。
2.RTDX应用程序调试(10.22)
RTDX测试DSP Target传输数据到PC机:
a)创建工程,编辑源代码(.c/。asm),加入头文件(.h),库文件(.lib)以及链接命令文件(.cmd)
b)添加修改具有实时数据传输的RTDX语句
包括:#include <rtdx.h>; RTDX头文件(rtdx.h)
RTDX_CreateOutputChannel( ochan ); 定义一个全局的PC机数据输出通道,通道名可以任取
TARGET——INITIALIZE(); 初始化DSP目标系统;
RTDX_enableOutput( &ochan ); 使能输出通道写数据;
status=RTDX_write( &ochan,&data,sizeof(data) ); 传送数据至PC;
RTDX_disableOutput( &ochan ); 禁止输出通道传输数据。
c)进行数据处理,测试应用程序
编译链接完成后载入.out文件。在TOOLS-RTDX-Configration中设置RTDX使能,运行debug-run。
出现问题:下载可执行文件时提示
“Data verification failed at address 0x(某地址)Please verify target memory and memory map.”
按跳过提示下载完成后messages栏提示:
Can't Set Breakpoint: Error 0x00000008/-1076 Error during: Break Point, Cannot set/verify breakpoint at 0x80007958
Breakpoint Manager: An error was encountered attempting to set a breakpoint used
for end of program detection.
Can't Set Breakpoint: Error 0x00000008/-1076 Error during: Break Point, Cannot set/verify breakpoint at 0x800081B4
分析:根据CMD文件确认你的地址分配是否在DSP可分配的RAM中;如果给程序分配的地址不在片内的RAM段肯定是会出错的。可能CMD地址空间实际上不属于RAM映射地址范畴,导致不能正常读写。
另外如果DSP片内有程序正在运行,在下载新程序的时候也会出错。出现这种情况,可以在DSP启动前与CCS进行连接。
解决:更改cmd文件中的地址分配使之与OPTION中的Memory Map映射地址空间一致。
3.DSP硬件仿真环境问题汇总
a)无论是在硬件仿真环境还是软件仿真环境中都无法创建DSP项目,可能是安装时在以前安装过CCS的软件,导致冲突;链接文件.dll未注册,或者与系统文件不兼容,解决方法:建议备份文件后重装C盘
b)打开STEP后,无法初始化硬件仿真器
可能的原因是
CCS STEP中的硬件配置USB驱动安装或者I/O口出现错误(如1仿真器连接是否正常? 2仿真器的I/O设置是否正确? 3XDS仿真器的电源及仿真头是否正确? 4目标系统型号是否正确? 5仿真器是否正常?);
USB驱动程序未安装(从“我的电脑-管理”中可以查到是否安装成功驱动)
c)关于gel文件,memory map一致性问题
memory map的作用
1. 内存映射以页面为单位,将文件内容映射到内存中。
2. 使用内存映射可以创建内存映射文件。内存映射文件的优点是我们不需要调用 read 、write 之类的I/O函数,只需用从内存映射区取、存数据,实际的 I/O 操作是由内核执行的,可以简化代码。
3. 使用内存映射可以实现进程间共享内存。
选择有效的存储器空间映射关系
设计原则:CCS下的存储器空间设置应该与目标板的硬件实际配置一致,没有的存储器不要有效。这样便于调试,CCS会发现你调入程序时或程序运行时,是否访问了无效地址。
配置存储器空间映射的方法:
1)在GEL文件中设置;
2)在Option菜单下,选择Memory Map选项,根据你的硬件设置。注意一定要将Enable Memory Mapping置为使能。
常出现的相关情形:
出现以上情况均是由于内存单元设置不一致导致的。前图是由于点击option-memory map-Enable Memory Mapping项,CCS虽然使能了“Enable Memory Mapping”选项,但是初始化配置错误或者未作更改;后者通常是由于gel文件中设置分配的内存空间与存储器无法形成一一映射导致无法实际访问虚拟空间。
解决方法:更改gel文件重新合理分配内存单元。
OUT文件加载时提示“Data verification failed...”
Link的CMD文件分配的地址同GEL或设置的有效地址空间不符。中断向量定位处或其它代码、数据段定位处,没有RAM,无法加载OUT文件。
解决方法: 1)调整Link的CMD文件,使得定位段处有RAM。
2)调整存储器设置,使得RAM区有效。
引申:
补充概念:
cmd文件
用于DSP代码的定位。由于DSP的编译器的编译结果是未定位的,DSP没有操作系统来定位执行代码,每个客户设计的DSP系统的配置也不尽相同,因此需要用户自己定义代码的安装位置。
cmd文件由3部分组成:
1)输入/输出定义:.obj文件:链接器要链接的目标文件;.lib文件:链接器要链接的库文件;.map文件:链接器生成的交叉索引文件;.out文件:链接器生成的可执行代码;链接器选项
2)MEMORY命令:描述系统实际的硬件资源
3)SECTIONS命令:描述“段”如何定位
什么是CSL?
1,用于配置、控制和管理DSP片上外设
2,已为C6000和C5000系列DSP设计了各自的CSL库
3,CSL库函数大多数是用C语言编写的,并已对代码的大小和速度进行了优化
4,CSL库是可裁剪的:即只有被使用的CSL模块才会包含进应用程序中
5,CSL库是可扩展的:每个片上外设的API相互独立,增加新的API,对其他片上外设没有影响
为什么要设计CSL?
1,DSP片上外设种类及其应用日趋复杂
2,提供一组标准的方法用于访问和控制片上外设
3,免除用户编写配置和控制片上外设所必需的定义和代码
CSL的特点
1,片上外设编程的标准协议:定义一组标准的APIs:函数、数据类型、宏;
2,对硬件进行抽象,提取符号化的片上外设描述:定义一组宏,用于访问和建立寄存器及其域值
3,基本的资源管理:对多资源的片上外设进行管理;
4,已集成到DSP/BIOS中:通过图形用户接口GUI对CSL进行配置;
5,使片上外设容易使用:缩短开发时间,增加可移植.
boot loader
DSP的速度尽快,EPROM或flash的速度较慢,而DSP片内的RAM很快,片外的RAM也较快。为了使DSP充分发挥它的能力,必须将程序代码放在RAM中运行。为了方便的将代码从ROM中搬到RAM中,在不带flash的DSP中,TI在出厂时固化了一段程序,在上电后完成从ROM或外设将代码搬到用户指定的RAM中。此段程序称为“boot loader”。
初始化
DSP在RESET后,许多的寄存器的初值一般同用户的要求不一致,例如:等待寄存器,SP,中断定位寄存器等,需要通过初始化程序设置为用户要求的数值。 初始化程序的主要作用: 1)设置寄存器初值。 2)建立中断向量表。 3)外围部件初始化。
CCS初学调试以及RTDX相关推荐
- CCS中调试DM6467高清视频采集(TVP7002输入)
DM6467的VPIF接口支持BT.1120和SMPTE 296M两种高清格式,其中BT.1120是1080P(1080I)分辨率,SMPTE296M是720P分辨率.我们这里直接测试BT.1120格 ...
- 纯新手DSP编程--5.18--调试
这一节适用所有使用 Code Composer Studio IDE 的平台.然而,不是所有器件都能权限 使用所有本节所讨论的工具.用户如果想知道可供使用的工具列表,可查看在线帮助和 Code Com ...
- DSP仿真器的必要性及原理
我们在硬件学习时通常会接触到仿真器以及编程器: 在线仿真器 (In-Circuit Emulator,ICE) 是用来调试嵌入式系统软件的硬件设备.嵌入式系统开发者要面对一般软件开发者所没有的特殊问题 ...
- DSP仿真器510和560区别
我用过510,对于560只知道功能比510强大许多,具体却没有深究过.看了你的问题后,特意搜了下,找到一篇解释的很详细的,转贴到这里,让大家共享. 1. 实时调试工具和传统仿真器的区别?http:// ...
- DSP的GEL文件介绍
gel文件中主要包含PLL, DDR的初始化,具体你可以打开gel文件看看. 在CCS环境下调试时,在load程序之前可以选择运行gel文件,这样在你的应用程序中就不需要再次进行PLL及DDR的初始化 ...
- TI(德州仪器) TMS320C674x逆向分析之一
一.声明 作者并不懂嵌入式开发,整个逆向流程都是根据自身逆向经验,一步一步摸索出来,有什么错误请批评指正,或者有更好的方法请不吝赐教.个人写作水平有限,文中会尽量把过程写清楚,有问题或是写的不清楚的地 ...
- DSP:6678开发板NDK网口通信完整实现(附源码)
如果出现图片打不开,或是显示异常,请点击下方链接阅读原文!!! DSP:6678开发板NDK网口通信完整实现(附源码) - 子木的文章 - 知乎 https://zhuanlan.zhihu.com/ ...
- OMAP3530资料
OMAP3 CPU OMAP35x系列启动流程:(自己总结的) 第一步:配置CPU的启动方式(sys_boot): 第二步:bootROM会从NAND 中读取x-loader,ECC校验通过以后,就跳 ...
- TMS320C6678开发笔记---IBL编译与分析5
9.4节 IBL编译输出文件分析 9.4.1 编译分析汇总 生成的第一个文件:i2cparam_c66x_le.out即i2cparam_0x51_c6678_le_0x500.out其作用是通过C ...
最新文章
- 机器学习的基础图表!
- vue 数组赋值_如何给Vue的data中的数组赋值?
- 笔记本自开wifi设置
- C#项目评审提问问题集锦
- MFC 操作配置文件INI的方法
- .data()与.detach()的区别
- postgreSQL源码分析——索引的建立与使用——B-Tree索引(3)
- js定时器倒计时特效
- Leetcode-148-排序链表(递归+迭代)
- D. Multiplication Table 二分查找
- 北京交通大学第六届新生程序设计竞赛题解
- 仿淘手游交易平台网站源码
- STC 18B20温度传感器读写程序
- 中国省,市,区 json数据
- 【数据分析实例】 7000 条北京的租房数据分析
- 登录安全----双重MD5加密实现安全登录
- 《数据结构》C语言版(严蔚敏)——绪论(一)
- 百慕大将为金融科技和区块链公司提供新的银行服务
- CIO40知识星球—论IT人(挨踢)的自我修炼
- JavaScript說分明
热门文章
- 第十六届全国大学智能车竞赛华北赛区成绩汇总
- 利用CH340C制作MicroPython ESP8266,ESP32的下载器-改进型
- 四驱麦克纳姆轮运行原理
- 通用双谐振固态特斯拉驱动器 UD2.7
- 河北传媒学院计算机专业分数线,河北传媒学院2019年各省各专业录取分数
- html 表格点击修改全部替换成文本_excel表格计算一个数据在总值中的占比
- 计算机组成计算题中的术语,计算机组成原理习题——日常记录
- linux解码base64工具,如何解码Linux中的base64编码行?(How do I decode base64 encoded lines in linux?)...
- 如何分析案件的性质_刑事案件的管辖地怎么确定?刑事案件地域管辖是怎样的?...
- php 邮编正则,php抓取百度邮编搜索结果,应改如何写正则表达式?