This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

怎样在dsplink的dsp端添加多个c文件



请问怎样在dsplink的例子dsp端添加多个c文件?需要修改哪些文件来包含c文件?谢谢

  • bruce lee ,你好

             以loop例程为例,在目录/dvsdk/dsplink_1_65_01_05_eng/dsplink/dsp/src/samples/loop中有个SOURCES文件,打开后,在例程本身的源文件后加上自己的源文件的相对路径就可以了。下面的是我在loop例程中添加了自己的源文件,其中source文件夹和SOURCES文件在同一目录下。

    至于头文件可以放在和source同目录的include文件夹中,源文件中包含头文件时,指定是在include文件夹中。

     

  • wei lee1,你好

             非常感谢你详细的回答,我想在loop中跑OMAPL138的led,在添加了相关的c文件和h文件后,在tskLoop.c中加入了GPIO方向和电平设置,编译没有出错,但运行时卡住了,请问是什么原因?evmomapl138_bsl.lib需要添加吗?在哪添加?

  • wei lee1,你好

             非常感谢你详细的回答,我想在loop中跑OMAPL138的led,在添加了相关的c文件和h文件后,在tskLoop.c中加入了GPIO方向和电平设置,编译没有出错,但运行时卡住了,请问是什么原因?evmomapl138_bsl.lib需要添加吗?在哪添加?

  • #1:你的意思是不是需要将evmomapl38_bsl.lib是不是要和DSP端的.out文件一同放到ARM端的文件系统中?

            这个应该不用,这个库是静态的,只会在链接的时候使用,编译成功之后,只使用.out文件应该就可以了。

    #2:或者你的意思是不想用源文件+头文件的方式,想DSP端直接链接evmomapl138_bsl.lib?

            在Linux中DSPLINK环境下  DSP端怎么使用库,这个我也没研究,非常抱歉。

     

  • 你好,wei lee1 

         非常感谢你的回复。

         我的做法步骤是1.在dsp端SOURCES文件中添加源文件 2.在dsp端tskLoop.c文件中包含头文件,并添加代码

                           EVMOMAPL138_init(); 

                           EVMOMAPL138_initRAM(); 

                            EVMOMAPL138_pinmuxConfig(3, 0x00ff0000, 0x00880000);

                           GPIO_setDir(GPIO_BANK8, 3, GPIO_OUTPUT);

                           GPIO_setDir(GPIO_BANK8, 4, GPIO_OUTPUT);

                           GPIO_setOutput(GPIO_BANK8, 3, 1);

                           GPIO_setOutput(GPIO_BANK8, 4, 1);

    这段代码在CCS端可以跑通,实现输出高电平,但在dsplink的loop例程下,当运行时,卡在PROC_load,请问loop.out文件为何无法下载进去呢?我的做法欠缺在什么地方?

        

  • EVMOMAPL138_init();EVMOMAPL138_initRAM(); 是不是重复做了一些初始化操作,比如时钟配置,EMIFA,DDR2配置等,ARM端已经做过初始化了,DSP端再进行初始化,可能会破坏ARM的运行环境,比如ARM正在运行,在DSP端你去初始化了DDR2。有些初始化ARM做了,DSP就没必要再做了。

     

  • 我用的是SEED-DEC138板子,这块板子上有cpld,其中地址0x64000040是led灯控制读写信号,第0位和第1位各控制一个led灯,在dsplink例程中dsp端添加如下代码:

                                   #define LED   *(uint16_t *)0x64000040

                                    while(1)                                

                                    { LED = LED + 1;}

    led灯并没有亮,在ccs下是可以亮的,请问原因在哪?我该如何修改呢?谢谢

  • 请贴出来代码实际添加的位置,是添加到了主函数中还是某个任务中?

  •         代码是添加在tskLoop.c中的,在开头添加头文件及宏定义如下:

                                                 

                                                    #include "types.h"
                                                    #include "evmomapl138.h"

                                                    #define    LED       *(uint16_t *)0x64000040

            在tskLoop.c中的TSKLOOP_execute()函数下添加如下代码:

                                         /*Do processing on this buffer*/

                           if (status == SYS_OK) {

                                                 LED = LED + 1;

                                          }

             在arm端作了延时处理,执行./loopgpp loop.out 1024 100,程序可以执行,但led灯并没有反应,led灯一端接3.3v电压,一端接cpld接口I/O7_5,请问是什么原因呢?