目前在验证一个6455的源码程序,现有的bin文件通过SD加载,能在设备上正常工作。但源码编译出来的bin文件会在调用一个函数以后彻底死机。由于是新手,有几个问题想请教一下。
1,为何自己编译的.out文件,在线调试只能进入main()中的初始化,后面不能进入task()处理函数中?
2,通过SD卡加载以后卡死的情况,能用调试器获取DSP的运行信息码?
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.
目前在验证一个6455的源码程序,现有的bin文件通过SD加载,能在设备上正常工作。但源码编译出来的bin文件会在调用一个函数以后彻底死机。由于是新手,有几个问题想请教一下。
1,为何自己编译的.out文件,在线调试只能进入main()中的初始化,后面不能进入task()处理函数中?
2,通过SD卡加载以后卡死的情况,能用调试器获取DSP的运行信息码?
1. 断点直接打在task然后run,一步步走是比较难看到程序流程进入到task的,任务调度那里大量的绕以及可能出现大量的找不到源码的汇编会让你没有兴趣继续跟下去。如果这样都不行进不去task,要考虑你的任务模型以及编码实现了;
2. 你可以随时attach到dsp,attach的方法要点如下:
× 去掉target config文件的gel初始化;
× launch target config文件,而不是经常用的debug as或run as;
× 暂停dsp,注意是暂停而不是复位;
× load symbol,注意不是load program,load的目标文件即为你放sd卡的同文件,如果你使用-g编译的debug程序,那么应该可以看到符号了,之后的调试跟传统的debug一样;
另:如果你想调试某个固定点的场景,run的时候你是很难控制第一次程序暂停的(相信你会trace的时候应该也不会问这个问题了),可以加个条件死循环,attach后改变条件判断值为真即可继续。