完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
我想达到的目标是这样的:core0进行任务分派工作,给core1-6分派不同的任务,待core1-6都完成后,启动core7进行任务汇总。
其中,任务分派和汇总过程中需要进行核间数据的传递。 有下面几个问题: 1、程序是否共享? -----》几个核是运行同样的源代码,源代码中通过DNUM来区分不同部分; -----》每个核编写不同的工程。 -----》这两种方式特点如何,适用于怎样的方式呢,我不知道该如何选择 2、如果多核运行同一程序(放在MSMC上),通过DNUM来区分不同部分的话,那么程序中的变量(局部、全局)多核是否共享,能否直接访问,这种方式可行性如何,有何特点? 3、core之间通信方式如何? -----》核间通信有很多种方法,该如何选择? 4、core0通过IPC这种方式发中断给core1-6,中断处理函数如下,上电第一次6个核能全部响应,但是均提示Invalid CIO command (48)... 再次执行后都只有部分核能有响应。(我说的响应指的是console里会有信息输出) void ipc_handler(void* handler) [ volatile uint32_t read_ipcgr; uint32_t CoreNum; CoreNum = CSL_chipReadReg(CSL_CHIP_DNUM); printf("Core number : %d",CoreNum); read_ipcgr = ((CSL_BootcfgRegs*)CSL_BOOT_CFG_REGS)->IPCGR[CoreNum]; if(1 == CoreNum) [ printf("in ...n"); ] else if(2 == CoreNum) [ printf("in ...n"); ] else if(3 == CoreNum) [ printf("in ...n"); ] else if(4 == CoreNum) [ printf("in ...n"); ] else if(5 == CoreNum) [ printf("in ...n"); ] else if(6 == CoreNum) [ printf("in ...n"); ] else if(7 == CoreNum) [ printf("in ...n"); ] ((CSL_BootcfgRegs*)CSL_BOOT_CFG_REGS)->IPCAR[CoreNum] = read_ipcgr; ] 这种方式是否可行?core0发中断有什么时间要求,core1-6的处理函数有什么时间要求?为什么我的程序中无法正常响应? 谢谢了。 |
|
相关推荐
6个回答
|
|
你好,
我回答下第1,2个问题 1.程序是可以共享的,你可以采取下面的结构来实现 swith(DNUM) [ case 0: function_0(); break; case 1: function_1(); break; ... ... case 7: function_7(); break; default: break; ] 这种方式是所有的和都加载同一段代码,然后通过DNUM来区分不同和执行的程序段。 然后你问题中有提到编写不同的工程的方式来实现多核的程序,这也是可以的,但这种你要注意不同工程的代码段和数据段的分配,不要重叠就可以了。 2.多核之间是可以共享全局变量的,不管变量放在共享的存储区里还是放在单个核的本地存储里。 |
|
|
|
Yue Cao,谢谢你的回复。 关于你的回答有些地方想详细的了解下。 1、请问多核之间全局变量是如何共享的?就两种情况而言,放在本地存储里和MSMC里。 2、请问我采用所有核都加载同一段代码,然后通过DNUM来区分不同和执行的程序段这种方式,将所有段都放在MSMC中,按照你的意思局部变量应该是不能共享的,请问是如何做到的呢?因为这个局部变量在每个核中地址都是一样的。 不是很理解,希望帮助解答下。 |
|
|
|
bf7560 发表于 2018-6-21 07:16 问题4:已经解决,参见www.deyisupport.com/.../11450.aspx 另外出现Invalid CIO command的问题可能是由于我将cmd文件中.cio段设置在MSMC中导致的,改为L2后,不再出现问题。 |
|
|
|
bf7560 发表于 2018-6-21 07:33 你好, 1.全局变量放在本地和共享区都是可以的,比如你把全局变量放到共享区(0xc000000~0xc3ffffff)所有核对它的访问地址都是(0xc000000~0xc3ffffff),如果你把全局变量放到本地L2比如0核(0x00800000~0x0087ffff)0核对该地址的访问还是原地址,但1核对该地址的访问就自动变为(0x10800000~0x1087ffff),综上所述全局变量放在哪里都是可以的 2.该问题同上相似,每个核的L2都有两个寻址地址(本地核访问一个,其他核访问一个) 上述的详细资料你可以参见SPRS691C中第五部分C66x CorePac 有问题欢迎继续交流! |
|
|
|
hfjydz2013 发表于 2018-6-21 07:39 Yue Cao,谢谢你耐心细致的解答。我明白了。 |
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
684 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
600 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1055 浏览 1 评论
741 浏览 0 评论
普中科技F28335开发板每次上电复位后数码管都会显示,如何熄灭它?
525 浏览 1 评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
163浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
127浏览 14评论
在使用3254进行录音的时候出现一个奇怪的现象,右声道有吱吱声,请教一下,是否是什么寄存器设置存在问题?
127浏览 13评论
TLV320芯片内部自带数字滤波功能,请问linein进来的模拟信号是否是先经过ADC的超采样?
123浏览 12评论
GD32F303RCT6配置PA4 ADC引脚,将PA2代替key功能,PA2连接时无法实现预期功能,为什么?
28浏览 10评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 14:09 , Processed in 0.859823 second(s), Total 62, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号