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.

DM6437 DSP/BIOS

Other Parts Discussed in Thread: CCSTUDIO

我在一个例程上面修改的程序,发现编译链接都没有问题,但是就是运行的时候不能进入main()函数。我查了资料,说是DSP的启动方式应该是c_int00、BIOS_init然后再是main()函数,但是前两个应该怎么进行调试?或者不能进入main()函数可能会是什么情况?还请各位大神指教,小弟不甚感激!谢谢

  • 在使用BIOS的时候,其基本流程是

    Initialize the DSP.

    Call BIOS_init 

    Call main

    Call BIOS_start

    idle loop

    首先Debug的时候,地址指针指向那里的地址?进不去main函数是什么意思?BIOS是一个可靠的内核,如果配置好,前面的步骤是不用客户来做的,自动处理的,进入main函数是必须的步骤。

  • 谢谢你的回答!

    Debug的时候?你指的是在load  .out文件的时候么,那时候的地址是0x897028e0,我设置的内存开始地址为0x82000000,长度为0xa000000;因为我在main()函数里面设置了printf()函数,但是运行的时候没有输出,就是在编译下载都没问题,但是我点击运行的时候界面没有什么反应。。。。。。是BIOS没有配置好么?还请高手指教。。。

  • 首先请不要再BIOS中使用printf()函数,请使用BIOS自带的LOG_printf函数看看运行了没有。

  • 我把LOG_printf放在了main()函数的第一行,在message log下,第一次运行的时候输出的是一连串的error,后来重新编译之后,就再也没有输出了。。。这会是什么情况?还请指教!

  • 应该是你的工程有问题了。

    请看下面关于DM6437的DSP/BIOS DVSDK v1.01 for DM6437:里面提供了DSP/BIOS的例程。

    http://software-dl.ti.com/dsps/dsps_registered_sw/sdo_sb/targetcontent/dvsdk/bios_dvsdk/1_01_00_15/index_external.html

  • 出现了诸如        1908408318   *** ERROR: 0xe37fffff 0xdb7dfdff *** 这样的输出。。。。那这个LOG_printf()到底是有没有运行呢?我准备是输出这样的。。LOG_printf(&trace,"1111111111");。。。谢谢你的回答!

  • 使用LOG_printf()函数,需要在bios配置文件中先建立LOG模块,具体请参考\bios_5_41_13_42\packages\ti\bios\examples中的例程。

  • 谢谢!我想应该是我的工程有问题。我又重新改了下,现在的问题是:在DSP/BIOS下使用XDC工具,发现在bios的lib下与xdc的lib下都存在boot.a64p文件,而且是同时调用了,然后就是有_c_int00、__stack重复定义的错误。。。。。。。我想把xdc下的_c_int00、__stack设定去掉,但是不知怎么操作,请指教?

  • 我其实是想把TI的NDK的例程与视频采集的例程合并在一起,但是就是NDK的例程没有用到XDC工具,而视频采集的例程使用了XDC工具,然后我在把他们合并的时候就出现了XDC与bios中相冲突的内容,主要是重复定义之类的错误,但是我又不知该从哪里下手,还请指教,谢谢!

  • 错误是由于在不同的库里有重复定义,删掉不需要的库。另外,你可以把错误代码贴出来,分析分析。

  • 我没有另外加上函数库,会不会是加上了XDC工具之后自动调用的?错误比较多,好像都是重复定义,地址有冲突的问题。。。还请指教。。

    >>   error: symbol _c_int00 is defined multiple times: boot.o64P
                (C:\dvsdk_1_11_00_00\xdc_2_95_02\packages\ti\targets\rts6000\lib\boot.a64P) and boot.o64P (C:/CCStudio_v3.3/bios_5_31_08/packages/ti/bios/lib/bios.a64P)

    >>   error: symbol __stack is defined multiple times: boot.o64P
                (C:\dvsdk_1_11_00_00\xdc_2_95_02\packages\ti\targets\rts6000\lib\boot.a64P) and boot.o64P (C:/CCStudio_v3.3/bios_5_31_08/packages/ti/bios/lib/bios.a64P)

    >>   error: memory types IRAM and CACHE_L2 on page 0 overlap
    >>   error: memory types L1DSRAM and L1DSRAM on page 0 overlap
    >>   error: memory types SRAM and SRAM on page 0 overlap
    >>   error: memory types DDR2 and DDR2 on page 0 overlap
    >> warning: creating output section $build.attributes without SECTIONS
                specification
    >>   error: can't allocate .L1DSRAM$heap, size 00010000 (page 0) in L1DSRAM
                (avail: 0000c000)
    >>   error: can't allocate .text:2, size 00005aa0 (page 0) in IRAM (avail:
                00000000)
    >>   error: errors in input -
                C:/dvsdk_1_11_00_00/NDKDemo-original/debug/NDKDemo.out not built

  • 现在的问题主要就是上面两个有关于 _c_int00与__stack重复定义的问题。。。 有关于这两个重复定义的问题暂时还没有解决。。。请指教!

    >>   error: symbol _c_int00 is defined multiple times: boot.o64P
                (C:\dvsdk_1_11_00_00\xdc_2_95_02\packages\ti\targets\rts6000\lib\boot.a64P) and boot.o64P (C:/CCStudio_v3.3/bios_5_31_08/packages/ti/bios/lib/bios.a64P)

    >>   error: symbol __stack is defined multiple times: boot.o64P
                (C:\dvsdk_1_11_00_00\xdc_2_95_02\packages\ti\targets\rts6000\lib\boot.a64P) and boot.o64P (C:/CCStudio_v3.3/bios_5_31_08/packages/ti/bios/lib/bios.a64P)

    >> warning: creating output section $build.attributes without SECTIONS
                specification
    >>   error: errors in input -
                C:/dvsdk_1_11_00_00/NDKDemo-original/debug/NDKDemo.out not built

    >> Compilation failure

  • 我尝试把boot.a64P这个文件去掉,然后就能正常编译链接通过了,但是就是不能运行,就是运行的时候不能进入main()函数,我在main()函数的第一行设置了LOG_printf()函数,没有打印出语句。。。。。我想这个\boot.a64P文件应该是需要的,但是里面定义的c_int00与stack不知道如何去除,打开\boot.a64P文件后发现很复杂,还请多多指教,谢谢!

  • 我建议你合并工程的时候,新建一个工程,然后将两个工程的源代码文件提取出来放进去;然后把两个配置文件,合并起来。之后再编译,调试。这样调试工程一般问题会很少。