• 169查看
  • 0回复

[芯片硬件] 多核单片机开发的注意事项

[复制链接]


该用户从未签到

发表于 25-4-2024 19:27:52 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


1 在<<单片机启动分析(下)多核单片机的启动>>一文中我们介绍了多核单片机的启动。在OS部署中,多核单片机的每个核可以拥有不同的OS,甚至无OS。需要注意的是,无Autosar OS(无OS)的核不能拥有OS的Application,而且不能调用Autosar OS的服务函数,如DisableAllInterrrupts等。在启动时,也没有规定必须由核0首先启动,可以由其他核(核上可以没跑OS或者跑的是Autosar OS)来启动。2 在<<一文搞懂AUTOSAR核间通信原理、实现和配置>>一文中我们介绍了Spinlock的原理和可能导致的问题。当自旋锁执行的时间比较短(代码比较简单)时,我们可以在获取锁后加上resource或者关闭中断或者自旋锁的类型直接配置为关闭中断来解决低优先级的任务拿到锁后被高优先级任务抢占从而引发的问题。同时,要针对实际使用,学会将较长的锁区域拆分几个较短的锁使用。下图为μcos-II的OSTaskDel函数实现,可以看见其在长时间关闭中断(调用OS_ENTER_CRITICAL)后,会调用OS_EXIT_CRITICAL来使能中断,为了避免一些处理器在使能中断后的下一条指令无法立即执行,随即又调用了一个OS_Dummy的空函数来增加时间,让CPU得以处理中断和一些优先级更高的任务!
多核单片机开发的注意事项w1.jpg

OSTaskDel函数的部分实现

多核单片机开发的注意事项w2.jpg

OS_Dummy函数实现
3 一个核修改了变量后其他核可以立即看见么?当然不是,需要注意,假如使能了cache后,那么其他核是无法立马获取最新的数据的。4 在将应用从单核向多核移植时,不能粗暴的简单分配,需要考虑到锁、逻辑关系等复杂因素,因此需要重新设计软件架构。当然,N个核也不意味着能达到单核N倍的性能。

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 1-2-2025 07:42 , Processed in 0.201397 second(s), 32 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.