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.

[参考译文] MSP430FR2676:CapTIvate 项目(gt;32KB)不适用于 FRAM

Guru**** 2538930 points
Other Parts Discussed in Thread: MSP430FR2676

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1062165/msp430fr2676-captivate-project-32kb-does-not-fit-in-fram

器件型号:MSP430FR2676

您好!

对于一个项目、我们使用 MSP430FR2676微控制器、该微控制器具有64KB FRAM (拆分在 FRAM 和 HIFRAM 中)。 项目本身由最多占用18K 内存的代码组成。 我们现在开始集成 TI CapTIvate 库并开始配置该项目。 "-mlarg"标志是库所必需的、因此启用了该标志、这最终还会占用一些额外的存储器、高达20K。 现在、我们要指出、它不适合存储器、因为预编译的"captate_fr2676_family.lib"已经是14KB。 因此、我们考虑使用 HIFRAM 组来完全使用64KB 的存储器。

我们找到了很多有关 FRAM 存储器配置的设置、尤其是在 www.ti.com/.../slau646f.pdf 第31页上看到了编译器用户手册。

我们尝试的操作如下:
-使用编译器标记 mcode-region=lower mdata-region=none、在编译时、它会给出它将不适合区域'FRAM'、并且'FRAM'溢出 x 量的字节。
-使用编译器标记 mcode-region=none mdata-region=lower、在编译时、它会给出它不会适应区域'FRAM'、并且'FRAM'会溢出 x 量的字节。
-使用编译器标志 mcode-region= mdata-region=或者、在生成时、它会针对不同的 Capt 函数多次发出以下警告:"/opt/GCC-MSP/msp430-gcc-9.3.1.2.1.2/bin/./.lib/gcc/msp430-elf/9.3.1/./././.apertstatus.text:msp430-element_em.et_status.text 段中的"MaxElement_get.et_umentr.et.etstatement./msp430-el./msp430-el.em.em.em.em.et.et.et.emt.emt./msp4t.em.em.et.et.et.text 段中、需要在"MSP430 它还`了以下错误:"`节中引用的"_mspabi_srli"。或者.text:_deps/captatelib-src/scaptated/base/libraries/captate_fr2676_family.lib (CAPT_Touch.o)中的"Capt_updateSensorCount":在丢弃的节` 1.text/captive/mctri_mspi_1.3b./lib/msp430/mctri_lib-range.htm/lib-mctri_mctri_lib_lib_1.2/mctrin.html/tli_tli_lib.htm.htm.html/lib_lib-range.htm.html/lib_lib_lib_lib_lib_lib.html/

我们使用以下版本的编译器和库:
- TI CapTIvate 库1.83.00.05 (2020年5月15日发布)
- TI Driverlib 2.91.13.01
- MSP430-gcc 9.3.1.11编译器(Mitto Systems Limited)

在尝试不同的设置时、提出了一些问题。 请在下面找到它们:
1.这是如何用于更大内存占用量(>32KB)的项目的?
2.是否可以扩展/组合 LD 文件中的 FRAM 部分和 HIFRAM 部分? 例如、之间也有中断向量(请参阅随附的 LD 文件)
3.标志 mcode-region/mdata-region 的值'ise'是如何工作的? 它似乎会在不同区域之间随机播放数据、但随机播放的数据之间的链接是什么。 请参阅附件 memory_layout_oe.txt、它似乎在 FRAM 中放置了一些数据、在 HIFRAM 中放置了一些数据。
4.由于库是使用.lower 前缀进行预编译的、并且应始终放置在较低的 FRAM 中、因此似乎无法将标记 mcode-region/mdata-region 设置为任一个、这是否正确?
5.是否可以只使用 ROM CapTIvate 代码?
6.是否有 ROM 迷住代码的描述?

我希望解释清楚,有人可以回答。 如有问题、请随时与我联系。

此致、
Randy


e2e.ti.com/.../build_5F00_output_5F00_either.txte2e.ti.com/.../memory_5F00_layout_5F00_either.txte2e.ti.com/.../msp430fr2676.ld.txt

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

    您好、Randy、

    CapTIvate 库占用14K 的存储器似乎非常奇怪。  该库的大部分内容实际上已预先编程到 MSP430的 ROM 存储器中、因此只有几个更高级别的函数可能从.lib 中被拉入。  由 CapTIvate 设计中心生成的典型应用仅使用2-3K 的 FRAM。  所有其他函数调用都来自 ROM。  例如、查看 这些存储器大小基准。

    为了使用 ROM 函数,需要在项目中包含一些 ROM 头文件,所有函数调用都应该是 MAP_CAPT..... 链接器将使用 ROM 头文件来了解是从.lib 中提取函数还是访问 ROM 函数。

    请检查 CapTIvate 设计中心安装随附的任何示例项目文件、以了解库和 ROM 头文件的放置方式。

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

    尊敬的 Dennis:

    感谢您的回答。 我们已经研究了您的建议。

    我们通过插入"#error "ROM code selected"来验证 ROM 代码在 rom_map_captivate.h 头文件中选择了正确的调用、从而检查了这些方法是否真正用于 ROM 代码。
    然后我们还检查了哪些方法未从 ROM 代码中查找,这些方法是:CAPT_INIT()、CAPT_selectInputImpedanceBiasCurrent()、CAPT_initSensor()、CAPT_calibrateSensor()。
    我们认为这是正确的、因为它们不是 rom_captivate_mspfr2676_family.h 头文件的一部分、因此未定义。

    我们从示例 CapTIvate 项目中进行了检查、并发现应从 captate_fr2676_family.lib 文件中使用的对象为 CAPT_Calibration.o (1372字节)、CAPT_HAL.o (176字节)、CAPT_Touch.o (120字节)。 这将总共为1668个字节。

    通过这些信息、我们查看了我们的项目、并在这些文件所引用的映射文件中看到了这些文件。 我们认为所有未使用的数据仍将包含在二进制文件中。 为了防止这种情况发生、我们添加了标记"-ffunctions-sections"、"-Fdata-sections"和"-WL、-gC-sections "来丢弃/卡贝奇收集程序中未使用的函数和数据、如《MSP430 GCC 用户指南》(slau646f.pdf)中所述。 但是、当应用此标志时、它不会从二进制文件中删除.lib 文件的任何符号(如 CAPT_trackpad.o、CAPT_slides.o 等)、但它仍然包含完整文件。

    您是否知道 captate_fr2676_family.lib 文件是否也使用"-ffunctions-sections "和"-Fdata-sections "进行编译? 或者、您是否有其他想法、为什么这仍然包含在二进制文件中?

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

    您好、Randy、

    好的、我被告知这些库仅支持 CCS 和 IAR、而不支持 GCC。  您必须从源代码重建库、但我们从未这样做、因此无法保证它在不修改库代码的情况下工作。

    我可以看到有关为您提供源代码的信息、但此时您是自己的、我们无法支持您在使用 GCC 的软件库中遇到的任何问题。

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

    您好 Dennis、

    我们已经对这个答案有点担心、因为我们正在寻找一个定制实现。 我们想尝试使用 MSP-GCC 编译器编译这些文件。 我们如何检索/传输文件? 执行此邮件是否有用?

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

    您好、Randy、

    由于您现在已经拥有了库源代码、我将假定您能够继续进行您的项目。
    我将此帖子标记为已解决,但如果不是这种情况,请单击“这不能解决我的问题”按钮,并使用更多信息回复此主题。
    如果此主题已锁定、请单击"提出相关问题"按钮、然后在新主题中描述您的问题的当前状态以及您可能需要帮助我们帮助解决您的问题的任何其他详细信息。

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

    您好 Dennis、

    我们使用了库源代码、并且能够编译库。 但是、我们仍然无法使用 CapTIvate 库执行测试、因为我们现在遇到了大模型寻址与低功耗模式和中断相结合的问题。 这是一个不同的主题、因为它在没有 CapTIvate 源的情况下也会发生。 因此、我们可以将该线程置于已解析状态。 感谢您在本主题上的帮助!