嵌入式开发者社区

标题: 教程里helloworld例程的IPC_start()出不来的问题。 [打印本页]

作者: moontiger564    时间: 2016-8-8 16:34
标题: 教程里helloworld例程的IPC_start()出不来的问题。
最近使用了教程里的helloworld例程实践一下,我再CCS里面新建了一个rtsc的工程,然后导入了helloworld例程的里的dsp文件夹和shared文件夹。删除里面的不需要的makefile等文件,其它没有任何修改。然后编译能正常通过了。我的平台是OMAPL138的,然后将hellworld例程里的arm的可执行程序app_host拷贝到板子里面。这个app_host是在串口终端手动执行的。然后我连上仿真器。调试CCS下的helloworld例程,在IPC_start()循环的下面设置了断点。将dsp程序跑起来后。然后串口终端输入命令./app_host DSP
0 G' u1 }+ m" E% n6 D% a' D# J+ g这样arm程序也跑起来了,但是发现CCS上面一直跑不到断点处。然后在IPC_start()处设断点,程序就停下来了,原来dsp程序一直在IPC_start()这个循环里面。请问为什么会这样呢?两个核都跑起来了为何dsp不能往下跑呢。helloworld的cfg和bld文件以及所有代码都没有改动,怎么不能跑呢?
6 M; t& U# L% D8 t- a谁能解答一下?有什么可能?) O3 L' I: ~7 B' W: c- A( ?% a9 a% ]

作者: tenny    时间: 2016-8-8 17:29
你是用ccs 直接加载的程序吗?! G$ D# k* u; F' o3 P5 F3 ]  X

# r0 _% T9 F$ h7 f. [要在 arm 板子上使用 slaveloader 加载你的 DSP 程序
, a) {1 s; P# ?3 D: l然后在 ccs 下以 loadsymbol 的形式加载程序的 调试符号
% [/ q/ q) ^  [6 V, r' h8 r3 h* ~可以参看创龙提供的 “OMAPL138 Syslink 双核 IDE 工程的建立与调试” 视频教程
作者: moontiger564    时间: 2016-8-8 17:47
tenny 发表于 2016-8-8 17:29
' ?, n. r& _2 @7 A; M你是用ccs 直接加载的程序吗?- S2 W) g! K. j5 d

5 a( y/ X; [5 G要在 arm 板子上使用 slaveloader 加载你的 DSP 程序
, T0 K% `9 A  ]
set -x
) T  f$ R0 i; P+ b2 Q- M./slaveloader startup DSP server_dsp.xe674# m) M6 |2 r* _" p- Y
#./app_host DSP" m: X; o0 B" ^3 u; R) _
#./slaveloader shutdown DSP2 g* {, A2 {, ^* j% s7 E& S
我的run.sh脚本里把最后两行注释了。然后起来以后,CCS里面用loadsymbol和loadprogram都试过了。每次都在do{ipc_start ... ...}while 这个循环下面加断点后,然后手动输入./app_host DSP命令启动arm程序。但是都不能跑到断点处,都是在ipc_start()这边一直跑不出来。还有什么原因呢。
作者: tenny    时间: 2016-8-8 17:54
直接用没注释的 run.sh 可以跑?
作者: moontiger564    时间: 2016-8-8 18:01
tenny 发表于 2016-8-8 17:54
" k3 v' X7 K9 F' k1 o/ j7 L3 r直接用没注释的 run.sh 可以跑?

3 z" P  h6 D$ o6 q# S9 i* ]直接跑例程里面的server_dsp.xe674和app_host时正常的。但是把这个helloworld的例程放到CCS里面自己编译出来以后的server_dsp.xe674就跑不了了。里面代码我什么都没有改,只是按照教程里的把makefile和删掉,把dsp里面的bin文件夹和config文件夹也删掉,然后clean一下,重新编译。然后app_host还是原来例程里的,没用换。这样就不行了,所以CCS调试加断点看了,才找到ipc_start()这里的问题。8 g* S2 ?' }* c. V8 L8 F( ]
请帮忙分析一下,我哪里会弄错了,包括cfg和bld文件也没动过。存粹是重新编译一下。
作者: tenny    时间: 2016-8-9 13:43
config.bld 文件问题吧,建议你参看 “OMAPL138 Syslink 双核 IDE 工程的建立与调试” 视频教程,里面有怎么在 ccs 下编译 ti 的 MessageQ 例程
作者: moontiger564    时间: 2016-8-9 13:56
tenny 发表于 2016-8-9 13:43
* h* g6 r* K9 G5 m( `) v+ r7 Econfig.bld 文件问题吧,建议你参看 “OMAPL138 Syslink 双核 IDE 工程的建立与调试” 视频教程,里面有怎 ...

2 Z6 N# x# O( |- h+ P( Q+ z  g你好,首先感谢你的回复。+ N! s9 @3 ], l+ R! M
“OMAPL138 Syslink 双核 IDE 工程的建立与调试”这个视频我后来看过了。我也自己从新在CCS下面新建一个工程,现在是这样的:我自己新建一个工程,然后导入helloworld例程的源码。我没有像视频里面那样重新建一个platform,我还有用的默认的platform,并且还是用的例程里面的config.bld.。然后我现在正常编译通过而且我将编译通过的out文件放进去直接用run.sh运行时正常的。
- v/ B1 A! B' y8 _/ d5 T3 j但是,目前的问题是,我想用CCS调试,用CCS加载的,用loadsymbols和loadprogram两种方式加载都试了,加载完成后然后在串口终端输入./app_host DSP以后,串口报错:
/ K; D, a  w# L- ?( c2 Aroot@omapl138-TY:~/5601#./app_host DSP! _- C5 j5 K# ]6 M  W- Q7 f
*** Loader_getSymbolAddress: Failed to get the symbol address!
) n8 D( R2 t! J3 e; g6 j6 I        Error [0x8485f003] at Line no: 414 in file /home/hd/ti/syslink_2_21_01_05/packages/ti/syslink/utils/hlos/knl/Linux/../../../../../../ti/syslink/procMgr/common/Loader.c
* p) M& h- z9 K  r1 x/ k- z*** ProcMgr_getSymbolAddress: Failed to get symbol address!  m- L4 x  T# y% f
        Error [0x8485f003] at Line no: 2190 in file /home/hd/ti/syslink_2_21_01_05/packages/ti/syslink/utils/hlos/knl/Linux/../../../../../../ti/syslink/procMgr/common/ProcMgr.c( t8 Z- {/ f6 t! z, x, K) m0 k" r2 O
*** Platform_loadCallback: ProcMgr_getSymbolAddress failed( c7 M$ O3 m  L& \
        Error [0xffffffff] at Line no: 1904 in file /home/hd/ti/syslink_2_21_01_05/packages/ti/syslink/utils/hlos/knl/Linux/../../../../../../ti/syslink/family/hlos/knl/omapl1xx/Platform.c6 a8 [9 T. v, g0 o6 l" `0 ?8 ^
*** Ipc_control: Platform_loadCallback failed!/ K0 x+ J2 q0 \0 Y) ]6 |
        Error [0xffffffff] at Line no: 828 in file /home/hd/ti/syslink_2_21_01_05/packages/ti/syslink/utils/hlos/knl/Linux/../../../../../../ti/syslink/ipc/hlos/knl/Ipc.c9 O# t0 K9 \* ?

0 G' z9 v: W. A1 y: K2 L8 z; {请看一下,这个现象是啥情况。感觉我在板子上直接用run.sh运行程序,不管是例程里的out文件还是我自己编译的out文件,都能正常跑,但是一旦out文件用CCS加载以后,就不能正常跑了,我觉得以后要是想用CCS调试就不好用了。所以请帮忙看下现在的情况,为啥一用CCS加载就不能跑呢?) S7 k, B0 ~  N; o, s- z8 ^

作者: moontiger564    时间: 2016-8-9 14:02
补充上面的:因为我看到视频教程里是从新建一个platform的。而我自己没有从新建一个platform,还是有CCS里面默认的OMAPL138的platform,因为这样编译出来的out文件在板子上直接slaveloader以后跑起来跟arm是能正常跑的并且正常通信的。所以我觉得就不需要新建platform了。但是用CCS加载就不行了,所以我觉得是加载的问题。请帮忙分析一下。我CCS下用loadsymbols和loadprogram方式都不能和arm正常跑,而且报上面的错误。slaveloader加载方式上有什么特别吗?
作者: tenny    时间: 2016-8-10 08:54
不能用默认的 platfrom,按教程步骤走一遍吧




欢迎光临 嵌入式开发者社区 (https://www.51ele.net/) Powered by Discuz! X3.4