剑网3黑白路前置:VPM642开发板例程版本从CCS2.2转CCS3.3(转)

来源:百度文库 编辑:偶看新闻 时间:2024/04/26 14:20:53

问题一:cmd问题

如果程序中用的数组超大(例如视频压缩传输程序), 编译出现“>>   error: relocation value truncated at 0xdb0 in section .text, file"提示。解决办法是将C源程序中定义的大数组分配指定为特定的内存空间中,,声明存储到外扩的SDRAM上,如#pragma DATA_SECTION(G, ".G");如果还出现问题,需要修改Build option-advance选项,把memory mode 改成“far”,把RTS calls改成“are far”。

分析:这个链接错误通常是由于定义的数组过大,在网上查有人说不能超过64k,具体数值没试过,数组通常放在.cinit段,可能这个段大小有限制。网上查到的方法是将Memory Models改成data far,利用重新分配空间将大数组单独定义一个段名,在cmd文件中重新定位,避免了.cinit的限制。

 

问题二:CSL库未添加

CCS3.3安装了5.20版本的DSP/BIOS,配置文件格式为.tcf,而CCS2.2的BIOS配置文件格式为.cdb。使用CCS3.3打开程序,需要将.cdb转换为.tcf。按照提示操作,转换成功。但是编译时候提示,错误信息显示连接器无法找到程序中调用的所有CSL函数。比较了两个版本代码的编译、连接选项,完全一致,比较BIOS配置,也一模一样,。会不会是没执行什么初始化操作或者没包含什么头文件和库?找出CSL的文档,从overview看起,发现文档说要包含一个名为cslDM642.lib的库。在连接选项里加上这个库文件,然后编译通过。

分析:

CCS2.2 版本BIOS的System->Global Settings的属性页面General标签中有一个名为Chip Support Library (CSL)的下拉菜单,CCS2.2使用的CSL库就是在这里指定的,而CCS3.1的BIOS没有这个选项,从.cdb转换到.tcf时就会丢失配置信息,造成编译错误。

 

CCS3.3转CCS2.2过程(转载自:http://www.tichinese.com/College/Soft/DSP/200909/546.html)

 

在ccs3.3下每次修改代码后,都回导致内存中文件被锁定,必须重启机器才能解决。估计3.3有升级补丁。暂时没有下到。改为ccs2.2后,仿真器链接不上,估计原因是驱动必须和ccs2.2装在一个文件夹下。

    在ccs2.2中执行合众达给出的在3.3下运行的程序,出现链接错误:“error:illegal relocation type 050002 found in section ,debug_info, file”,上网搜了一通,遇到一篇日志,将工程中的两个库文件换成安装文件下的就行了,果然ok!

为了再次熟悉一下DSP和CCS开发环境,收获了不少东西:

(1)再次熟悉了CCS集成开发环境。安装CCS软件和仿真器驱动时,刚开始,我把仿真器的驱动装在了C盘,而CCS 2.2是很早之前就装在电脑里的,是装在E盘上。结果,由于CCS和仿真器驱动的安装路径不同,导致仿真器连不上,跳出窗口提示错误。最终通过重新安装CCS,将它与仿真器驱动安装在同一路径下解决了该问题。

(2)程序编译时,提示错误:
>> error: illegal relocation type 050002 found in section .debug_info, file
E:\DM642\SEED-DTK_VPM642v1.2    \SEED101_VideoReverse\lib\rts6400.lib
 后来通过在网上查询相关资料,推测可能是CCS版本和rts6400.lib文件不兼容。通过将工程中的rts6400.lib文件替换为CCS安装目录下的rts6400.lib,问题得以解决。

(3)合众达给的例子都是通过实验箱上的显示屏来观察图像,因为CCS本身也提供了观看图像的功能,所以,就通过View-Graph-Image,设置图像属性,观察到了实验结果。刚开始在这里也犯了一个小错误:程序中,图像的坐标原点是在左上,而我在设置Image Origin的时候,却选择了Bottom Left,误以为原点在左下,导致看到的图像是反过来的。通过将Image Origin修改为Top Left 解决了该问题。

(4)对程序进行了简单的修改。在图像取反例子的基础上,对取反函数进行了修改,选定了一个阈值,通过加入一个if-else语句,实现图像的二值化。