查看: 3831|回复: 3

[原创] lpc54114双核通信--互斥

[复制链接]
  • TA的每日心情
    开心
    2021-6-10 15:47
  • 签到天数: 1251 天

    连续签到: 1 天

    [LV.10]以坛为家III

    6

    主题

    2396

    帖子

    3

    金牌会员

    Rank: 6Rank: 6

    积分
    7534
    最后登录
    2025-5-23
    发表于 2018-4-19 16:33:54 | 显示全部楼层 |阅读模式
    本帖主要实现非中断情况下的互斥通信。
    在前一帖子代码的基础上稍加更改,在M4核和M0+核的代码基础上增加如下代码即可,
    在M4核中更改的代码有
    /* Init Mailbox */
        MAILBOX_Init(MAILBOX);

        /* Boot source for Core 1 from flash */
        SYSCON->CPBOOT = SYSCON_CPBOOT_BOOTADDR(*(uint32_t *)((uint8_t *)CORE1_BOOT_ADDRESS + 0x4));
        SYSCON->CPSTACK = SYSCON_CPSTACK_STACKADDR(*(uint32_t *)CORE1_BOOT_ADDRESS);

        int32_t temp = SYSCON->CPCTRL;
        temp |= 0xc0c48000;
        SYSCON->CPCTRL = (temp | SYSCON_CPCTRL_CM0RSTEN_MASK);
        SYSCON->CPCTRL = (temp);
        delay();
        MAILBOX_SetValue(MAILBOX, kMAILBOX_CM0Plus, (uint32_t)&g_msg);
    while (1)
        {
            /* Stop secondary core execution. */
            if (!GPIO_ReadPinInput(BOARD_SW1_GPIO, BOARD_SW1_GPIO_PORT, BOARD_SW1_GPIO_PIN))
            {
                MCMGR_StopCore(kMCMGR_Core1);   
                                              PRINTF("Stopped Secondary core.\n");
                delay();
            }
            /* Start core from reset vector */
            if (!GPIO_ReadPinInput(BOARD_SW2_GPIO, BOARD_SW2_GPIO_PORT, BOARD_SW2_GPIO_PIN))
            {
                                              PRINTF("Started Secondary core.\n");
                MCMGR_StartCore(kMCMGR_Core1, CORE1_BOOT_ADDRESS, 5, kMCMGR_Start_Synchronous);
                delay();
            }
                                    PRINTF("M4 receive:%d\r\n",M0_TO_M4_R);
                                    delay();
                                    M4_TO_M0_T++;
            /* Get Mailbox mutex */
            while (MAILBOX_GetMutex(MAILBOX) == 0)
                ;


            /* The core0 has mutex, can change shared variable _XiaoMaGe */
            g_msg++;


            PRINTF("M4 : mailbox mutex,the data is: %d\n", g_msg);


            /* Set mutex to allow access other core to shared variable */
            MAILBOX_SetMutex(MAILBOX);
        }
    在M0+内核更改的代码
    /* Init Mailbox */
        MAILBOX_Init(MAILBOX);
        while (1)
        {
            delay();
                              M0_TO_M4_T++;
                              PRINTF("M0receive:%d\r\n",M4_TO_M0_R);
                              GPIO_TogglePinsOutput(GPIO, 0u, 1u << 15u);
                              GPIO_TogglePinsOutput(GPIO, 0u, 1u << 19u);
                              GPIO_TogglePinsOutput(GPIO, 0u, 1u << 21u);
                              GPIO_TogglePinsOutput(GPIO, 0u, 1u << 22u);
                              GPIO_TogglePinsOutput(GPIO, 0u, 1u << 25u);
                              GPIO_TogglePinsOutput(GPIO, 0u, 1u << 26u);
                              GPIO_TogglePinsOutput(GPIO, 0u, 1u << 29u);
                              GPIO_TogglePinsOutput(GPIO, 0u, 1u << 30u);
           /* Get Mailbox mutex */
            while (MAILBOX_GetMutex(MAILBOX) == 0)
                ;
            g_msg = (uint32_t *)MAILBOX_GetValue(MAILBOX, kMAILBOX_CM0Plus);
            /* The core1 has mutex, can change shared variable _XiaoMaGe */
            if (g_msg != NULL)
            {
                (*g_msg)++;
                PRINTF("M0 : mailbox mutex,the data is :%d\n", *g_msg);
            }

            /* Set mutex to allow access other core to shared variable */
            MAILBOX_SetMutex(MAILBOX);
        }
    编译下载,串口助手观察通信见下图


    发现通信正常,是按照设计的要求进行的

    评分

    参与人数 1 +1 收起 理由
    NXP管管 + 1

    查看全部评分

    回复

    使用道具 举报

  • TA的每日心情
    开心
    2021-6-10 15:47
  • 签到天数: 1251 天

    连续签到: 1 天

    [LV.10]以坛为家III

    6

    主题

    2396

    帖子

    3

    金牌会员

    Rank: 6Rank: 6

    积分
    7534
    最后登录
    2025-5-23
     楼主| 发表于 2018-4-19 16:41:39 | 显示全部楼层
    也是参考别人的帖子学习的,发现可以改成这样,也能正常,特发此贴
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    712

    主题

    6371

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    24903
    最后登录
    2025-7-22
    发表于 2018-4-19 16:49:08 | 显示全部楼层
    感谢楼主的资料分享1
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2021-6-10 15:47
  • 签到天数: 1251 天

    连续签到: 1 天

    [LV.10]以坛为家III

    6

    主题

    2396

    帖子

    3

    金牌会员

    Rank: 6Rank: 6

    积分
    7534
    最后登录
    2025-5-23
     楼主| 发表于 2018-4-19 17:06:49 | 显示全部楼层
    客气了,,,,
    回复

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-22 19:51 , Processed in 0.086834 second(s), 23 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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