合众达电子SEED_VPM642开发板调试及应用
2019-07-13 12:21发布
生成海报
1.SEED_VPM642开发板flash烧写问题以前做过DM642测试和算法在线调试,最近刚用上合众达开发板,但是现在要完成脱机系统采集显示和存储。在烧写光盘提供例程时没有问题(LED交替闪烁),但是在测试4路视频输出时能在线显示而不能烧写。看到网上有贴说在初始化时没有加延时0.5s,但是按照操作才发现加进去没效果。后来仔细分析,发现主要还是boot烧写的问题.解决有二步:1.对于非BIOS的视频采集显示程序需要在main()函数的初始化时加一段0.5s的延时:for(i=0;i<1000;i++)//延时0.5s,为下一步初始化配置EMIF、CPLD和IIC的时序作准备 { EVMDM642_waitusec(500); }CSL_init();CHIP_config(&CAUDM642percfg);//省略2.在工程中修改seeddm642vedio.cmd文件,添加boot和内存分配-l libcslDM642.lib-l lib
ts6400.libMEMORY{ boot: o = 00000000h l = 000400h 添加项 L2 : o = 00000400h l = 00040000h CE01: o = 80000000h l = 00100000h CE02: o = 80100000h l = 00f000000h}SECTIONS{ .boot_load > boot//添加项 .vecs > L2 .cinit > L2 .text > L2 .stack > L2 .bss > L2 .const > L2 .data > L2 .far > L2 .switch > L2 .sysmem > L2 .tables > L2 .cio > L2 .capChaAYSpace> CE01 .capChaACbSpace> CE01 .capChaACrSpace> CE01 .disChaAYSpace> CE02 .disChaACbSpace> CE02 .disChaACrSpace> CE02 .external > CE02} 特别需要注意的是,在boot引导程序中需要为Flash自举分配0x400大小的SRAM空间,不然即使烧写了程序在启动时也无法将0x90000000开始的1kB引导程序读入0-0x400的SRAM单元,也无法实现下一步将用户程序从FLASH处运行。DSP的boot过程相对ARM比较简单,不需要作很大的修改,只需要指定分配程序数据内存单元并完成boot设置,在main程序中完成初始化即可实现芯片的启动。2。VPM642开发板例程版本从CCS2.2转CCS3.3问题一: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, fileE:DM642SEED-DTK_VPM642v1.2 SEED101_VideoReverselib
ts6400.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语句,实现图像的二值化。
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮