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.

[参考译文] TM4C1230H6PM:写入和读取 FMD、FMA 和 FMC 寄存器

Guru**** 2390755 points
Other Parts Discussed in Thread: UNIFLASH, TM4C1230H6PM

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1463323/tm4c1230h6pm-write-and-read-the-fmd-fma-and-fmc-registers

器件型号:TM4C1230H6PM
主题中讨论的其他器件:UNIFLASH

工具与软件:

您好!

如何写入和读取 FMD、FMA 和 FMC 寄存器?
(我计划选择 UART 作为串行接口)

如果在器件复位时 GPIO 处于指定状态、则调用 ROM 引导加载程序。
我想使用此方法来调用 ROM 引导加载程序。

为此、我要配置 BOOTCFG 寄存器。

要配置 BOOTCFG 寄存器、必须对 FMD、FMA 和 FMC 寄存器进行写入和读取。

文献编号:SPMU301E

在上述文档中、如果我使用以下命令、是否可以写入 FMD、FMA 和 FMC 寄存器?

COMMAND_DOWNLOAD = 0x21
COMMAND_SEND_DATA = 0x24

似乎没有用于读取寄存器的串行命令。
如何读取 FMD、FMA 和 FMC 寄存器?

此致、

Toru

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

    您好!   

    [报价 userid="636408" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1463323/tm4c1230h6pm-write-and-read-the-fmd-fma-and-fmc-registers "]要配置 BOOTCFG 寄存器、我必须读写 FMD、FMA 和 FMC 寄存器。[/QUOT]

    这篇文章包含有关如何使用代码片段示例对 BOOTCFG 寄存器进行编程的说明。  

    https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/546775/bootcfg-not-being-written

    [报价 userid="636408" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1463323/tm4c1230h6pm-write-and-read-the-fmd-fma-and-fmc-registers "]

    在上述文档中、如果我使用以下命令、是否可以写入 FMD、FMA 和 FMC 寄存器?

    COMMAND_DOWNLOAD = 0x21
    COMMAND_SEND_DATA = 0x24

    [报价]

    如果要为串行引导加载程序实施编程器、请参阅以下应用手册。  

    在 TM4C12x 微控制器上实现串行引导加载程序的编程器(修订版 A)

    Unknown 说:
    似乎没有用于读取寄存器的串行命令。
    如何读取 FMD、FMA 和 FMC 寄存器?[/QUOT]

    这些寄存器是存储器映射的。 您需要使用 CPU 来读取它们。  

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

    您好!

    感谢您的答复。

    我将继续提问。

    文档编号:SPMS332E

    第一:关于编程和擦除
    是否可以使用 JTAG 或 SWD 从调试端口访问寄存器并进行 PRagram、然后根据上面文档中[7.2.3.8基本编程/擦除操作]和[7.2.3.9 32字闪存写入缓冲器]所述擦除闪存(地址:0x0000_0000至0x0003_FFFF)?

    第2章:我是你的
    是否可以使用 JTAG 或 SWD 从调试端口访问闪存(地址:0x0000_0000至0x0003_FFFF)并对其进行读取?

    第3题:关于引导加载程序
    是否可以在不使用闪存引导加载程序或 ROM 引导加载程序的情况下对闪存(地址:0x0000_0000至0x0003_FFFF)进行编程和擦除?
    如果问题1的答案是[是]、那么我认为可以不使用闪存引导加载程序或 ROM 引导加载程序。

    此致、

    Toru

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    No.1 :关于编程和擦除
    是否可以使用 JTAG 或 SWD 从调试端口访问寄存器并进行 PRagram、然后根据上面文档中[7.2.3.8基本编程/擦除操作]和[7.2.3.9 32字闪存写入缓冲器]所述擦除闪存(地址:0x0000_0000至0x0003_FFFF)?
    [报价]

    可以、您可以使用 Uniflash 或 CCS 擦除 MAIN 闪存阵列。 请参见下文。  

    如果您还希望擦除 BOOTCFG 等非易失性寄存器、则必须执行"解锁"操作、该操作将不仅擦除闪存阵列、还将擦除非易失性寄存器和 EEPROM 恢复出厂设置。  

    No.2 :关于阅读
    是否可以使用 JTAG 或 SWD 从调试端口访问闪存(地址:0x0000_0000至0x0003_FFFF)并对其进行读取?[/QUOT]

    有。 您可以通过多种方式实现它。 您可以通过打开"Memory Browser"窗口、或使用 Uniflash 读取内容、从而在 CCS 中查看闪存内容。 请参见下文。  

    No.3:关于引导加载程序
    是否可以在不使用闪存引导加载程序或 ROM 引导加载程序的情况下对闪存(地址:0x0000_0000至0x0003_FFFF)进行编程和擦除?
    如果问题1的答案是[是]、那么我认为不使用闪存引导加载程序或 ROM 引导加载程序是可能的。[/QUOT]

    见上文对第1号和第2号的答复。  

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

    您好!

    感谢你的评分

    您发送的映像似乎是使用德州仪器(TI)闪存编程工具 UniFlash 执行的操作。

    这次、我考虑使用我们开发的编程器来读取、编程和擦除 TM4C1230H6PM 的闪存。

    总结到目前为止的答案、我知道我们开发的编程器如果在 TM4C1230H6PM 规范下运行、可实现以下功能。
    (作为补充、如果我们开发的编程器可以按照 TM4C1230H6PM 规范运行)

    使用 JTAG 或 SWD 来完成的
    -可以访问寄存器并编程和擦除闪存(地址:0x0000_0000至0x0003_FFFF)。
    -可以访问和读取闪存(地址:0x0000_0000至0x0003_FFFF)。

    如果我理解错了、您能告诉我吗?


    此致、

    Toru

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    总结目前为止的答案、我知道我们开发的编程器如果按照 TM4C1230H6PM 规范操作、可执行以下操作。
    (作为补充、如果我们开发的编程器可以按照 TM4C1230H6PM 规范运行)

    使用 JTAG 或 SWD 来完成的
    -可以访问寄存器并编程和擦除闪存(地址:0x0000_0000至0x0003_FFFF)。
    -可以访问和读取闪存(地址:0x0000_0000至0x0003_FFFF)。
    [报价]

    您好!

     如果您要开发自己的编程器、它与 TI 的编程器 (例如 Uniflash)没有什么不同、在 Uniflash 中、它可以对闪存(地址:0x0000_0000至0x0003_FFFF)进行编程和擦除、甚至对非易失性寄存器也是如此。 您将需要通过 JTAG 将程序设计器代码下载到内部 RAM 中、并且让 CPU 从 SRAM 中执行程序设计器代码来对闪存进行编程和擦除。  

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

    您好!

    感谢您的答复。

    我来检查一下我的理解是否正确。

    以下理解是否正确?

    -可以使用 JTAG 或 SWD 从调试端口访问寄存器,并清除闪存(地址: 0x0000_0000到0x0003_FFFF )。

    -然而,推荐的方法是通过 JTAG 或 SWD 将程序员代码下载到内部 RAM 和让 CPU 执行内部 SRAM 的程序员代码来编程和擦除闪存。

    此致、

    Toru

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    -可以使用 JTAG 或 SWD 从调试端口访问寄存器并清除报文并擦除闪存(地址:0x0000_0000至0x0003_FFFF)。
    [报价]

    有。

    -然而、推荐的方法是通过 JTAG 或 SWD 将编程器代码下载到内部 RAM 中、并让 CPU 执行内部 SRAM 的编程器代码以编程和擦除闪存。

    我不是编程人员设计方面的专家。 我的理解是、您需要通过 JTAG 扫描一条指令、将其搜索到 CPU 的调试逻辑。 例如、如果您有一条 MOV r0、R1指令、您希望 CPU 执行该指令。 可以将指令扫描到 CPU 调试逻辑、并让 CPU 将该指令操作码存储在 RAM 上。 然后你将强制 CPU 的程序计数器到 RAM 中并且让 CPU 执行这个 MOV 指令。  我建议您查阅 Arm M4F 数据表和 DAP、从而了解其工作原理。  

    [/quote]