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.

[参考译文] TM4C1294KCPDT:TM4C1294KCPDTI3的 ROM 引导加载程序不会启动

Guru**** 2482105 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/712008/tm4c1294kcpdt-rom-boot-loader-of-tm4c1294kcpdti3-does-not-start

器件型号:TM4C1294KCPDT

e2e.ti.com/.../LM4Fxxx2_5F00_UC3.he2e.ti.com/.../CreNo2018724202425.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们的客户无法从 TM4C 的 ROM 引导加载程序 BOOTCFG 指定的 GPIO 设置开始。

    详情如下。

    通过更改 BOOTCFG 中设置的相应 GPIO 端口和引脚极性、ROM 引导加载程序不会在通电时启动。

    BOOTCFG 的内容如下。


    1.将0xFFFFFF37FE 写入 FMD 寄存器
    端口 B = 0x01
    引脚5 = 0x05
    POL = 1
    EN = 1
    2.将0x75100000写入 FMA 寄存器
    3.按如下方式将0xA4420008或0x71D50008写入 FMC 寄存器
    键= 0→0x71D50008
    KEY = 1→0xA4420008

    此外、在执行 MCU 的解锁序列后、在关闭→ON 后、ROM 引导加载程序被启动。



    FMA、FMD、FMC 每次都在应用程序开始时写入、但引导加载程序未启动。
    写入 FMA、FMD、FMC 后、我一直等到 COMT 位变为0。

    下列寄存器值在应用程序激活后被确认。

    ·BOOTCFG 寄存器的值(0x400FE1D0):0xFFFFFFE
    ·GPIOB 的 GPIODATA 寄存器(0x40059000)的值:0x00000000

    对于 BOOTCFG、为 FMD 设置的值被置位。
    Pb5设置为高电平、GPIOB 的 GPIODATA 为0。
    高电平无法识别?



    我附加了 BOOTCFG 写入代码。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Kyogo、

    我认为对于 EN 所需的设置存在误解。

    这是数据表中 EN 位的说明:"将该位清零可使用 GPIO 引脚启用 ROM 引导
    复位时的加载程序。 当该位置位时、地址0x0000.0004的内容将被检查、以查看 Flash 存储器是否已被编程。 如果内容不是0xFFFF.FFFF、内核会从 Flash 存储器执行。 如果闪存未编程、内核从 ROM 执行"

    EN 位(即位8)应该被清零(即写入0)。 只有在 ROM 引导加载程序才会检查寄存的 GPIO (由 BOOTCFG 寄存器中用于 GPIO 端口的13:15位和用于特定引脚的10:12位标识)是否有效(由 BOOTCFG 寄存器的9位标识)。 如果 GPIO 被置位、那么 ROM 引导加载程序继续执行。 如果 GPIO 未置位、ROM 引导加载程序将检查闪存中是否存在有效映像并将其引导。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Ralpf 您好、

    感谢您的快速回复。

    我立即将 EN 位更改为0 (删除| BOOTCFG_EN 的行)并进行确认。
    因此、情况不会改变、应用程序将启动。
    此外、我删除了0xFFFFFFFE 的判断语句、每次都尝试写入设置、但应用程序将启动。

    我误解了 EN 位的解释。
    以下流程中④ Ω(GPIO 条件判断)的位置是否正确、不是在 EN = 1侧、而是在 EN = 0侧?

    另外,读取 GPIODATA 寄存器(0x40059000)的值是否可以确认 PB5为高电平?

    此致、

    Kyogo

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

    您的图表是准确的、这与器件数据表第672页的流程一致。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Ralph、

    感谢你的答复。

    我确认了流程图和数据表的描述。

    另请告诉我如何检查 PB 5的极性。

    此致、

    Kyogo

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

    我真的不理解您的问题、您能更详细地解释一下吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Ralph、

    下列寄存器值在应用程序激活后被确认。
    ·BOOTCFG 寄存器的值(0x400FE1D0):0xFFFFFFE
    ·GPIOB 的 GPIODATA 寄存器(0x40059000)的值:0x00000000

    对于 BOOTCFG、为 FMD 设置的值被置位。
    Pb5设置为高电平、GPIOB 的 GPIODATA 为0。
    高电平无法识别?

    作为确认 PB 5为高电平的一种方法、GPIOB
    读取 GPIODATA 寄存器(0x40059000)的值是否正确?

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

    您好、Kyogo、

    我必须为我先前对图表准确性的评论表示歉意。 当我查看它时、我认为它是准确的、但我现在注意到需要解决的两个差异。 为了更好地解释这一过程、我自己制作了一个图表、我希望这将有助于正确地展示这一过程:

    请注意、要进行 GPIO 极性检查、EN 必须等于0、因此您需要 BOOTCFG 为0xFFFFFFE。

    请查看使用该 BOOTCFG 设置时是否获得所需的行为。

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

    Ralpf 您好、

    在数据表中、有人说除非 EN 位为0、否则引导加载程序不会启动、因此我尝试使用 EN 位= 0。
    我们还确认 BOOTCFG 的值为0xFFFFFF36FE。
    因此、情况没有改变、应用程序启动。

    GPIO 极性的分支是否正确完成?
    如何在应用程序运行时检查 GPIO 相应端口/引脚的极性?

    此致、

    Kyogo

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

    您能否描述一下您为加载 BOOTCFG、提交并尝试进入引导加载程序所采取的步骤? 包括在过程中将 PB5置为高电平时。

    您的意思是检查 GPIO 端口/引脚的极性?

    在非常基本的层面上、您只需让应用代码检查该引脚并根据高电平与低电平状态切换 LED 即可...?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Ralph、

    当再次尝试时、由于 EN 位的改变、
    我能够确认引导加载程序的引导。
    即使更改为 EN 位= 0、引导加载程序也无法启动的原因是断开了改变 GPIO 极性的连接器。

    非常感谢您的支持。

    此致、

    Kyogo