大家好,6474在内存映射表里,0088 0000到0097 FFFF这段内存区,可以把核0配置2M,核1配置1M,核2配置1M吗?那这1M的空间可以分给哪个核用?
一个函数在核0上运行,他内部调用了函数B,如果想让这个函数B运行在核2上,只要在cmd 文件里定义一个新的section叫mysection,把我的函数B放在我自己定义的mysection里,然后在把 mysection 放在核2的L2空间,就可以吗?这样子一个cmd 文件,就实现了一个多个核的工程吗?谢谢,本人初学,请多多指教。
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.
大家好,6474在内存映射表里,0088 0000到0097 FFFF这段内存区,可以把核0配置2M,核1配置1M,核2配置1M吗?那这1M的空间可以分给哪个核用?
一个函数在核0上运行,他内部调用了函数B,如果想让这个函数B运行在核2上,只要在cmd 文件里定义一个新的section叫mysection,把我的函数B放在我自己定义的mysection里,然后在把 mysection 放在核2的L2空间,就可以吗?这样子一个cmd 文件,就实现了一个多个核的工程吗?谢谢,本人初学,请多多指教。
你好,以下 L2 SRAM的空间,可用范围是1M,009 00000 0097 FFFF这段空间是系统保留空间。
0080 0000 0087 FFFF 512K L2 SRAM
0088 0000 008F FFFF 512K L2 SRAM
009 00000 0097 FFFF 512K Reserved
这段L2 SRAM空间是多核共用的空间,各个核的程序可以按用户设置在上面分配存储。
但核0如果要调用核1的函数,必须由核1完成函数运算后,将结果传递给核0,这需要IPC通信。而不是你上面所说的那样。
谢谢你热心的帮助,但是我想在一个工程里。在cmd文件里,有一个functionA是在核0的L2空间,functionB是在核1的L2空间,functionC是在核2的L2空间。mai函数里,我想让这三个函数都同时运行,然后核0必须等到核1.核2运行完各自的函数后,核0同时完成自己的functionA后,才能向下接着执行自己的程序。难点中与,这三个函数是怎么开始的呢?可以中main里直接调用这三个函数吗?核0怎么判断核1.核2完成了各自的函数?你上面所说的6474有个公用的空间,那么我在这个公用的空间里定义2个变量,作为核1,核2执行完自己的函数的标志。这样核0就用while循环来查看这俩标志,如果执行完退出while循环,这样可以我前面说的功能吗?谢谢
三个核,我建立三个CCS工程,核1的工程里写个main函数,那么其他俩工程都不能有main函数对吧,其他俩工程的开始执行,首先必须由核0来通知他们,他们才能安装自己的逻辑运行起来。有个IPC寄存器来实现核间中断外,还有哪些可以实现核间中断?这三个工程生成了三个out.文件,我怎么把这三个工程下载到开发板上?有这方面的资料么?我想通过link DMA方式,把DDR中的三块数据分别搬移到核0,核1,核2的局部,然后每次搬移都产生中断,来分别通知核0,核1,核2,这三个核收到中断后,再处理各自的数据,这样可以吗?谢谢。
每个工程中都必须一个main函数。在CCS中,可以分别将工程编译出的OUT文件分别下载到核内,点击RUN。CCS工具,专门用作程序DEBUG的。如果需要上电自启动,那么需要考虑使用bootloader的方式,核0启动后,唤醒其他核,每个核都已一个entry地址,然后各自去执行各自的程序。
ti提供了多核例程
BIOSMCSDK-C64XPLUS:SYS/BIOS MCSDK for C647x and C645x
请在下面链接下载:
http://www.ti.com/tool/bioslinuxmcsdk
你好,现在工程是这样的,DSP把FPAG取数据放到DDR,当DDR中数据为一帧的时候256MB的时候,DSP在对256MB数据进行处理
首先,核0取1M数据,放到全局L2.然后核1,核2,都到这个全局L2里取自己要处理的数据、进行运算。
那么6474来说,每个核还有1M的局部L2。核0把任务分给核1,核2,这是一个“总分”的方式,那么核1,核2处理完后
要通知核0,核0收到通知后,再次把1M的数据放回DDR,就这样经过了256次,三个核才能处理完256M的数据。第一
阶段的处理结束。、
下面进入第二阶段的处理:
处理也是按照总分的方式,每次加载1M数据到全局L2,然后每个核处理自己的数据,处理完由核0来把处理后的数据
搬回DDR中。处理次数也是256次
下面是第三阶段的处理:
这个时候DDR数据只有128M,也就是说要经过128次的处理。才能完成
每个阶段的处理都是“总分式”,每次处理都需要核间中断。
问题是:
第一:每个核还有1M局部L2,我在第一个处理阶段的话,每个核还要计算系数总共大小是512KB,这样每个核还剩下
512KB。考虑到程序运行中局部L2空间还要占用一部分程序,这样是否实际可行?
第二:核间中断的话,用你说的IPC,那么三次任务,对核1来说就是得有三个中断源吧,就是说
核0通知核1,核1能够区分出自己要跳到三个阶段的哪个处理程序里去。这可以实现吗?
第三:建立三个CCS工程的话。main函数放在核0.听说核1核2的工程里,不能有main函数。
那么核1,核2的启动就是由核0,来给他中断信号。然后核1,核2收到中断后,按照自己的逻辑来执行对吗?
第四:三个工程的话,核1,核2如果想执行idle线程的话,可以在核1工程的cfg文件里配置吗?核1.核2工程是否
可以有各自的配置文件?
第五:核1,核2沒有main函数的话,能够编译连接生成各自工程的。out文件吗?
如果能,假如可以生成的话,那么最后的三个.out文件,怎么下到板子里去?
第六:你看我说的方案可行吗?
本人初学,谢谢,您的回复。
1:你好,谢谢你的答复,我还想问几个6474的问题;
现在我把全局空间1MB都装满了数据,想每个核都读取300KB的数据
三个核能同时读取全局空间里的数据吗?如果不能,那么核0读取数据完后,过多长时间核1才能读取数据。
读取的速度又是多少?
2:核0可以通过link方式的DMA,一次就把DDR中取出1.5M,分别搬移0.5M到三个核,每个核都在自己的DMA中断里
去处理自己核内的0.5M数据,这样能实现吗?
3:要处理的数据量很大,怎么样分配全局L2,和局部L2,才能使空间利用率最大?
4:核的1MB的局部L2,在程序的执行过程中,可以一次把这1MB,都装满要处理的数据吗?
如果不能,那么一般最多可以向这个空间放多少数据?
我刚学,很多问题,谢谢,