ccs常用问题整理.docVIP

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ccs常用问题整理

CCS常见使用问题及解决方法 问题1:CCS编译环境下的使用步骤及常见问题 解决方案: 一、见到下面的警告对话框请不要担心,值得一提的是 DSP 开发成本相对比较高,它需要专用的仿真器和目标板,一般来说成本都是几千元的。对于一般的想熟悉下编辑环境不想花费代价,就可以在弹出下面对话框中选择画线按钮。 图.1 警告 二、然后我们就可以进入到编辑窗口中。 图.2  编辑窗口 三、单击“ open ”选项,会出现两个下拉菜单,其含义图中已经有所说明,这里我们选择第一个软件仿真。 图.3 选择第一个软件仿真 四、单击我们就可以进入到软件编辑窗口中。 图.4  编辑窗口 五、为了方便说明,我们打开一个已经新建好的工程,工程后缀为“ *.pjt ”。 图.5 打开工程 六、打开工程后,打开工程文件中的 sourse 文件夹会发现里面有很多的 C 语言文件,但是我们只用到最后一个,即下图中画圈部分。其他的文件不需要去深入的了解,如果我们想新建工程的话,那么我们认为把以前的文件 COPY 还比较快点,另外稳定性的高。 图.6  工程文件选择  七、文件的编译。一般来说我们主要用图中画圈部分的两中编译方法。 图.7  编译 图.8  编译提示 八、如果上面的编译没有问题我们就可以进行下面的操作了。 图.9 编辑窗口 图.10 打开“ *.out ”文件之后,我们可以进行下面的调试的操作了。首先,在菜单“ debug ” 的下拉菜单中依次选取: Reset CPU 、 Restart 和 Go main 三个选项,注意顺序一定不能弄反,否则可能编译不了。 上一步骤完成之后,我们就可以进行单步或者是全速执行等调试操作了。这和 keil 软件的功能差不多,不需要在这里多加重复。下面以“”程序为例讲一下CCS。 首先打开一个Project文件 其中*.c文件和*.h文件与普通的C语言编程中是一致的(TI编译器支持ANSI C标准)。需要指出的是三个文件:.CMD、RTS6.LIB、VECTORS.ASM。.CMD文件给出了程序空间和数据空间的设置、及编译后各程序段在程序或数据空间的具体位置。RTS6.LIB文件为DSP运行时库,VECTORS.ASM为中断向量表,都是区别于纯软件编程的独到之处,熟悉以后会有更深的体会。下图为.CMD文件的代码,MEMORY分为程序空间IPRAM和数据空间IDRAM,并分别给出了起始地址origin和长度len,各段在 MEMORY空间的分配也作了定义。对于实际的目标板硬件系统,由实际的存储器空间及DSP芯片上的存储空间决定。对于软件仿真,可以不考虑有没有 MEMORY资源。 自己在编写工程项目文件时,经常会遇到下面的问题,没有C语言程序的入口函数,细心比较一下会发现工程文件中缺少了一个运行时支持RTS6.LIB,不同的DSP芯片需要不同的运行时库来支持。 下面向项目工程中加上运行时库RTS6.LIB来纠正刚才的编译错误,同样的方法可以用来向工程中添加*.c、*.cmd、*.asm文件。*.h文件在编译时会自己找到(需要在环境变量中设置好,一般不需要改动)。运行时库在TI的缺省路径下,注意将文件类型改为*.lib 设置完成后再一次BUILD时,会出现正确结果。 问题3:LOG_printf和printf的正确使用问题(区别与联系) 解决方案: 共性:都是用于输出一些内容,一般用于显示一些调试信息,而且可以格式化输出,比如用’%d’输出整数 区别: 1输出目标不同,printf输出到output窗口,而LOG_printf输出到BIOS的log窗口 2汇编指令条数不同,printf需要上万条汇编指令,而LOG_printf只要30多条汇编指令,因此LOG_printf的运行速度比printf要快的多,一般在实时系统中,都使用LOG_printf来输出,这样对系统的实时性影响才不大。 3.参数个数不同,printf后面的参数个数可以有很多个(具体多少个没测试过),而LOG_printf后面最多只能有4个参数,第一个是写入的地址,第二个是字符串,后面最多加上两个格式化输出的数据,这两个数据还必须是整型,或者指针,或者常量字符串 4.可以输出的格式不同,printf有很多的格式,而LOG_printf只有有限的几种.(%d整型,%x无符号16进制数,%o无符号8进制数,%s常量字符串,%p指针) 5.LOG_printf输出的长度受设定的buffer大小限制,如果超出buffer大小,根据设置的不同,可以是停止输出,或者覆盖原来的内容 6.LOG_printf的优先级比较低,可能是在KNL层,只有系统比较空闲的时候,才会输出,而printf是必然会输出.(比

文档评论(0)

eanp35308 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档