公告

大中华汽车电子生态圈社区并入开发者社区- 更多资讯点击此

Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨,

我可以获得适用于 TC38x COOLDIM_PRG_BOARD的 FreeRTOS 吗?

我遇到了 TC375 的示例代码,但如何使用 TC389 EVB COOLDIM_PRG_BOARD?

 

谢谢 & Regards,

Rakshith

 

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/FreeRTOS-for-Aurix-TC38x-Board/td-p/660535

0 点赞
1 解答
Translation_Bot
Community Manager
Community Manager
Community Manager

你好 @Rakshith_LTTS

感谢你抽出时间上传项目,我现在没有 MCU 来测试代码,但据我所知它看起来不错,所以理论上它应该可以运行但是在运行之前我不能 100% 安全,为此,我需要申请 MCU 或者在另一个 MCU(TC375)上进行测试,但我认为这可能是一个可能的解决方案,

不要声明处理程序:

 

#define TASK_ENCODE_P    (tskIDLE_PRIORITY + 2)
#define TASK_DECODE_P    (tskIDLE_PRIORITY + 1)

void core0_main(void){
.
.
    xTaskCreate(task_decode, "DECODE", 512, NULL, TASK_DECODE_P, NULL);
    xTaskCreate(task_encode, "ENCODE", 512, NULL, TASK_ENCODE_P, NULL);
}

 

提高任务的优先级,在本例中为 task_decode

 

void task_decode(void *arg)
{
    app_init();
    while(1)
    {
        IfxPort_setPinLow(LED_D1);
        waitTime(IfxStm_getTicksFromMilliseconds(BSP_DEFAULT_TIMER, 1000));
        IfxPort_setPinHigh(LED_D1);
 vTaskPrioritySet(NULL, TASK_ENCODE_P + 1);
    }
}

 

 

问候!

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/FreeRTOS-for-Aurix-TC38x-Board/m-p/677774

在原帖中查看解决方案

0 点赞
8 回复数
Translation_Bot
Community Manager
Community Manager
Community Manager

@Rakshith_LTTS

你可以将操作系统目录和 FreertosConfig.h 添加到版本中 配置目录中的文件。 要构建它,你需要从构建(或从项目中删除)操作系统/Freertos/Portable/GCC 目录以及 heap_2.c to heap_5.c (该文件夹中的所有文件,除一个文件外)位于 os/Freertos/Portable/memmang 目录中的文件。

最诚挚的问候,

埃里克

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/FreeRTOS-for-Aurix-TC38x-Board/m-p/663302

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨,埃里克,

我可以运行任务,但无法从第二个任务更改第一个任务的优先级。 问题可能是什么?

建议在 AURIX™ TC389 中使用哪种 RTOS?

如果是 FreeRTOS,我在哪里可以获得 FreeRTOS 对进一步开发过程的支持?

 

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/FreeRTOS-for-Aurix-TC38x-Board/m-p/674116

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

@Rakshith_LTTS

你能否分享一下更改优先级时的错误,或者能否澄清一下更改优先级时会发生什么?

AURIX™ 与多个 RTOS 兼容,如此 页面所示。 这将取决于你的需求。

您可以在此 6EDL_SPI_LINK中找到 FreeRTOS 的文档。

最诚挚的问候,

埃里克

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/FreeRTOS-for-Aurix-TC38x-Board/m-p/675241

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

你好 @Rakshith_LTTS

正如 @Erick_G 所说,需要更多的信息才能帮助你,但我认为你不知道配置的重要参数,这就是你无法确定优先级的原因,只有在使用抢占式调度程序时你才能更改任务的优先级,否则会有所不同,

因此,让我们一步一步来,

第一步:

要检查您使用的是抢占式调度器还是协作式调度器,请查看 FreeRTOSConfig.h 文件并 TESTBOARD_150PC_OUT 查找

 

#define configUSE_PREEMPTION

 

如果设置为(等于 1),则表示它是先发制人,因此优先级较高的任务将控制 CPU

如果未设置(等于 0),则表示它是合作的,因此任务必须让步才能释放 CPU,

第 2 步:

现在您知道要使用哪个 RTOS 调度器来更改优先级,如下所示:

对于先发制人,优先级是在创建任务时定义的,要创建任务,原型是:

 

BaseType_t xTaskCreate( TaskFunction_t pvTaskCode, const char * const pcName, configSTACK_DEPTH_TYPE usStackDepth, void *pvParameters, UBaseType_t uxPriority, TaskHandle_t *pxCreatedTask );

 

ubaseType_T UXPriority <-这定义了优先级

示例:

 

xTaskCreate(test, "Test task", configMINIMAL_STACK_SIZE, NULL, 1, NULL);

 

测试 <-函数指针

" 测试任务 " <-调试时很有用

configminimal_stack_size <-堆栈大小

NULL <-参数(我们不会向任务发送数据)

1 <-这个定义了优先级

NULL <-处理器

现在,如果它是合作调度器,则根本没有优先级,当你完成当前任务时,你可以使用 TaskYield

第 3 步:

检查 TESTBOARD_150PC_OUT Erick_G发布的 6EDL_SPI_LINK 。

问候!

 

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/FreeRTOS-for-Aurix-TC38x-Board/m-p/675321

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

嗨,

感谢您的快速回复。

如果有 2 个任务我无法使用 vtaskPrioritySet () 函数从第一个任务增加第二个任务的优先级,我就会面临这个问题。

不是增加第二个任务的优先级,而是只增加第一个任务的优先级。 我将第二个任务处理程序和优先级作为参数传递。

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/FreeRTOS-for-Aurix-TC38x-Board/m-p/675393

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

你好 @Rakshith_LTTS

好的,所以你检查了那是一个抢占式调度器 RTOS,优先级没有改变,为了能够更快地帮助你,请分享你正在使用的代码,现在我假设你使用了 vtaskPrioritySet 页面的代码,也请分享 Freer tosConfig.h 的实际内容,看看它是否不是堆栈问题。

问候!

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/FreeRTOS-for-Aurix-TC38x-Board/m-p/675860

0 点赞
lock attach
Attachments are accessible only for community members.
Translation_Bot
Community Manager
Community Manager
Community Manager

@David_R

请查找 TC389 控制器的 FreeRTOS 项目的附件。

谢谢,

Rakshith

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/FreeRTOS-for-Aurix-TC38x-Board/m-p/677318

0 点赞
Translation_Bot
Community Manager
Community Manager
Community Manager

你好 @Rakshith_LTTS

感谢你抽出时间上传项目,我现在没有 MCU 来测试代码,但据我所知它看起来不错,所以理论上它应该可以运行但是在运行之前我不能 100% 安全,为此,我需要申请 MCU 或者在另一个 MCU(TC375)上进行测试,但我认为这可能是一个可能的解决方案,

不要声明处理程序:

 

#define TASK_ENCODE_P    (tskIDLE_PRIORITY + 2)
#define TASK_DECODE_P    (tskIDLE_PRIORITY + 1)

void core0_main(void){
.
.
    xTaskCreate(task_decode, "DECODE", 512, NULL, TASK_DECODE_P, NULL);
    xTaskCreate(task_encode, "ENCODE", 512, NULL, TASK_ENCODE_P, NULL);
}

 

提高任务的优先级,在本例中为 task_decode

 

void task_decode(void *arg)
{
    app_init();
    while(1)
    {
        IfxPort_setPinLow(LED_D1);
        waitTime(IfxStm_getTicksFromMilliseconds(BSP_DEFAULT_TIMER, 1000));
        IfxPort_setPinHigh(LED_D1);
 vTaskPrioritySet(NULL, TASK_ENCODE_P + 1);
    }
}

 

 

问候!

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/AURIX/FreeRTOS-for-Aurix-TC38x-Board/m-p/677774

0 点赞