现在的位置: 首页 > 综合 > 正文

dm642 程序编写问题

2014年10月05日 ⁄ 综合 ⁄ 共 2050字 ⁄ 字号 评论关闭

1 无法打开某个头文件

     情况:在一个工程文件夹中,新建了一个include文件夹,将头文件都放置在其里面,但是在ccs中提示无法找到该头文件。

    解决:在project菜单里的build option中,compiler页内,在category里选择proprocessor,然后在Include search path(-i)后的框里,填写:$(Proj_dir)\include

2     seed vpm642源代码里面的预编译

     情况: #ifdef _LOOP2_    _LOOP2_在各个.h .c文件中都找不到。

    解决: 还是再1里面的那个页面,在Pre-Define Symbol(-d)后面的框里,填上  _LOOP2_就好了,然后整个工程就默认是已经做过#define _LOOP2_

3  如何引用自己的库,或是其他人的库函数。

    情况:编写出了dsp/bios针对自己板子的驱动,但是该怎么做在自己的程序中链接呢

   解决:  在cmd文件中用   -l  这个命令写,如-l lib\Seedvpm642_vport.l64 

                   格式好像是     -l 地址 \ 库文件名.l64

 4 函数符号 多次被定义

   情况:在按照例程自己编程序,在cmd文件中添加rts6400.lib和csldm642.lib后编译

>>   error: symbol _c_int00 is defined multiple times: boot.obj
            (.\\lib\\rts6400.lib) and boot.o64 (c:/CCS/c6000/bios/lib/biosi.a64)
>>   error: symbol __stack is defined multiple times: boot.obj
            (.\\lib\\rts6400.lib) and boot.o64 (c:/CCS/c6000/bios/lib/biosi.a64)

            Use -heap option to change the default size.
>>   error: errors in input - ./Debug/Seedmotiontest.out not built

      解决: 将rts6400.lib去掉,该库在bios里面已经自动添加了

   5  cmd文件报错

     情况:把rts6400注释掉了,编译中未出现重定义错误,但连接是却有新的报错:
        >> ~~~~~.cmd:   error: can\'t open file \'/.obj\' for input

    解决:cmd文件不该用‘ // ’ 来注释,应该用‘ /* */  ’,导致这个的原因就是在上一步取掉rts6400.lib时,用了//
  

  6. gel配置不当引发的问题

    情况:  在通过ccs往dm642烧写程序时,报错:data verification failed at address 0x8~~~~~~~

    解决:将打开工程时,默认的gel文件删除,加载seeddm642.gel。

               由于默认的gel文件没有配置emifa,所以若有程序要往sdram里面烧写时,sdram无法正确使用,所以会有验证错误。

7  在bios 图形配置里面,加seeddm642.init函数

   情况:自己仿照seedvpm642_videoloop工程,编写一个程序,在i2c处dsp死掉。经过查看i2c句柄值,与map文件中的句柄位置不一样。

   解决:i2c的句柄在seeddm642.init函数中生成的,所以应该在bios配置工具中system->global settings里面的cal user init function打钩,然后再框里写入                  _SEEDVPM642_init

8 加载程序后,运行,一选择暂停dsp,电脑上的ccs就死掉了

  情况:编写seedvpm642_videoloop程序,删除了VP0DISPLAY后,又新建了一个。结果就运行不对,经常死。

   解决:再新建的时候,忘记选IO模型为IOM_Fxns,结果程序就无可救的跑飞了

 

9 指针的指针如何取结构体中的某个量

  情况:capChan是GIO_Handle的指针,用capChan->timeout 出错,用*capChan-> timeout 也出错

   解决:加个小括号  (*capChan)->timeout,按道理取内容运算符*的优先级更高啊。。。搞不懂

10 使用dsp/bios 动态创建任务,失败。

   情况:在程序中动态创建任务,调用 TSK_creat函数,结果返回值是NULL

  解决:在设置dsp/bios的tcf文件时,忽略了很多初试的东西。

                例如,在TSK, task manager 的属性里,有设置对象存储区(object memory)、动态任务堆栈段区域(stack segment for dynamic tasks)他们都应该设置。这里可以设置为SDRAM.前面创建任务失败就是因为stack segment for dynamic tasks 的默认值是空MEM_NULL

抱歉!评论已关闭.