阿哲
发表于: 2017-6-10 10:19:25 | 显示全部楼层

前两天参加了恩智浦社区举办的LPC54114双核使用指南翻译活动,现将自己翻译的部分分享出来,如有不妥,敬请指正。

我翻译的是本文附件PPT中的Page 55-Page 60Dual core HOT with MCUXPresso-Part2)部分。


(第55页)

双核调试 - 进入调试会话

●     首先选择M4工程,然后进入调试会话

       -   请勿尝试先调试M0+工程。

●     在M4工程的调试会话中,用户可以按原样调试M4工程。

●     如果用户还需要调试M0+工程,那么请勿退出M4工程的调试会话,而是选择M0 +项目,然后进行调试。

       -    MCUXPresso自动检测M0+项目是“从”,并将其合并到M4调试会话。

●     从现在起,两个项目都可以同时进行调试。


只有M4调试时的调试视图

Debug view when only M4 is debugging.JPG


调试M0+后的调试视图

Debug view after debugging M0 .JPG


(第56页)

双核调试:尝试一下

●     只有M4调试时的调试视图

●     在本文中,当按下“SW1”按钮时,M4复位并且重启M0 +。 按下“SW1”按钮,然后释放,你会发现当你松开“SW1”时,M0 +工程会自动停止在“main()”。

●     调试H/W互斥量

       -    1. 在M4代码的“mutexGive();”处设置断点,然后在M0+代码的“mutexTake()” 后设置断点。

       -    2. 单击“      ” 使得两个内核同时运行,当M4工程停在断点时,按下“F6”按键,使得M4发出MUTEX,你会发现M0+工程也会停在“mutexTake();”之后 。

       -    注意:一旦你运行其中的一个内核,另一个内核也将运行,即使它停止在断点处。


当按下“SW1”按钮时,M0+停在main

M0  stops at main when you click “SW1”.JPG

在M4工程中,按下“F6”按钮单步调试

In M4 project, press “F6” to step over.JPG

然后M0+工程停在断点处

M0  project then hits breakpoint.JPG



(第57页)

工作流程

Work flow.jpg


(第58页)

特殊控制按钮

●     按住SW1按钮,将M0保持在复位状态,松开SW1按钮就会释放M0。 您只会看到绿色灯闪烁,显示主循环的迭代。

       -    注意:当M0+工程处于调试会话时,松开“SW1”按钮后,M0+会重新启动,MCUXPresso IDE会自动停止M0+在“main()”中,所以即使松开“SW1”按钮,也需要手动按下“F8”使M0+内核运行。

●     按住SW2按钮,阻止M4释放硬件互斥信号,并保持主循环的迭代,从而暂停闪烁。


(第59页)

重要函数(SDK)

●     (M4, M0+) void MAILBOX_SetValue(MAILBOX_Type *base, mailbox_cpu_id_t cpu_id, uint32_t mboxData);

       -  将 “mboxData”值(非零)设置为CPU“cpu_id”,并触发其MAILBOX。

●     (M4, M0+) uint32_t MAILBOX_GetValue(MAILBOX_Type *base, mailbox_cpu_id_t cpu_id);

       -  获取CPU“cpu_id”的邮箱值。

●     (M4, M0+) void MAILBOX_ClearValueBits(MAILBOX_Type *base, mailbox_cpu_id_t cpu_id, uint32_t mboxClrBits);

       -  清除“mboxClrBits”屏蔽的CPU“cpu_id”的邮箱值位,使用0xFFFFFFFF清除所有位。

●     (M4, M0+) uint32_t MAILBOX_GetMutex(MAILBOX_Type *base);

       -  获取H / W MUTEX值,同时MUTEX被硬件清零,在一段时间循环中尝试锁定MUTEX时使用该函数。

●     (M4, M0+) void MAILBOX_SetMutex(MAILBOX_Type *base);

       -  解锁/产生互斥信号。在代码成功锁定H/W MUTEX后必须调用该函数。


(第60页)

重要函数(用户)

●      (M4) void CPU_CM0pHoldReset(void);

       -  保持M0+处于复位状态。

●     (M4) void CPU_CM0pRelease(void);

       -  从复位状态释放M0+。.

●     (M4) void CPU_CM0pBoot(const uint32_t imgVecTab[2]);

       -  填充M0 +引导条件(MSP、复位向量)并复位M0 +,M0 +引导代码将检测引导条件,然后应用。

●     (M4, M0+) void MAILBOX_IRQHandler(void);

       -  Mailbox IRQ处理程序,由其他内核写入非零值到邮箱寄存器从而触发。

●     (M4, M0+) #define mutexTake()  while (MAILBOX_GetMutex(MAILBOX) == 0)\

       -  尝试锁定H/W MUTEX

●     (M4, M0+) #define mutexGive()  MAILBOX_SetMutex(MAILBOX)

       -  解锁MUTEX


翻译的文件: Page 55-Page 60(Dual core HOT with MCUXPresso-Part2).rar (228.23 KB, 下载次数: 13)


LPC Dual-Core principles and practice: dual_core_lpc5411x.rar (1.95 MB, 下载次数: 21)

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 53 | 回复: 76



手机版|

GMT+8, 2024-4-19 15:39 , Processed in 0.167665 second(s), 8 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表