我一直在尝试让一个多核项目为 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_UpdateConfigura
tion(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 主例程结束。不要在下面写代码!!!***/
} /*** 主例程结束。不要修改此文本!!!***/