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.

[参考译文] TMDXRM46HDK:RM46x HDK 在具有 CAN1通信的 FreeRTOS 中尚未成功

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/608552/tmdxrm46hdk-rm46x-hdk-not-yet-successful-in-freertos-with-can1-communication

器件型号:TMDXRM46HDK
主题中讨论的其他器件:HALCOGEN

我们有一个 RM46 HDK、它在我们的通信测试设置中起作用、可运行演示工具的演示功能。

我需要证明与 CAN 和 J1939相关的多个固件功能的功能。

我从 RM48的 FreeRTOS 9.0演示开始。  这是一个很好的起点、可以证明演示在我们的 RM46 HDK 板上工作正常。

我未成功使 CAN1运行。  我现在将放弃这种方法、并从 HalCoGen 开始。  我已经下载了最新版本、并希望在今天安装。

很高兴获得已经这样做的人的任何输入(使用 HalCoGen 准备 RM46 HDK 以与 FreeRTOS 配合使用并支持 CAN1)。

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

    您似乎在同一或类似主题上有多个主题。 我们是否可以关闭其他线程并专注于这个线程?

    因为您使用的 FreeRTOS 版本比 HalCoGen 支持的版本更新。 您能否先尝试 HalCoGen CAN 示例独立运行以确保驱动程序有效运行、然后使用相同的驱动程序移动到 HalCoGens FreeRTOS、再转到更新版? 在确定驱动程序问题与集成问题之间、这种方法似乎更简单。

    此外、您使用哪些工具来调试 CAN 总线? 您是否正在使用 CANalyzer 工具、NI 工具...?

    总线上的每个节点是否都有正确的端接电阻? 稳健的通信和双绞线布线都需要这些电缆。

    您是否能够确认总线上其他节点的可靠通信? 您之前提到过扩展 CAN 与标准 CAN 帧。 是否已了解此处理方法?

    您使用了什么作为验收掩码? 您是否确定已设置接收预期消息的设置?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    关闭较旧的帖子是很好的、因为我将放弃修复它的方式、而我一直在尝试。

    我可以尝试使用较旧的 FreeRTOS 版本和 HalCoGen。 我应该安装最新的 HalCoGen 吗?

    我使用的 PC 具有 IXXAT USB CAN 器件和峰值 USB CAN 器件。

    我已确认通信网络接线和电阻终端器。 网络可以使用演示工具的固件运行。 我对 USB 工具和工具的 CAN 网络操作非常有信心。

    我对帧和扩展帧的问题与其他硬件上的工作有关、在其他硬件上使用了两个邮箱来覆盖这两种 RX。

    非常有趣、我刚才检查了固件中的掩码值都是0x0。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    周结束状态:已安装新的 HalCoGen。  构建并下载了用于 FreeRTOS 的 RM46 ZWT (CHIP 标记为 ZWTT)。 我已使用演示工具下载证明 CAN 通信线路正常工作。 我基于 HalCoGen 的构建实际上没有看到 CAN 帧。 我将在星期一再接回来。

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

    好的、这是星期一。  

    基于对类似问题的帖子中的评论和讨论、我已经能够获得具有可确认结果的 RM46 HDK 发送和接受 CAN1帧。  这些良好的结果是由于在 HalCoGen 4.6.1中使用了正确的[activate]、[enable]和[MASK]值。

    e2e.ti.com/.../1032814 CAN1#pi239031350=2

    这在使用 FreeRTOS 方面还没有进展、但我希望这是一个进步。

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

    当您在 FreeRTOS 实施过程中遇到问题时、请返回到此主题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    午餐后的星期一。

    根据类似的帖子中的评论和讨论以及类似的 CAN ISR 问题、我已经获得了 RM46 HDK 来利用 VIM 和 ISR 设置。 这些结果是由于在 CANMsg1和 CANMsg2中使用了正确的 VIM 设置、并且启用了 CAN1_High、CAN1_Low 和 CAN1_IF3。

    e2e.ti.com/.../176797

    仍然没有完全成功、因为我需要将 FreeRTOS 引入此评估项目。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    星期二。

    添加了包含基本 FreeRTOS 示例代码的代码。 现在尝试调试失败。 下面是详细的调试日志、是否知道为什么会进行复位?

    CortexR4:GEL 输出:闪存的存储器映射设置@地址0x0CortexR4:GEL 输出:由于系统复位、闪存的存储器映射设置@地址0x0
    CortexR4:写入 Flash @地址0x00008020、长度0x00007ff0
    CortexR4:擦除闪存组0、扇区0
    CortexR4:擦除闪存组0、扇区1
    CortexR4:擦除闪存组0、扇区2
    CortexR4:擦除闪存组0、扇区3
    CortexR4:擦除闪存组0、扇区4
    CortexR4:擦除闪存组0、扇区5
    CortexR4:擦除闪存组0、扇区6
    CortexR4:擦除闪存组0、扇区7
    CortexR4:擦除闪存组0、扇区8
    CortexR4:擦除闪存组0、扇区9
    CortexR4:擦除闪存组0、扇区10
    CortexR4:擦除闪存组0、扇区11
    CortexR4:擦除闪存组0、扇区12
    CortexR4:擦除闪存组0、扇区13
    CortexR4:擦除闪存组0、扇区14
    CortexR4:擦除闪存组0、扇区15
    CortexR4:擦除闪存组7、扇区0
    CortexR4:擦除闪存组7、扇区1
    CortexR4:擦除闪存组7、扇区2
    CortexR4:擦除闪存组7、扇区3
    CortexR4:验证 Flash @地址0x00008020的长度0x00007FF0
    CortexR4:写入 Flash @地址0x00010010、长度0x00007ff0
    CortexR4:验证 Flash @地址0x00010010的长度0x00007FF0
    CortexR4:写入 Flash @地址0x00018000、长度0x00007ff0
    CortexR4:验证闪存@地址0x00018000的长度0x00007FF0
    CortexR4:写入 Flash @地址0x0001fff0、长度0x00005860
    CortexR4:验证闪存@地址0x0001FFF0、长度为0x00005860
    CortexR4:GEL 输出:由于系统复位、闪存@地址0x0的存储器映射设置
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尼尔

    我已要求我们的 halCoGen 和 FreeRTOS 专家也查看您的帖子、以查看是否有任何建议或指导可以帮助您在 HalCoGen 支持的版本上启动和运行。 希望他们能够在一个晚上的某个时间回复您、因为他们位于不同的时区。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢你。

    以下是与同一构建不同的日志(已修改设置、但未修改代码)

    CortexR4:GEL 输出:闪存的存储器映射设置@地址0x0CortexR4:GEL 输出:由于系统复位、闪存的存储器映射设置@地址0x0
    CortexR4:写入 Flash @地址0x00008020、长度0x00007ff0
    CortexR4:擦除闪存组0、扇区2
    CortexR4:擦除闪存组0、扇区3
    CortexR4:擦除闪存组0、扇区4
    CortexR4:验证 Flash @地址0x00008020的长度0x00007FF0
    CortexR4:写入 Flash @地址0x00010010、长度0x00007ff0
    CortexR4:擦除闪存组0、扇区5
    CortexR4:验证 Flash @地址0x00010010的长度0x00007FF0
    CortexR4:写入 Flash @地址0x00018000、长度0x00007ff0
    CortexR4:擦除闪存组0、扇区6
    CortexR4:验证闪存@地址0x00018000的长度0x00007FF0
    CortexR4:写入 Flash @地址0x0001fff0、长度0x00005860
    CortexR4:擦除闪存组0、扇区7
    CortexR4:验证闪存@地址0x0001FFF0、长度为0x00005860
    CortexR4:GEL 输出:由于系统复位、闪存@地址0x0的存储器映射设置
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    也许是一个信息更丰富的日志!

    CortexR4:擦除闪存组0、扇区14
    CortexR4:验证 Flash @地址0x000F8630的长度0x00007FF0
    CortexR4:写入 Flash @地址0x00100620、长度0x00007ff0
    CortexR4:验证闪存@地址0x00100620的长度0x00007FF0
    CortexR4:写入 Flash @地址0x00108610、长度0x00007ff0
    CortexR4:验证 Flash @地址0x00108610的长度0x00007FF0
    CortexR4:写入 Flash @地址0x00110600、长度0x00007ff0
    CortexR4:验证闪存@地址0x00110600的长度为0x00007FF0
    CortexR4:写入 Flash @地址0x001185f0、长度0x00007ff0
    CortexR4:擦除闪存组0、扇区15
    CortexR4:验证闪存@地址0x001185F0、长度为0x00007FF0
    CortexR4:写入 Flash @地址0x001205e0、长度0x00007ff0
    CortexR4:验证 Flash @地址0x001205E0的长度0x00007FF0
    CortexR4:写入 Flash @地址0x001285d0、长度0x00007ff0
    CortexR4:验证 Flash @地址0x001285D0、长度0x00007FF0
    CortexR4:写入 Flash @地址0x001305c0、长度0x00007ff0
    CortexR4:验证闪存@地址0x001305C0的长度0x00007FF0
    CortexR4:写入 Flash @地址0x001385b0、长度0x00007ff0
    CortexR4:文件加载程序:存储器写入失败:地址0x14059f 不映射到有效的闪存组
    CortexR4:GEL:文件:C:\Users\994607\workspace_v7\NeilRM46\Debug\NeilRM46.out:加载失败。
    CortexR4:GEL 输出:由于系统复位、闪存@地址0x0的存储器映射设置
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尼尔

    这通常表示 CCS 存储器映射已通过脚本文件更改、或者在设置调试器/仿真器时选择了不正确的目标配置。 您能否在目标配置窗口下检查此项、以确保其适用于您正在使用的器件?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我认为存储器命令文件问题已经解决、但在尝试调试时、核心问题仍在发生。

    CortexR4:GEL 输出:由于系统复位、闪存@地址0x0的存储器映射设置
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    星期四上午更新:

    经过几个小时的构建和比较地图文件、找到了一些有用的东西和一些不起作用的东西、我就能够进行调试了。 我将报告使 CAN1启用 FreeRTOS 运行的进度。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    星期四更新:

    FreeRTOS 计时器不像我在另一个构建中看到的那样运行。 HalCoGen 中是否有我必须做的事情来支持 FreeRTOS 定时器?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Neil、

    在 HALCoGen 中、我们有单独的 FreeRTOS 和 CAN 示例。
    您是否成功地在电路板中完成了这两项工作?

    FreeRTOS 端口使用 RTI1模块进行计时器配置。

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

    使用基本的 HalCoGen RM46L852ZWT 示例、我能够成功构建和下载 CAN 和 CAN 中断的示例。 这两个文件似乎都生成 FreeRTOS 8.2代码文件。

    我将查看 RTI1模块。

    我一定会阅读示例中的说明、并告诉您我是否遇到过任何问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在 HalCoGen 示例中、哪个函数告诉我到达邮箱的 CAN 帧的 DLC?