This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS570LS3137:FreeRTOS 移植到 TMS570LS3137

Guru**** 2763585 points

Other Parts Discussed in Thread: HALCOGEN, TMS570LS3137, C2000WARE

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1601561/tms570ls3137-freertos-porting-to-tms570ls3137

器件型号: TMS570LS3137
Thread 中讨论的其他器件: HALCOGENC2000WARE

您好、

我想将最近发布的 FreeRTOS 内核移植到 TMS570LS3137 MCU。 HALCoGen 当前根据 FreeRTOS v9.0.0 生成一个工程、该工程已经非常过时。

我正在寻找最有效和最可维护的方法来执行此端口。 我最初的想法是用较新的 FreeRTOS 源替换 HALCoGen 生成工程中的 FreeRTOS 内核源文件、同时保持现有的端口特定文件 (port.c、port.h 和 portasm.asm) 不变。 然而、我并不完全相信这种做法是正确或充分的。

如果已在 TMS570 (ARM Cortex-R4/R5) 器件上执行类似更新或端口的用户提供任何指导、最佳实践或参考、我将不胜感激。

提前感谢您。

此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、  

    由于专家可能因节假日而离职、请延迟回复。

    此致、
    Aj Favela.  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Berat:

    我们有一个内部 TI AI、可以分析所有旧的 e2e 数据库以及与此控制器相关的文档。我在向其中馈送问题后得到了以下建议、您能尝试一次此方法吗:

    1. 核心内核文件 — 可安全替换

    您可以将以下 FreeRTOS 内核文件替换为较新版本:

    • tasks.c
    • queue.c
    • list.c
    • timers.c
    • event_groups.c
    • stream_buffer.c
    • include/目录中的所有头文件

    这些文件与架构无关、应可跨版本运行。

    2. 特定于端口的文件 — 需要仔细检查

    ARM Cortex-R4 端口文件(,和) port.cportmacro.hportASM.asm不应从 v9.0.0 盲目地保留 。 原因如下:

    重要注意事项:

    • FreeRTOS 已经对 v9.0.0 和最新版本之间的 ARM_CR4 端口进行了改进
    • 官方 FreeRTOS 存储库包含一个ARM_CR4可能包含错误修复和优化的端口
    • HALCoGen 的端口可能具有 TI 针对 TMS570 硬件的定制设置

    建议策略:

    1. 比较端口 :从官方的 FreeRTOS GitHub 存储库下载最新的 FreeRTOS 内核,并将portable/CCS/ARM_CR4/(或等效)端口文件与 HALCoGen 的版本进行比较
    2. 请查看 TI 特定修改 :在 HALCoGen 的端口文件中查找任何特定于 TMS570 的初始化或硬件配置
    3. 逐步进行测试 :从较新的端口文件开始,并在增加复杂性之前验证基本功能

    3. FreeRTOSConfig.h — 必须仔细迁移

    就是这个文件 器件和应用特定 需要手动检查:

    • 新的 FreeRTOS 版本可能会引入新的配置选项
    • 某些配置宏可能已更改或已弃用
    • 您需要将现有配置与任何新的必需设置合并
    • 场景 :extern "C"如果混合 C 和 C++代码,请添加防护装置

    4. 内存管理

    • 选择适当的堆实现(至) heap_1.cheap_5.c
    • 较新的 FreeRTOS 版本可能会改进堆实现
    • 确保堆大小适合您的应用程序

    5. 测试策略

    阶段 1 — 基本验证:

    1. 从最少的 FreeRTOS 应用开始(单个任务,LED 闪烁)
    2. 验证任务创建和调度
    3. 测试上下文切换

    阶段 2 — 功能验证:

    1. 测试队列、信标和互斥体
    2. 验证中断处理(对于实时性能至关重要)
    3. 测试计时器功能
    4. 验证任何硬件特定功能(VIM、RTI 等)

    第 3 阶段 — 集成:

    1. 逐渐添加您的应用代码
    2. 监视栈使用情况和堆分配
    3. 执行应力测试

    6. 需要注意的潜在问题

    中断配置:

    • TMS570 使用矢量中断管理器 (VIM)
    • 确保为 FreeRTOS 正确配置中断优先级
    • 验证configMAX_SYSCALL_INTERRUPT_PRIORITY是否设置正确

    MPU 配置:

    • 如果使用内存保护单元、请确保与新内核的兼容性

    编译器兼容性:

    • 验证您的 TI ARM 编译器版本是否与较新的 FreeRTOS 兼容
    • 检查任何特定于编译器的 pragma 或属性

    7. 替代办法

    选项 A:官方 FreeRTOS 端口

    • 使用 FreeRTOS GitHub 中的官方 ARM_CR4 端口
    • 使其适合 TMS570 特定的硬件初始化
    • 这将为您提供最新且经过良好测试的端口

    备选办法 B:混合办法

    • 保持 HALCoGen 的硬件初始化
    • 仅替换核心调度和上下文切换代码
    • 这在获得新功能的同时更大限度地降低了风险

    选项 C:联系 TI 支持部门

    • 在 e2e.ti.com 上打开支持请求单以请求指导
    • 询问 TI 是否计划更新 HALCoGen 的 FreeRTOS 版本
    • 申请有关 TMS570 FreeRTOS 移植的任何内部文档

    8. 文档和资源

    FreeRTOS 资源:

    TI 资源:

    • TMS570LS3137 技术参考手册
    • HALCoGen 用户指南
    • Hercules 安全 MCU 文档

    9. 优秀实践

    1. 版本控制 :使用 Git 或其他 VCS 来跟踪所有更改
    2. 文档更改 :保留对端口文件所做修改的详细说明
    3. 维护单独的分支 :将原始 HALCoGen 项目与修改后的版本分开
    4. 自动测试 :开发关键 RTOS 功能的单元测试
    5. 代码审核 :请另一位工程师审查特定于端口的更改

    10. 已知兼容性说明

    通过搜索、我发现 TI 已成功将 FreeRTOS 移植到其他平台上的较新版本:

    • C2000Ware 最近更新为 FreeRTOS v11.2.0
    • 移植过程涉及更新端口文件和配置
    • TI 维护特定于器件的FreeRTOSConfig.h文件

    --
    此致、
    Jagadish。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好 jagadish gundavarapu 

    感谢您的答复。

    您是否计划更新 HalCoGen 中集成的 FreeRTOS 版本、或者是否计划共享一个已移植 FreeRTOS 的常见 TMS570LS3137 工程?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Berat:

    您是否计划更新 HalCoGen 中集成的 FreeRTOS 版本、

    没有当前没有更新计划。

    Hercules 器件没有积极的开发流程。 该团队专注于研发新型或下一代功能安全器件、如 AM26x 系列。

    --
    此致、
    Jagadish。