NXP MCU 技术论坛
直播中

廉鼎琮

7年用户 945经验值
私信 关注
[问答]

当我启动Z4_1时,核心Z4_0停止运行怎么解决?

我一直在尝试让一个多核项目为 MPC5748G 工作。我能够让它运行。然后我将 FreeRTOS 添加到 Z4_0 内核。那是我的麻烦开始的时候。使用调试器时,我可以毫无问题地启动 Z4_0 和 Z2 内核。当我开始运行 Z4_1 核心时,它会杀死 Z4_0 核心。你知道什么会导致这个吗?我附上了我的项目,因为我不知道需要更改什么以防止这种情况发生。

Z4_0 代码
void OPT_Main(void *pvParameters)
{
  为了(;;)
  {
    //v任务延迟(100);
    延迟(1800000);
    PINS_DRV_TogglePins(PTJ,(1 << 4));
  }

}

/*!
  brief 项目的主要功能。
  details 启动初始化顺序如下:
* - 启动 asm 例程
* - 主要的()
*/
int 主要(无效)
{
  /* 在这里写下你的局部变量定义 */

  /*** Processor Expert 内部初始化。不要删除此代码!!!***/
  #ifdef PEX_RTOS_INIT
    PEX_RTOS_INIT(); /* 所选 RTOS 的初始化。宏由 RTOS 组件定义。*/
  #万一
  /*** 处理器专家内部初始化结束。***/

  status_t ret = STATUS_ERROR;

  // 初始化和配置时钟
  ret = CLOCK_SYS_Init(g_clockManConfigsArr, (uint8_t)CLOCK_MANAGER_CONFIG_CNT, g_clockManCallbacksArr, (uint8_t)CLOCK_MANAGER_CALLBACK_CNT);
  DEV_ASSERT(STATUS_SUCCESS == ret);

  ret = CLOCK_SYS_UpdateConfiguration(0U, CLOCK_MANAGER_POLICY_AGREEMENT);
  DEV_ASSERT(STATUS_SUCCESS == ret);

  PINS_DRV_Init(NUM_OF_CONFIGURED_PINS,g_pin_mux_InitConfigArr);

  (无效)ret;

  // 开始主任务。该任务负责启动核心Buoy任务和其他基于类型的任务
  // 浮标单位设置为。
  xTaskCreate(OPT_Main,
             (const char *const)MAINTASK_TASK_NAME,
                      配置MINIMAL_STACK_SIZE,
             无效的,
             MAINTASK_TASK_PRIORITY,
             无效的);

  // 启动调度器。
  vTaskStartScheduler();

  /* 在这里写你的代码 */
  /* 例如:for(;;) { } */


  /*** 不要写任何经过这一行的代码,否则它会在代码生成时被删除。***/
  /*** 实时操作系统启动代码。宏 PEX_RTOS_START 由 RTOS 组件定义。不要修改此代码!!!***/
  #ifdef PEX_RTOS_START
    PEX_RTOS_START(); /* 启动选定的 RTOS。宏由 RTOS 组件定义。*/
  #万一
  /*** RTOS 启动代码结束。***/
  /*** Processor Expert 主例程结束。不要修改此代码!!!***/
  为了(;;) {
    如果(退出代码!= 0){
      休息;
    }
  }
  返回退出代码;
  /*** Processor Expert 主例程结束。不要在下面写代码!!!***/
} /*** 主例程结束。不要修改此文本!!!***/

Z4_1代码
int 主要(无效)
{
  /* 在这里写下你的局部变量定义 */

  /*** Processor Expert 内部初始化。不要删除此代码!!!***/
  #ifdef PEX_RTOS_INIT
    PEX_RTOS_INIT(); /* 所选 RTOS 的初始化。宏由 RTOS 组件定义。*/
  #万一
  /*** 处理器专家内部初始化结束。***/

  AXBS_0->端口[3].CRS = AXBS_CRS_ARB(1) | AXBS_0->端口[3].CRS;
  //.B.ARB = 1;

  PINS_DRV_Init(NUM_OF_CONFIGURED_PINS,g_pin_mux_InitConfigArr);

  /* 在这里写你的代码 */
  /* 例如:for(;;) { } */

  为了(;;)
  {
    延迟(1800000);
    PINS_DRV_TogglePins(PTA,(1 << 0));
  }

  /*** 不要写任何经过这一行的代码,否则它会在代码生成时被删除。***/
  /*** 实时操作系统启动代码。宏 PEX_RTOS_START 由 RTOS 组件定义。不要修改此代码!!!***/
  #ifdef PEX_RTOS_START
    PEX_RTOS_START(); /* 启动选定的 RTOS。宏由 RTOS 组件定义。*/
  #万一
  /*** RTOS 启动代码结束。***/
  /*** Processor Expert 主例程结束。不要修改此代码!!!***/
  为了(;;) {
    如果(退出代码!= 0){
      休息;
    }
  }
  返回退出代码;
  /*** Processor Expert 主例程结束。不要在下面写代码!!!***/
} /*** 主例程结束。不要修改此文本!!!***/


Z2_2代码

int 主要(无效)
{
  /* 在这里写下你的局部变量定义 */

  /*** Processor Expert 内部初始化。不要删除此代码!!!***/
  #ifdef PEX_RTOS_INIT
    PEX_RTOS_INIT(); /* 所选 RTOS 的初始化。宏由 RTOS 组件定义。*/
  #万一
  /*** 处理器专家内部初始化结束。***/

  PINS_DRV_Init(NUM_OF_CONFIGURED_PINS,g_pin_mux_InitConfigArr);

  /* 在这里写你的代码 */
  /* 例如:for(;;) { } */

  为了(;;)
  {
    延迟(1800000);
    PINS_DRV_TogglePins(PTA,(1 << 4));
  }


  /*** 不要写任何经过这一行的代码,否则它会在代码生成时被删除。***/
  /*** 实时操作系统启动代码。宏 PEX_RTOS_START 由 RTOS 组件定义。不要修改此代码!!!***/
  #ifdef PEX_RTOS_START
    PEX_RTOS_START(); /* 启动选定的 RTOS。宏由 RTOS 组件定义。*/
  #万一
  /*** RTOS 启动代码结束。***/
  /*** Processor Expert 主例程结束。不要修改此代码!!!***/
  为了(;;) {
    如果(退出代码!= 0){
      休息;
    }
  }
  返回退出代码;
  /*** Processor Expert 主例程结束。不要在下面写代码!!!***/
} /*** 主例程结束。不要修改此文本!!!***/

更多回帖

发帖
×
20
完善资料,
赚取积分