完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 一只耳朵怪 于 2018-6-25 14:50 编辑
HI, 最近在调试C6678 的QMSS八核之间通信,在学习demo代码pdk_C6678_1_0_0_16packagestitransportipcexamplesqmssIPCBenchmark。 代码里通过MultiProc_getNumProcessors()来获取已经触发的2个核通信,但是我需要触发8个核之间通信, 在调试过程中,我刚开始已经触发了8个核了,但是通过函数去获取核,一直获取到两个(在demo代码中是core0和core1的QMSS通信), 因为函数封装在TI库里,无法看到函数实体,不知道如何实现的。 如下代码和打印语句: 代码:if (numCores == 0) [ |
|
相关推荐
14个回答
|
|
自己先顶下。
|
|
|
|
|
|
|
|
您好! 此路径下 C:Program FilesTexas Instrumentsipc_1_24_00_16packagestisdoutils multiproc.c ,有函数 原型,你可以看一下。 |
|
|
|
谢谢 Bruce ,这个问题已经解决了。 但是发现一个新的问题,现在八核触发起来后,core0不能和core1以外的其他核通信,感觉demo是core0和core1之间QMSS通信的,应该有相应的代码操作。但是这部分代码尚未找到。代码中修改 if (selfId == X)也未能实现(x=1,2,3,4,5,6,7),应该有其他代码相关。还在寻找相关代码中~ 请问Bruce我的理解对么?如果是的话,这部分代码是哪块?谢谢 |
|
|
|
iyfhnvbn 发表于 2018-6-25 03:56 您好! 的确如楼主所说,这个project 中,核间是loop通信 ,即0->1,1->2 ..... 可以参考 measure_latency() 中代码 实现 core0与其他核的通信。 |
|
|
|
MAZHILEI 发表于 2018-6-25 04:10 hi ,Bruce 我在开启八核后调试会出现如下错误: [C66xx_0] tsk0. selfproc=0 nextQueueName (CORE1) openned, nextQueueId=65536 [C66xx_0] tsk0. selfProc=0 calling MessageQ_put(nextQueueName=CORE1). msg=0xc040080 [C66xx_0] ti.sdo.ipc.MessageQ: line 383: assertion failure: A_invalidMsg: Invalid message [C66xx_0] xdc.runtime.Error.raise: terminating execution 这一部分打印信息也正是在函数measure_latency()中,根据打印信息又去找相应函数在Message.c中 的MessageQ_put()函数,如下: MessageQ_put(MessageQ_QueueId queueId, MessageQ_Msg msg) [... 383行:Assert_isTrue((msg != NULL), ti_sdo_ipc_MessageQ_A_invalidMsg); ... ] 从这个语句中判断,它在判断这个Msg是否有效,但这个msg=0xc040080,是在MSMC的地址中。 在.map文件中 未找到此地址。 但是当我只开启core0和core1也是此地址,但是运行正常。 请问这个是什么问题? |
|
|
|
MAZHILEI 发表于 2018-6-25 04:10 HI Bruce, 还想问下“核间通信是loop通信”这句是什么意思? 是这个代码工程用了这个loop通信,还是QMSS就是loop通信的机制? 因为我想要做八个核同时用一个QMSS的region。 |
|
|
|
iyfhnvbn 发表于 2018-6-25 04:37 您好! 1.仅 在这个 工程中通信方式 是loop的; 2.楼主 测试 是 simulator 还是 evm? |
|
|
|
您好, 我是通过仿真器调试的。 1.在调试过程中,发现msg的地址会变化,基本上得出一个问题,通过打印信息看到 tsk0. selfProc=0 calling MessageQ_put(nextQueueName=CORE1). msg=0xc040080 -----(八核的msg地址) tsk0. selfProc=0 calling MessageQ_put(nextQueueName=CORE1). msg=0xc002a80 -----(core0,core1 msg地址) 而八核的msg地址就会出现如上所说的错误,两核就运行正常,感觉还需要修改部分配置把 ? 请问,您能帮我看下,如果是八核QMSS的话,需要修改哪些配置? 谢谢 |
|
|
|
HI,Bruce 在工程汇中,函数measure_latency() 是什么作用,阅读代码后,没有明白其中意思,measure_latency()函数被core0和core1都使用,在阅读代码中,感觉core0多做了MessageQ_get()了100次,(循环里面)。感觉逻辑有些不对。 请问这个measure_latency() 这个函数作用是什么?因为在后面的代码中thruputTxRxPairPreallocFullLoad(),core0发送和core1接收都是匹配的。 因为在8核调试中在measure_latency()会报错,而这个错误没理解,请Bruce和其他高手帮我看下八核下如何实现QMSS。 万分感谢。 |
|
|
|
iyfhnvbn 发表于 2018-6-25 05:11 您好! 1. measure_latency() 是用来测 多核的通信时间。 做100 次,取平均值而已。 core 0相对其他核来说 多做了 发送 循环信息的步骤。 请楼主 再仔细看下代码。 2. measure_latency() 错误,我simulator也出现你同样错误, 我们正在研究中。 |
|
|
|
HI,bruce: measure_latency() 是用来测 多核的通信时间,那么只是为了测时间的话,想必我可以将它注释掉,因为我不需要通信时间。 去掉后core0和core1可以正常通信,但是core0和其他核仍然无法QMSS通信,还在看代码测试中。在寻找问题中 |
|
|
|
HI,bruce: 我在代码中,使用core0和core7通信,在注释掉measure_latency() 的情况下,在调用thruputTxRxPairPreallocFullLoad()中的MessageQ_put()函数时出现: [C66xx_0] ti.sdo.ipc.MessageQ: line 383: assertion failure: A_invalidMsg: Invalid message [C66xx_0] xdc.runtime.Error.raise: terminating execution 这个错误,问题已经定位到了,就是调用MessageQ_put()就会出现错误。 但是不知道这个问题怎么解决?请各位高手帮忙看下。万分感谢。 |
|
|
|
Hi,bruce 请问你们研究调试ok了么?我这边尚未实现还。还在调试中。 谢谢 |
|
|
|
只有小组成员才能发言,加入小组>>
832 浏览 0 评论
TMS320F28377D:新做了以377d为芯片的板子,上电后芯片复位引脚出现方波请问如何解决?
2023 浏览 0 评论
TPS55340通电后输入端保险丝烧断,芯片输入和GND之间短路
3762 浏览 4 评论
5128 浏览 0 评论
请问如何用DM368对RGB格式的图片数据进行编码生成JPEG格式图片?
1824 浏览 1 评论
CC3100BOOST使用CC3200lunchXL进行烧录
812浏览 2评论
42浏览 2评论
50浏览 2评论
42浏览 2评论
72浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-4 05:18 , Processed in 0.881061 second(s), Total 73, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191