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.

[参考译文] MSP430FR2355:ROM 驱动程序

Guru**** 2527070 points
Other Parts Discussed in Thread: MSP430FR2355, FFTLIB

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1008852/msp430fr2355-rom-driver

器件型号:MSP430FR2355
主题中讨论的其他器件: MSP430WAREFFTLIB

好的、我对 MSP430FR2355中的 ROM 驱动程序有疑问。

我使用此 MSP 和 IAR Embedded Workbench。

此 MSP430具有只读 ROM。 我认为这一领域包括驾驶员。 默认示例代码不会自动使用、对吧?  

因此、我搜索了该驱动程序、并在 MSP430WARE 中找到它。

MSP430WARE 具有驱动程序的源文件和包含文件。

我可以在我的环境中使用这些文件。 并且可以调用"ROM_"函数、但函数地址的代码全为零。 我认为这是因为我使用了 IAR 仿真器。

我要搜索驱动程序的 ROM 映像。 如果可能、我还希望拥有正确的链接器文件(xcl)。

对于另一个 MSP430系列、ROM 映像似乎包含在 MSP430WARE 中。

 示例:slau574k.pdf MSP432 P.22

我找不到有关 MSP430FR2355的上述示例的任何文档。
此外、我在 MSP430WARE 中找不到该微控制器的任何 ROM 映像。  我还希望得到确切的 xcl 文件。

请告诉我在哪里找到它。

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

    Yutaka 您好!

    问得好、是的、如果您使用的是 IAR 仿真器、它将无法工作。

    但首先、对于本帖子的其他读者、我将解释在哪里可以找到这些信息。

    当您下载 MSP430WARE 时、默认情况下、它安装在您的 PC 上、地址为 C:\ti\msp430ware_3_80_13_03 (这是我安装的、您的可能有所不同)。

    导航至目录路径 C:\ti\msp430ware_3_80_13_03\driverlib\driverlib\MSP430FR2xx_4xx

    在这里、您可以找到 MSP430FR2xx_4xx 系列 MCU 的 driverlib 源文件。

    查找文件"rom_map_driverlib.h"这是所有 ROM 函数的列表。  根据器件的不同、某些函数将包含其 ROM、而其他函数可能不包含。  

    那么、您如何知道每个器件中包含哪些 ROM 函数?  请查看目录路径 C:\ti\msp430ware_3_80_13_03\driverlib\driverlib\MSP430FR2xx_4xx\rom_headers。  在这里、您可以找到各种器件的 ROM_driverlib 文件。

    访问 ROM 函数的方法是使用 rom_map_driverlib.h 中的宏

    让我们看看用于启用 ADC 中断的函数:

    #ifdef ROM_ADC_DisableInterrupt
    #define MAP_ADC_DisableInterrupt                                             \
           ROM_ADC_DisableInterrupt
    其他
    #define MAP_ADC_DisableInterrupt                                             \
           ADC_DisableInterrupt
    #endif

    始终使用以 MAP_开头的宏。  编译器将检查该函数是否存在于器件的 ROM 表中、如果存在、则将使用 ROM_Function 调用。  如果该函数未包含在此器件中、编译器将选择从 driverlib 源代码中拉出的标准函数。

    现在、为了具体回答您有关 IAR 的问题、链接器文件(xcl)将根据您选择的器件自动选择。

    此外、如果您已将 driverlib 目录及其内容添加到项目中、请使用#include 在使用 ROM 函数的文件中、编译器将执行其余操作。

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

    尊敬的 Dennis:

    感谢您的建议。

    我有疑问。

    - xcl 文件

    我在嵌入工作区中将默认 xcl 从 xcl 更改为 xcl。 我已检查该文件。 但我觉得 xcl 文件剂量不会写入20位 ROM 区域地址。

    我可以将此 defaul xcl 用于 ROM 功能吗?

    - IAR 的编译器设置

    我的工作区设置了代码模型、数据模型很小。  它们都必须很大、对吧?

    -ROM 映像

    请查看 msp432上一个 pdf 的第23页。

    我觉得文件设置了 ROM 映像的附加写入选项。 我想为什么 msp430fr2355剂量不包括 msp430ware 中的 ROM 映像?

    在这种情况下以及适当的 xcl 下、我认为 ROM 函数不会是地址异常。 是这样吗?
    当然、由于我使用模拟器、它可能无法工作、并且可能卡在 ROM 函数中的等待函数中。但是、我认为有许多代码只是设置的。  我可以从您那里获得一张图片吗?
    如果没有、我可以通过从微控制器读取 ROM 映像来执行此操作吗?

    -ROM 函数

    TI 制造时嵌入在微控制器中的 ROM 功能是否会突然改变? 我的代码(旧 ROM 代码)是否可以引用其他函数的地址、如果我不知道你们更改了它们吗?

    此致

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


    尊敬的 Dennis:

    您可以在我的问题上方提供支持吗?

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

    Yutaka 您好!

    首先、让我确保我们在这里使用相同的术语。  ROM 是 TI 预编程的"只读存储器"、绝不能修改。  FRAM 是存储器、您可以在其中放置应用代码并根据需要进行修改。

    MSP430Ware 不提供 ROM 映像。 您的大代码和小数据内存模型正确。

    接下来、让我确保我了解您尝试执行的操作...如果您使用的是仿真器(换句话说、您不是对 acutal MSP430进行编程)、则无法实现任何 ROM 功能。  请记住、ROM 函数与您在 driverlib 源文件中看到的 driverlib 函数完全相同。 由于您没有使用实际的 MCU、因此必须编译并链接 driverlib 源代码文件。

    只有在对实际的 MSP430 MCU 进行编程/调试时、才能使用 ROM 函数。

    关于 ROM 函数更改-不能。  ROM 是无法修改的永久存储器。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="451800" URL"~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1008852/msp430fr2355-rom-driver/3729058 #3729058"> TI 制造时嵌入在微控制器中的 ROM 功能是否会突然变化? 我的代码(旧 ROM 代码)是否可以引用其他函数的地址、如果我不知道你们更改了这些地址?

    查看 driverlib/MSP430FR2xx_4xx/ROM_headers/rom_driverlib_fr235x.h、ROM 函数的接口是通过函数指针的查找表。

    其中每个函数的函数指针位于 ROM 中的固定地址。 在运行时、对 ROM 函数的调用读取 ROM 中的函数指针、然后指向 ROM 中函数的实际地址。

    这使得 TI 能够为以后的芯片修订版本修改 ROM 函数、而不会破坏与现有程序的兼容性。  

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

    Yutaka 您好!

    我已经听过你几天了,所以我假设你的问题已经得到了解答。
    如果情况并非如此,请单击“这无法解决我的问题”按钮,并使用更多信息回复此主题。
    如果此主题锁定、请单击"提出相关问题"按钮、然后在新主题中描述您的问题的当前状态以及您可能需要帮助我们帮助解决您的问题的任何其他详细信息。

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

    尊敬的 Dennis:

    如果我们的系统在此 MSP430中不使用 DriverLib 或 FFTLib、我们是否可以将代码模型更改为小型模型?
    我尝试使用 DriverLib、但由于 调用 ROM 函数的开销、ROM 区域增加了...

    或者、调用 ROM 函数时是否会出现错误?

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

    Yutaka 您好!

    是的、您可以切换到小型代码模型。

    关于对 ROM 函数的调用、我不知道您为什么会看到大量开销。  正如 Chester 指出的、使用 rom_driverlib_fr235x.h 文件中定义的函数指针来调用任何 ROM 函数都很简单、或者我不理解您的问题。

    我想我仍然不能完全理解您正在尝试什么。

    让我总结一下我的想法-您可以使用小型代码/数据模型、但您无法调用任何 ROM 函数。  要使用 ROM 函数、必须使用大型代码模型、但请记住、由于编译器使用32位寻址与20位寻址、因此会略微增加代码的整体大小。 使用 ROM 函数不会占用任何 FRAM 空间、因为这些函数位于 ROM 中。  只需包含适当的头文件并调用一个 ROM 函数,例如-rom_adc_getInterruptStatus();

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

    Yutaka 您好!

    我已经听过你几天了,所以我假设你的问题已经得到了解答。
    如果情况并非如此,请单击“这无法解决我的问题”按钮,并使用更多信息回复此主题。
    如果此主题锁定、请单击"提出相关问题"按钮、然后在新主题中描述您的问题的当前状态以及您可能需要帮助我们帮助解决您的问题的任何其他详细信息。