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.

[参考译文] EK-TM4C1294XL:ROM_SysCtlClockFreqSet (..) 未在 TIVAWARE 2.1.2.156 rom.h 的 driverlib/rom.h 文件中定义

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/580086/ek-tm4c1294xl-rom_sysctlclockfreqset-is-not-defined-in-driverlib-rom-h-file-of-tivaware-2-1-2-156-rom-h

器件型号:EK-TM4C1294XL

你好。

我尝试编译 ROM_SysCtlClockFreqSet (..) 命令使用 driverlib/区域中的 TIVAARE 2.1.2.156 rom.h、但编译器对此定义发出错误。

我签入了 rom.h 文件、并且您可以验证 所需 的#define ROM_SysCtlClockFreqSet (((uint32_t (*)(uint32_t ui32Config、uint32_t ui32SysClock)) ROM_SYSCTLTABLE[48]) 不存在。

如果我只是在该文件中添加类似的定义、它是否正常  

#if defined (target_IS_TM4C129_RA0)|| Defined (target_IS_TM4C129_RA1)|| Defined (target_IS_TM4C129_RA2)

    #define ROM_SysCtlClockFreqSet (((uint32_t (*)(uint32_t ui32Config、uint32_t ui32SysClock)) ROM_SYSCTLTABLE[48])

#endif

谢谢、

John

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 John:
    不、您不能这样做。 弃用映射到 ROM_SYSCTLTABLE[48]的任何内容。 我甚至不知道 ROM_SYSCTLTABLE[48]处的函数指针是什么。 如何使用 ROM_SYSCTLTABLE[48]? 有时可能有一个 SysCtlClockFreqSet 的 ROM_版本、但它被删除的原因很可能是由错误引起的、因此被删除的原因也是如此。 请改用 MAP_SysCtlClockFreqSet(),因为这是确保使用正确的驱动程序 API 的最安全方法。 如果未找到 ROM 版本、映射版本将自动解析为 SysCtlClockFreqSet()。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    明白
    非常感谢 Charles。
    John
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Tiva C 系列 TM4C129x ROM 用户指南(SPMU363)文档 Charles 在第461 - 17.2.1.2页中明确声明此 ROM 函数可正常使用。 是否有任何更新版本的 ROM 用户指南文档? 谢谢。 John
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 John:
    我只是读取它并且仍然看到 ROM_SysCtlClockFreqSet()。 正确的做法是将其映射到 ROM_SYSCTLTABLE[48]。 ROM 用户指南上次更新时间为2014年5月。 它可能与支持 ROM_SysCtlClockFreqSet()的最新 TivaWare 版本不同。 我将使用 TivaWare 版本。 这就是我们建议使用 MAP_实现更好的便携性的原因。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Charles。 它实际上已折旧了 ROM 函数。 在 Tiva 固件开发包2.1.3.156版本的 BL_EMAC.c 闪存文件内、虽然这个 ROM 函数被明确定义、但是它前面的文本建议、除非正确调整所需的寄存器。 几乎总是会出现无法预见的可用功能的使用会导致混乱的情况。 我建议 TI Cortex-M 或其他处理器的设计人员在每个 IC 设计上省去两个引脚、以便在固件开发人员跳过这两个引脚后、允许在特定过程中更新 ROM。 Cortex-M4系列中某些未记录的功能可能允许对芯片进行此类处理、但这可能仅供 TI 内部使用。 我不知道... 总之、非常感谢您迄今提供的所有帮助。 John
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 John:

    我不是很了解您使用两个跳线引脚进行 ROM 更新的意思。 更新 ROM 需要在接触级别上进行标定(又称为遮罩)更改。 这是一个器件变化、这就是我的意思。 但是、对于可能使您感到困惑的不一致文档、我要表示歉意。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好,查尔斯 只是一项建议,实际上并不重要。 我只是想一个可能的软件工具、例如 LM 闪存编程器和一种硬件驱动方法、假设两个特殊芯片的引脚在跳线时允许对 ROM 区域进行重新编程。 BIOS 升级。 总之、非常感谢。 John
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 John:
    没问题。 不过、感谢您的建议。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Charles。 顺便说一下,在 TivaWare 实用程序库2.1.3.156的第168页,在“以太网软件更新模块”的编程示例中,SoftwareUpdateBegin(...)的调用 由于缺少参数(ui32SysClock)、函数似乎错误。 谢谢你。 John
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 John:
    我刚才也看到了。 感谢您的报告。 不过、我不确定是否以及何时会对文档进行另一次更新。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Charles 在以下引导加载情形中需要您的帮助:
    a)德州仪器 github.com/.../boot_demo_flash.c 上描述的以太网闪存引导加载方法 似乎可以正常运行,但我不清楚引导加载程序在控制现有主固件应用程序(如果没有进行引导加载,则启动@ 0x4000)之前将等待多少时间。
    b)假设我的应用程序现在从作为主应用程序一部分运行的 TCPSERVER 接收到一条特定的消息。 说"start_bootload"。 然后、我的应用程序在特定的 EEPROM 位置写入"1"并重新引导电路板。
    c) A)处代码的细微修改是、启动时代码会读取该特定 EEPROM 位置、如果找到该位置、则"1"会使其变为"0"、然后等待接收固件数据、这样我就可以开始通过以太网发送新的 bin 文件。 如果在 EEPROM 位置找到"0"、则只需将控制权传递给0x4000处的主应用程序。
    问题1:此方案能否正常工作?
    问题2:如果我在引导加载例程中为电路板分配了特定的内部 IP、端口、子网和网关、并为路由器配置了 NAT、我可以通过互联网执行此更新吗?
    QUESTION3:我可以使用 LM 闪存编程器或其他工具、还是使用我有代码将 bin 发送到远程板的任何普通 TFTP 客户端?
    (如果是我的 TFTP 客户端,我知道我必须发送魔术包,或者我可以绕过此过程,前提是我还修改了 A 上的代码),以便在进入 void JumpToBootLoader(void)例程之前不检查魔术包?)
    非常感谢、
    John