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.

[参考译文] MSP430FR5994:通过 CLI/script 写入 FRAM 存储器(使用 UniFlash 或其他工具)

Guru**** 2518210 points
Other Parts Discussed in Thread: UNIFLASH

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1553092/msp430fr5994-writing-to-the-fram-memory-using-uniflash-or-other-tool-by-cli-script

器件型号:MSP430FR5994
Thread 中讨论的其他器件:UNIFLASH

工具/软件:

您好:

首先、我会介绍我们目前的处理方式、以及我们需要改进的方面。

目前我们使用 CCS 对 MCU 进行编程。

我们的程序没有几种可以设置的运行模式。 目前、我们只是使用硬编码的#defines(例如 Params.h 头文件)来设置配置、将其编译为二进制*。out 文件。

我们希望将 MCU 的编程分离 到 CCS 之外。

UniFlash 是一个很好的做法,但使用这种方式, 我们需要一个*.out 文件用于每个配置:/。

因此、我们需要将 MCU 固件的编程与 IT 参数编程分离。

UniFlash GUI 位于“Memory"部分“部分、可将数据写入 特定的存储器地址字节。 这对于设置器件参数 非常有用、可通过设置 persistent 变量(将表示 a 参数)、检查链接器映射文件中的存储器地址、以及使用 UniFlash memory util 写入该位置。

这很好、但需要手动使用 UniFlash GUI。

我们如何使用 UniFlash(或其他工具)进行自动化以对特定的存储器地址进行编程?  

使用 CLI/脚本编写  

谢谢

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

    尊敬的 Ron:

    您使用的是.out 文件或.bin 文件?

    OUT 文件应包含地址信息、而不需要分配特定地址。

    如果要加载.bin 文件、则可以在加载的文件后设置地址。

    一些附加说明可在以下文档中找到:

    https://software-dl.ti.com/ccs/esd/uniflash/docs/v9_2/uniflash_quick_start_guide.html 

    B.R.

    Sal

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

    嗨、Sal

    很抱歉耽误你的时间,我们离开办公室了几天。

    我们使用的是.out 文件。

    您可以有一个简单的脚本示例将一些内存地址设置为某个值吗?

     

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

    尊敬的 Ron:

    我认为这可能是通过 CLI 自动进行的。

    按照指南生成 CLI 软件包、

    [quote userid=“522967" url="“ url="~“~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1553092/msp430fr5994-writing-to-the-fram-memory-using-uniflash-or-other-tool-by-cli-script/5977224]software-dl.ti.com/.../uniflash_quick_start_guide.html  

    然后使用 UNIFLASH GUI 进行设置、我认为下载固件的所有基本操作也受 CLI 支持。

    B.R.

    Sal

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

    嗯、我已经对此进行了检查。

    正如我观察到的、无论是通过 GUI 还是 CLI、都无法使用 UniFlash 将数据写入特定存储器地址。

    通过使用 UniFlash GUI 中的存储器实用程序、我可以读取存储器内容、但我没有看到任何将某些值写入存储器位置的选项。

    最好获取有关如何简单地将某个值写入特定存储器地址的建议。

    或发送到 TI UniFlash 开发团队。

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

    尊敬的 Ron:

    您可以在工具论坛中提交申请。

    就我而言、它不直接支持这种操作。

    虽然,我们可以准备一个 特定的文件,其中只包含需要处理的地址,然后它将只编程它包含的地址。 例如十六进制文件或 TXT 文件。

    B.R.

    Sal

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

    您能否指导我如何编写 hex/txt 这样的文件?

    我知道如何使用所需内容编写二进制数据。

    但是、

    十六进制文件的结构应该是什么?

    如何设置需要写入的地址?

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

    已使用 ChatGPT 了解 .out 文件.hex 文件和.ti-txt 文件。

    使用 TI-TXT 格式以非常简单的方式实现结果。

    TI-TXT 格式为:

    @<address>
    <byte1> <byte2> ... <byteN>
    q

    这是一个完整示例、说明如何写入一个特定地址(示例中为 0x26c6)两个 uint16_t(四个字节) :
    使用 TI-TXT 格式文件。
    使用 UniFlash 对 MCU 进行编程。
    值 1 的范围内、值 2 的范围内。

    struct Example1
    
    {
       uint16_t field1;
       uint16_t field2;
    } placer;

    'placer'放置在地址 0x27C6 处。

    .TI-TXT 文件:

    @27C6
    01 00 02 00
    q

    使用 UniFlash 对其进行编程将设置地址:
    0x27C6 至 0x01
    0x27C7 至 0x00
    0x27C8 至 0x02
    0x27C9 至 0x00

    谢谢。