PSOC6 双核在智能门锁上的任务分工问题及ROTS问题

公告

大中华汽车电子生态圈社区并入开发者社区- 更多资讯点击此

Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
lock attach
Attachments are accessible only for community members.
user_1874811
Level 1
Level 1
First question asked First like given

在智能门锁的设计种,M4核用来做指纹算法解码,其他的BLE,capsence,RFID,OLE等功能由M0核执行,M4核长期处于休眠状态,m0被唤醒后,根据需要去出发M4执行指纹解码。

1:如上的任务分配,需要了解到M4与m0对外设资源的分配,及两个核的通信机制。是否有相关文档描述?

2:官方历程中ROTS都是运行与M4核。在智能门锁应用中,需要用M0核运行ROTS,M4长期处于深度睡眠,需要时在运行指纹算法,这样才是最省功耗。

把官方例程的 M4 中RTOS 转移到M0中,需要注意哪些关键,是否有相关文档推荐?

3:附件是官方在M4核的代码,运行正常,我移植到M0核后,就停止在if(CapSense_NOT_BUSY == CapSense_IsBusy()),不能继续往下执行。请问原因是?

0 点赞
1 解答
ShipingW_81
Moderator
Moderator
Moderator
500 replies posted 250 solutions authored 250 replies posted

1:如上的任务分配,需要了解到M4与m0对外设资源的分配,及两个核的通信机制。是否有相关文档描述?

- 尽量避免两个核同时访问同一外设,或者可以通过IPC进行双核之间的通信,协调之间的工作,具体可以参考相关示例代码 -

https://www.cypress.com/documentation/code-examples/ce223549-psoc-6-mcu-ipc-semaphore

https://www.cypress.com/documentation/code-examples/ce216795-psoc-6-mcu-dual-core-basics

2:官方历程中ROTS都是运行与M4核。在智能门锁应用中,需要用M0核运行ROTS,M4长期处于深度睡眠,需要时在运行指纹算法,这样才是最省功耗。

把官方例程的 M4 中RTOS 转移到M0中,需要注意哪些关键,是否有相关文档推荐?

- 应该是可以的。目前还没有具体的文档,可以先尝试移植到cm0+中,看是否出现问题。

3:附件是官方在M4核的代码,运行正常,我移植到M0核后,就停止在if(CapSense_NOT_BUSY == CapSense_IsBusy()),不能继续往下执行。请问原因是?

- 我试了下把CE222827 - PSoC 6 MCU: CapSense Tuner cm4的代码移植到cm0+中,代码运行是ok的,注意把相应的中断也要配置到cm0+。.

在原帖中查看解决方案

2 回复数
Vison_Zhang
Moderator
Moderator
Moderator
First comment on KBA 750 replies posted 250 sign-ins

针对最后一个问题:

首先确认你使用的是 EZI2C 组件,不是标准的 I2C 组件,而且 EZI2C 组件的参数配置必须与CapSense 组件数据手册中 ‘Quick Start’ 章节中要求的配置相同()

Set Data Rate (kbps) to 400.
Set Number of Addresses to 1.
Set Primary Slave Address (7-bits) to 0x08.
Set Sub-Address Size (bits) to 16 bits.

其次,请将  for loop 中的 CapSense_ScanAllWidgets();  函数作为 for loop 的最后一行代码执行。先执行此 API, 再调用  CapSense_IsWidgetActive() 是有问题的。

ShipingW_81
Moderator
Moderator
Moderator
500 replies posted 250 solutions authored 250 replies posted

1:如上的任务分配,需要了解到M4与m0对外设资源的分配,及两个核的通信机制。是否有相关文档描述?

- 尽量避免两个核同时访问同一外设,或者可以通过IPC进行双核之间的通信,协调之间的工作,具体可以参考相关示例代码 -

https://www.cypress.com/documentation/code-examples/ce223549-psoc-6-mcu-ipc-semaphore

https://www.cypress.com/documentation/code-examples/ce216795-psoc-6-mcu-dual-core-basics

2:官方历程中ROTS都是运行与M4核。在智能门锁应用中,需要用M0核运行ROTS,M4长期处于深度睡眠,需要时在运行指纹算法,这样才是最省功耗。

把官方例程的 M4 中RTOS 转移到M0中,需要注意哪些关键,是否有相关文档推荐?

- 应该是可以的。目前还没有具体的文档,可以先尝试移植到cm0+中,看是否出现问题。

3:附件是官方在M4核的代码,运行正常,我移植到M0核后,就停止在if(CapSense_NOT_BUSY == CapSense_IsBusy()),不能继续往下执行。请问原因是?

- 我试了下把CE222827 - PSoC 6 MCU: CapSense Tuner cm4的代码移植到cm0+中,代码运行是ok的,注意把相应的中断也要配置到cm0+。.