我在一个例程上面修改的程序,发现编译链接都没有问题,但是就是运行的时候不能进入main()函数。我查了资料,说是DSP的启动方式应该是c_int00、BIOS_init然后再是main()函数,但是前两个应该怎么进行调试?或者不能进入main()函数可能会是什么情况?还请各位大神指教,小弟不甚感激!谢谢
noaming:
在使用BIOS的时候,其基本流程是
Initialize the DSP.
Call BIOS_init
Call main
Call BIOS_start
idle loop
首先Debug的时候,地址指针指向那里的地址?进不去main函数是什么意思?BIOS是一个可靠的内核,如果配置好,前面的步骤是不用客户来做的,自动处理的,进入main函数是必须的步骤。
xu zhao:
回复 noaming:
谢谢你的回答!
Debug的时候?你指的是在load .out文件的时候么,那时候的地址是0x897028e0,我设置的内存开始地址为0x82000000,长度为0xa000000;因为我在main()函数里面设置了printf()函数,但是运行的时候没有输出,就是在编译下载都没问题,但是我点击运行的时候界面没有什么反应。。。。。。是BIOS没有配置好么?还请高手指教。。。
noaming:
回复 xu zhao:
首先请不要再BIOS中使用printf()函数,请使用BIOS自带的LOG_printf函数看看运行了没有。
xu zhao:
回复 noaming:
我把LOG_printf放在了main()函数的第一行,在message log下,第一次运行的时候输出的是一连串的error,后来重新编译之后,就再也没有输出了。。。这会是什么情况?还请指教!
noaming:
回复 xu zhao:
应该是你的工程有问题了。
请看下面关于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
xu zhao:
回复 noaming:
出现了诸如 1908408318 *** ERROR: 0xe37fffff 0xdb7dfdff *** 这样的输出。。。。那这个LOG_printf()到底是有没有运行呢?我准备是输出这样的。。LOG_printf(&trace,"1111111111");。。。谢谢你的回答!
noaming:
回复 xu zhao:
使用LOG_printf()函数,需要在bios配置文件中先建立LOG模块,具体请参考\bios_5_41_13_42\packages\ti\bios\examples中的例程。
xu zhao:
回复 noaming:
谢谢!我想应该是我的工程有问题。我又重新改了下,现在的问题是:在DSP/BIOS下使用XDC工具,发现在bios的lib下与xdc的lib下都存在boot.a64p文件,而且是同时调用了,然后就是有_c_int00、__stack重复定义的错误。。。。。。。我想把xdc下的_c_int00、__stack设定去掉,但是不知怎么操作,请指教?
xu zhao:
回复 noaming:
我其实是想把TI的NDK的例程与视频采集的例程合并在一起,但是就是NDK的例程没有用到XDC工具,而视频采集的例程使用了XDC工具,然后我在把他们合并的时候就出现了XDC与bios中相冲突的内容,主要是重复定义之类的错误,但是我又不知该从哪里下手,还请指教,谢谢!
noaming:
回复 xu zhao:
错误是由于在不同的库里有重复定义,删掉不需要的库。另外,你可以把错误代码贴出来,分析分析。