先楫半导体HPMicro
直播中

杨工

4年用户 12经验值
私信 关注
[问答]

关于双核问题的求证

突击了解了一下hpm芯片,感觉挺好的,单核就达到了CORTEX-M7的速度。关于双核(主要是hpm6280)有些问题想求证一下。
1-共享内存交换数据,信箱做通知,互斥,信号量用,二者结合起到核间数据交换左右(这一条基本能理解)。

2-时钟,所有外设时钟均会在主核core0的板级初始化函数中做配置,并进行分组。比如uart0由core0控制,则其时钟就分组给cor0。同理,i2c1是由core1控制的,则其时钟就应该分组到group1,并关联到core1。这样的话,i2c1对core0就应该完全忽略其存在性,由core1做初始化并完全使用。同时,core1如果休眠,其管理的外设也会自动退出(如i2c1)。因为例程中的时钟初始化,只有机器定时器1是分到group1和core1的,所以不太确定。

3-只有共享内存(linker文件中已配好16k)是双核都能访问的,且该ram区只能是nocache型,本质上,这块共享内存地址和大小是不限的,保证双核一致且nocache即可,但不知道如果双核同时访问是否允许。

4-只要在core0中完成外设时钟初始化并分好组,各自核的所属外设就已明确,可以初始化和使用,另一核只需要留意不去访问之即可。

5-总结一下就是
.内存分配:共享内存一致且nocache。其它内存地址错开即可。
.外设分配:core0做板级初始化外设时钟时候由人工指定时钟分组以及该组隶属于哪个核。这一步就把各个外设的产权关系明确了。外设属于哪个核,就由该核初始化和使用。
不知道这样理解对不对。因为sdk例程相对简单,有些环节拿捏不准。

回帖(1)

刘芳

2024-2-6 21:14:31

最佳答案

关于双核问题的求证,您所提到的方法是一个常用的解决方案。双核架构中,可以通过共享内存实现两个核心之间的数据交换。可以通过信箱(mailbox)进行通知和互斥操作,通过信号量(semaphore)实现临界区的保护。这样,两个核心可以在共享内存中读取和写入数据,同时通过信箱和信号量确保数据的正确性。

关于时钟配置,您的理解是正确的。在主核的板级初始化函数中,可以配置外设时钟,并将其分组给相应的核心。这样,每个核心只需要初始化和使用自己管理的外设,对于其他核心管理的外设可以忽略其存在性。当其中一个核心进入休眠状态时,由另一个核心接管其管理的外设。

需要注意的是,具体的实现可能会根据芯片的架构和设计选择不同的方法和方案。以上只是一种常见的解决方案,具体的实现可能还受限于芯片的特性和设计选择。如果您有具体的双核芯片型号或厂商的技术文档,可以参阅其文档了解更详细的信息。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分