打印
[其它产品/技术]

【每日话题】单核 MCU 迁移到多核 MCU:分享挑战与应对之策赢百枚家园币

[复制链接]
楼主: 21小跑堂
手机看帖
扫描二维码
随时随地手机跟帖
41
yueguang3048| | 2024-12-25 11:05 | 只看该作者 回帖奖励 |倒序浏览
国人搞出来的话,一点都不意外,参考某为的折叠屏...无限套娃

使用特权

评论回复
42
Ketose| | 2024-12-25 13:14 | 只看该作者
多核的实时性更好些,如果又要运算,又要做控制可以选择多核。

使用特权

评论回复
43
酱油、有点甜| | 2024-12-25 13:17 | 只看该作者
只跑过裸机的路过,,,

使用特权

评论回复
44
licaijunzhuce| | 2024-12-25 14:35 | 只看该作者
从单核MCU迁移到多核MCU应该是一个复杂的过程,特别是数据的一致性。每个核可能自己的私有cache,如果多个核同时对同一地址进行读写操作,很可能导致cache内容不一致,从而导致数据不一致。我没有做过实际的软件移植开发,从我的理解来讲多核间的数据一致性可以通过软件和硬件来解决。但通常来说,软件维护cache一致性的成本太高,会导致整体的系统性能下降。现在的实现方案基本都是使用硬件来自动维护多核MCU的cache一致性,并且对软件和程序员来说是透明的。所以多核迁移应更关注系统调试、核间通信等方面。

使用特权

评论回复
45
forgot| | 2024-12-25 17:01 | 只看该作者
多核跟多任务还是有区别的,但是如果原设计是多任务或者是多线程设计,切换成多核应该好处理,当然成本也就增加上去了

使用特权

评论回复
46
EPTmachine| | 2024-12-25 19:57 | 只看该作者
多核处理器搭配的外设管理会更为复杂,同时在多核平台上使用的操作系统比如Linux、Windows,操作系统的提供的接口函数比单核的复杂,编程的思路也会变得更为模块化。迁移时,要考虑不同平台上的功能的实现,理解其资源管理机制和使用规则,这会带来很多工作量,要有合理的规划,避免时间不够。

使用特权

评论回复
47
昊430| | 2024-12-25 21:03 | 只看该作者
多核最重要的是,核之间的通讯,之前做过一些

使用特权

评论回复
48
龙1985| | 2024-12-25 22:48 | 只看该作者
单核换多核毕竟得重构,重新开发,增加速度和协作的同时增加难度

使用特权

评论回复
49
qintian0303| | 2024-12-25 23:06 | 只看该作者
多核MCU的话个人感觉没有太好的方案,或者比较长出色的MCU,主要就是多核直接的同步,调度比较麻烦

使用特权

评论回复
50
sujingliang| | 2024-12-26 10:55 | 只看该作者
多核之间得通信和同步:要有一个高效的通信机制,让核心之间能顺畅地交换数据。
能不改就不改:尽量保留和重用现有的代码,这样省事儿。
模块化:把代码拆成一个个小模块,这样每个模块都能独立开发、测试和调试。
多学学:学习多核编程和调试技能。
用好工具:选些支持多核编程和调试的高效开发工具。

使用特权

评论回复
51
xhackerustc| | 2024-12-26 23:35 | 只看该作者
关于这个话题我关注的是RTOS对多核的支持,印象中zephyr RTOS已经支持多核,FreeRTOS曾经有个SMP的分支,但不知道状态如何了比如合并入主线了吗?

使用特权

评论回复
52
zhe_jiang| | 2024-12-27 19:23 | 只看该作者
多核支持任务分工,能够同时处理多个任务,效率更高,
编程与调试难度较大,对软件开发人员要求更高。

使用特权

评论回复
53
dirty123| | 2024-12-27 23:57 | 只看该作者
多核主要是核间通讯,其他和单核的差不多用法

使用特权

评论回复
54
leihaozhuce| | 2024-12-28 22:04 | 只看该作者
软件部分是移植的重点和难点,需要了解两款单片机在编程上的区别,并根据新的MCU的特性进行代码的重构和优化‌。可能需要重写部分代码,以确保其能够在多核环境下高效运行,并充分利用多核MCU的并行处理能力‌。在多核MCU上,需要特别关注系统应用之间的通信和同步问题,以确保各个内核能够正确地协同工作‌。可以利用MCU提供的通信接口(如SPI、I2C、UART等)或者采用共享内存的方式进行内核间的数据交换和同步‌。

使用特权

评论回复
55
丙丁先生| | 2024-12-29 09:15 | 只看该作者
将单核MCU迁移到多核MCU确实是个挑战,但也是提升系统性能的关键步骤。我的建议是,首先做好充分的准备工作,包括需求分析和选择合适的多核MCU。然后,对现有代码进行模块化设计,使其更容易在多核环境中运行。在迁移过程中,要特别注意数据共享和通信问题,使用适当的同步机制来管理。同时,利用多核特性,将计算密集型任务分配给不同的核,以实现负载均衡。最后,不要忘记进行充分的调试和测试,确保每个模块在多核环境中都能正常工作。通过这些步骤,你可以更快速高效地实现代码迁移和新的应用构建。

使用特权

评论回复
56
电子烂人| | 2024-12-29 15:26 | 只看该作者
坛友提到的双核MCU多一些,我说一个单核移植异构双核的案例:
原方案是STM32F407,移植方案是STM32MP157,架构是A7+M4,M4核方面移植完全兼容,只要修改一下CUBEMX里的定义,代码移植过来即可
主要难点在于A7核开发后与M4核的通信,当时是做的内存共用,A7核做UI处理完之后存到内存指定位置,M4核读取内存数据负责执行调度。
另外内存数据存储完成后需要两个核用总线告知内存地址,这部分是通过底层的IPCC控制器通信,A7核这边用ttyRPMSG0,M4核用ST提供的OpenAMP虚拟串口,还算能完成任务。

使用特权

评论回复
57
eyesee2008| | 2024-12-31 09:21 | 只看该作者
单核的任务迁往多核任务,原理很简单,在多核任务分配出一个核专门干原先单核的任务。

使用特权

评论回复
58
meiyaolei| | 2024-12-31 15:59 | 只看该作者
设计从单核MCU迁移到多核MCU的过程中,代码迁移、重构、多核系统调试以及系统应用间通信其实还是要花很多精力和时间的。首先需要对现有代码进行全面评估,确定哪些部分可以直接迁移,哪些需要重构或重写。
部分是否要模块化设计,如果模块化会有助于降低重构复杂度,并促进任务的并行处理,但是也会有难度;
如果有现成的利用代码迁移工具可以辅助这一过程,提高效率和准确性。但是在调试方面,建立支持多核调试的环境也是至关重要,同时采用并行调试策略可以缩短调试周期。系统应用间通信需要选择合适的通信方式,并对通信过程进行优化,确保通信的可靠性和效率。
通过合理的规划、利用工具和策略,可以更有效地将设计迁移到多核MCU上,提高系统的处理能力和实时响应性能。

使用特权

评论回复
59
万法归宗| | 2024-12-31 19:36 | 只看该作者
迁移,不可能的,全部重新开发一遍。

使用特权

评论回复
60
mollylawrence| | 2025-1-3 10:51 | 只看该作者
单核MCU上的代码可能需要大量重构以适应多核环境。这包括处理多核间的同步、互斥问题,以及优化代码以充分利用多核的处理能力。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则