查看: 5940|回复: 6

[原创] 【LPC54114双核任务二】循序渐进之多核例程2.---hello world

[复制链接]
  • TA的每日心情
    奋斗
    2025-5-7 09:07
  • 签到天数: 353 天

    连续签到: 1 天

    [LV.8]以坛为家I

    141

    主题

    8056

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    5786
    最后登录
    2025-5-7
    发表于 2017-6-26 21:39:36 | 显示全部楼层 |阅读模式
    本帖最后由 wambob 于 2017-6-26 21:43 编辑

          看了双核的资料,有了一点点认识。SDK里给了几个多核例程,先跑个例程熟悉下。
    先打开hello_world_cm4,然后再把hello_world_cm0plus添加进来
    2.jpg
    结果如下:
    1.jpg
    设置好每个工程的debug选项
    5.jpg
    先编译cm0核工程,再编译CM4工程。这个例程的目的是
    cm4核运行中启动cm0核并检测开关状态,按开关SW1,停止CM0核,按SW2启动CM0核,使LED闪烁,
    先修改两个开关。
    3.jpg
    对应的管脚
    4.jpg
    使用两个开关替换原例程,比如KEY0、KEY1。
    然后点图标进去
    debug
    6.jpg
    除了原来的工程外,又自动打开了CM0工程,如上图,和普通的IAR调试界面,工具栏有了变化。
    7.jpg
    不能全速运行了,而且多出双核启动和停止等工具。先打开串口,单步看看发生了什么
    cm4主函数
    1. int main(void)
    2. {
    3.     /* Define the init structure for the switches*/
    4.     gpio_pin_config_t sw_config = {kGPIO_DigitalInput, 0};

    5.     /* Init board hardware.*/
    6.     /* attach 12 MHz clock to FLEXCOMM0 (debug console) */
    7.     CLOCK_AttachClk(kFRO12M_to_FLEXCOMM0);

    8.     BOARD_InitPins_Core0();
    9.     BOARD_BootClockFROHF48M();
    10.     BOARD_InitDebugConsole();

    11.     /* Init switches */
    12.     GPIO_PinInit(BOARD_SW1_GPIO, BOARD_SW1_GPIO_PORT, BOARD_SW1_GPIO_PIN, &sw_config);
    13.     GPIO_PinInit(BOARD_SW2_GPIO, BOARD_SW2_GPIO_PORT, BOARD_SW2_GPIO_PIN, &sw_config);

    14. #ifdef CORE1_IMAGE_COPY_TO_RAM
    15.     /* Calculate size of the image  - not required on LPCExpresso. LPCExpresso copies image to RAM during startup
    16.      * automatically */
    17.     uint32_t core1_image_size;
    18.     core1_image_size = get_core1_image_size();
    19.     PRINTF("Copy Secondary core image to address: 0x%x, size: %d\n", CORE1_BOOT_ADDRESS, core1_image_size);

    20.     /* Copy Secondary core application from FLASH to RAM. Primary core code is executed from FLASH, Secondary from RAM
    21.      * for maximal effectivity.*/
    22.     memcpy(CORE1_BOOT_ADDRESS, (void *)CORE1_IMAGE_START, core1_image_size);
    23. #endif

    24.     /* Initialize MCMGR before calling its API */
    25.     MCMGR_Init();

    26.     /* Boot Secondary core application */
    27.     PRINTF("Starting Secondary core.\n");
    28.     MCMGR_StartCore(kMCMGR_Core1, CORE1_BOOT_ADDRESS, 1, kMCMGR_Start_Synchronous);

    29.     /* Print the initial banner from Primary core */
    30.     PRINTF("\r\nHello World from the Primary Core!\r\n\n");

    31.     PRINTF("Press the SW1 button to Stop Secondary core.\r\n");
    32.     PRINTF("Press the SW2 button to Start Secondary core.\r\n");

    33.     while (1)
    34.     {
    35.         /* Stop secondary core execution. */
    36.         if (!GPIO_ReadPinInput(BOARD_SW1_GPIO, BOARD_SW1_GPIO_PORT, BOARD_SW1_GPIO_PIN))
    37.         {
    38.             MCMGR_StopCore(kMCMGR_Core1);
    39.             PRINTF("Stopped Secondary core.\r\n");
    40.             delay();
    41.         }
    42.         /* Start core from reset vector */
    43.         if (!GPIO_ReadPinInput(BOARD_SW2_GPIO, BOARD_SW2_GPIO_PORT, BOARD_SW2_GPIO_PIN))
    44.         {
    45.             MCMGR_StartCore(kMCMGR_Core1, CORE1_BOOT_ADDRESS, 5, kMCMGR_Start_Synchronous);
    46.             PRINTF("Started Secondary core.\r\n");
    47.             delay();
    48.         }
    49.     }
    50. }
    复制代码
    8.jpg
    串口信息已经打印了已经启动了cm0核,CM0工程的while循环
    1. while (1)
    2.     {
    3.         delay();
    4.         LED_TOGGLE();
    5.     }
    复制代码
    板上的LED6闪烁。LED灯闪烁的代码不在CM4工程里而是在CM0工程里。通过上面的工程,也许已经看出和普通的工程多了mcmgr。
    这个是多核管理中间件。
    9.jpg
    10.jpg
    停止DEBUG后,复位,不能启动CM0核,需要重新上电才能。





    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2017-11-15 10:33
  • 签到天数: 79 天

    连续签到: 1 天

    [LV.6]常住居民II

    89

    主题

    2169

    帖子

    3

    金牌会员

    Rank: 6Rank: 6

    积分
    1779
    最后登录
    2020-8-22
    发表于 2017-6-27 08:39:27 | 显示全部楼层
    赞一个
    签到
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2021-11-30 16:16
  • 签到天数: 206 天

    连续签到: 1 天

    [LV.7]常住居民III

    74

    主题

    2793

    帖子

    5

    金牌会员

    Rank: 6Rank: 6

    积分
    7906
    最后登录
    2025-4-11
    发表于 2017-6-27 09:02:51 | 显示全部楼层
    点赞                           
    来根华子
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-9-21 10:29
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    20

    主题

    98

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    731
    最后登录
    2023-2-2
    发表于 2017-6-27 09:18:48 | 显示全部楼层
    排队点赞
    daka打卡www.nxpic.org.cn
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2019-4-1 22:48
  • 签到天数: 302 天

    连续签到: 1 天

    [LV.8]以坛为家I

    87

    主题

    7322

    帖子

    4

    金牌会员

    Rank: 6Rank: 6

    积分
    4631
    最后登录
    2021-1-25
    发表于 2017-11-29 13:58:42 | 显示全部楼层
    看过了                       
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-2-5 17:05
  • 签到天数: 206 天

    连续签到: 1 天

    [LV.7]常住居民III

    28

    主题

    1814

    帖子

    2

    金牌会员

    Rank: 6Rank: 6

    积分
    5926
    最后登录
    2025-6-26
    发表于 2017-11-29 22:24:59 | 显示全部楼层
    没有啊   
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    82

    帖子

    0

    注册会员

    Rank: 2

    积分
    178
    最后登录
    2018-1-3
    发表于 2017-12-11 17:17:26 | 显示全部楼层
    回复

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-8-31 06:33 , Processed in 0.111586 second(s), 26 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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