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.
大家好!
我有关于在 OTP 后为 Z1-BOOTCTRL 刷写代码的问题。 我尝试使用 serial_flash_programr.exe 引导、上传 LED_BLINK 示例代码。 在 OTP 引导过程之前、我可以通过 serial_flash_programr.exe -d f2837xD -k f2837xD_fw_upgrade_example\F2837xD_sci_flash_kernels_cpu01.txt -a f2837xD_fw_upgrade_example\blinky_dc_cpu01_alt.txt -b 76800 -p COM10 -v 运行此示例
图1. 操作通道
在该命令之后、我正在运行1-DFU CPU1和0-done、LED 闪烁且代码从闪存运行。 下一步、我想编写 使用 UNIFLASH 将 SCI 引导模式转换为 OTP 。 我写道 0x0000015A (32位)值添加到 0x7801E (Z1-BOOTCTRL)地址。 完成这一步后、我尝试了相同的过程来使用 serial_flash_programr.exe 通过 serial_flash_programr.exe -d f2837xD -k f2837xD_fw_upgrade_example\F2837xD_sci_flash_kernels_cpu01.txt -a f2837xD_fw_upgrade_example\blinky_dc_cpu01_alt.txt -b 76800 -p COM10 -v 并包含此命令内核已上传并进行器件固件升级 (DFU CPU1) 流程已完成。 但代码无法正常运行(LED 没有闪烁)。 此步骤是否有任何问题? 非常感谢!
此致、
F·S·弗坎
尊敬的 Furkan:
您可以检查的一件事是查看应用程序是否确实向器件发送了该数据。 您可以擦除设备的闪存,然后再次尝试固件升级。 完成此操作后、您是否能够对器件内容执行存储器转储、或者查看应用是否在 CCS 存储器窗口中达到了正确的地址?
另一项需要检查的是应用的映射文件。
谢谢。此致、
查尔斯
尊敬的 Charles:
感谢您的快速响应! 我尝试擦除器件闪存 (3-擦除 CPU1) 和固件升级 (1-DFU CPU1) 但代码并未运行。 如何查看申请地址? 例如、您的意思是、如果我使用特定地址(0x00080000)运行 CPU1、我可以从 UNIFLASH 中看到这些地址上的一些值。 我是否理解正确?
要检查的另一件事是应用程序的映射文件。
我怎么能做这一步呢?
谢谢。
此致、
F·S·弗坎
我想说另外一点。 凭借此 0x0000015A 值、Bootpins 将 GPIO84 和 GPIO72对吧? 此外、引导模式将是 SCI。 默认 SCI GPIO 引脚为 GPIO84 GPIO85兼容。 GPIO84 SCI 和自举引脚的引脚相同。 这会引起任何冲突吗?
谢谢。
此致、
F·S·弗坎
尊敬的 Furkan:
>如何执行此步骤?
若要查看映射文件、在 CCS 中构建工程后、您可以导航至 Build Configuration 文件夹并单击扩展名为.map 的文件。
>我可以检查申请地址吗?
在映射文件中、应该有一个程序 codestart 的原始地址以及程序的.text。
>例如,您的意思是,如果我运行具有特定地址(0x00080000 )的 CPU1 ,我可以从 UNIFLASH 中看到这些地址的一些值。 我是否理解正确?
如果使用 CCS/Uniflash 加载应用程序、则运行 CPU1、它应按预期运行应用程序。 如果没有、则工程的构建方式可能存在问题。
>我想说另一件事。 凭借此 0x0000015A 值、Bootpins 将 GPIO84 和 GPIO72对吧? 此外、引导模式将是 SCI。 默认 SCI GPIO 引脚为 GPIO84 GPIO85兼容。 GPIO84 SCI 和自举引脚的引脚相同。 这会引起任何冲突吗?
为 0x015A 放置在 CPU1的 BOOTCTRL 寄存器位字段中的值是指使用 GPIO84和 GPIO85的 SCI 引导0。 BootPins 本身仍将是器件上的 GPIO84和 GPIO72 (连接到开关 A:SW1)。 SCI 引导的替代方法是使用 BOOTCTRL 寄存器位字段值 0x815A 指 SCI 引导1、它使用 GPIO28和 GPIO29。 串行闪存主机编程器默认使用 GPIO28和 GPIO29、因为这两条线路与使用 USB-C 电缆进行 UART 通信的线路相同。 在使用默认的主机编程器时会发生冲突、因为它使用 GPIO28和 GPIO29通过 UART 线路进行通信。
谢谢。此致、
查尔斯
尊敬的 Charles:
>> 要查看映射文件、在 CCS 中构建工程后、您可以导航至 Build Configuration 文件夹并单击 扩展名为.map 的文件。
-好了,我在 CPU1_FLASH 文件夹中找到了它。 谢谢。
>> 在映射文件中、应该有程序 codestart 的原始地址 以及 程序的.text。
-.map file 中有一行-> 入口点符号:"code_start" 地址:00080000
>>如果您使用 CCS/Uniflash 加载应用、则运行 CPU1、它应按预期运行应用。 如果没有、则工程的构建方式可能存在问题。
-当我为 CPU1闪存运行 blinky_dc (通过 CCS 调试)示例时,它可以工作,但在复位后(电源复位)代码没有运行。
>> 0x015A 放置在 CPU1的 BOOTCTRL 寄存器位字段中的值是指使用 GPIO84和 GPIO85的 SCI 引导0。 BootPins 本身仍将是器件上的 GPIO84和 GPIO72 (连接到开关 A:SW1)。 SCI 引导的替代方法是使用 BOOTCTRL 寄存器位字段值 0x815A 指 SCI 引导1、它使用 GPIO28和 GPIO29。 串行闪存主机编程器默认使用 GPIO28和 GPIO29、因为这两条线路与使用 USB-C 电缆进行 UART 通信的线路相同。 在使用默认的主机编程器时会发生冲突、因为它使用 GPIO28和 GPIO29通过 UART 线路进行通信。
-建议在新器件上使用带有0x0000815A 命令的 OTP 吗?
感谢 Charles 的一切!
此致、
F·S·弗坎
尊敬的 Furkan:
>当我为 CPU1闪存运行 blinky_dc (用 CCS 调试)示例时,它可以工作,但在重置设备后(电源重置)代码没有运行。
引导模式开关 SW1是设置为 SCI 引导模式(GPIO72低电平、GPIO84高电平)、还是默认设置为获取模式/闪存(GPIO72高电平、GPIO84高电平)? 器件复位后、根据引导模式开关、器件将从 SW1引导设置确定的引导模式运行。 由于 SW1开关未设置为闪存引导模式、它可能未在运行。
>建议在新器件上使用带有0x0000815A 命令的 OTP 吗?
如果您计划使用 GPIO28/GPIO29并无 CCS 从 SCI 引导、则答案是肯定的。 但是、您应注意这是一个 永久性 更改为器件、并且通过向 OTP 写入此值、与引导模式开关关联的其他默认引导模式(并行 I/O、等待、获取模式/闪存默认模式)将与之前一样。
谢谢。此致、
查尔斯
你好,我希望你是好的。
>>引导模式开关 SW1是设置为 SCI 引导模式(GPIO72低电平、GPIO84高电平)、还是默认设置为获取模式/闪存(GPIO72高电平、GPIO84高电平)? 器件复位后、根据引导模式开关、器件将从 SW1引导设置确定的引导模式运行。 由于 SW1开关未设置为闪存引导模式、它可能未在运行。
--是的,它是使用 OTP 模式的获取模式。 GPIO72和 GPIO84是高电平。 另外、A:SW1是0。
>>如果您计划使用 GPIO28/GPIO29并无 CCS 从 SCI 引导、则答案是肯定的。 但是、您应注意这是一个 永久性 更改为器件、并且通过向 OTP 写入此值、与引导模式开关关联的其他默认引导模式(并行 I/O、等待、获取模式/闪存默认模式)将与之前一样。
--我只是想使用 OTP 作为 SCI 引导选项。 在这里、这些是我为 SCI 引导执行的步骤。
第1步: 使用 UNIFLASH 将0x0000015A 值写入 Z1-BOOTCTRL 地址。
第2步: 从0x7801E 地址读取器件存储器以检查0x0000015A 的值、这似乎没有问题。
第3步: 通过 TTL USB 将器件 GPIO84和 GPIO72连接到计算机。
第4步: 测试 Blinky_dc_cpu01 实现 F2837xD_sci_flash_kernels_cpu01 内核文件来自 \utilities\flash_programmers\serial_flash_programmer\f2837xD_fw_upgrade_example 文件夹。
第5步: 1-DFU CPU1、0 -从 serial_flash_programmer.exe 完成。(它不工作)。
第6步: 我使用这条命令尝试了第5步并且 LED 在闪烁、但在重置电源后、代码未运行。 (1-DFU CPU1、11-运行 CPU1和十六进制。 地址0x00080000)。 您可以在上看到 图2
图2. 运行 CPU-1命令的操作 PChannel。
这些步骤中是否有错误 Charles? 您能告诉我为 SCI 使用 OTP 的所有步骤吗? 因为我将在新器件上执行这些步骤、我不想做错事。
感谢 Charles 的一切。
此致、
F·S·弗坎
您好!
有人能帮我解决这个问题吗?
此致、
F·S·弗坎
尊敬的 Furkan:
我将能够在一天结束时向您进一步介绍最新情况。
此致、
查尔斯
Furkan,
如果您已从1-6开始执行步骤并使用主机编程器成功下载内核和应用程序、则说明这些是正确的。 请向我说明这是否确实是图2的生成方式。
您放置在主机编程器中的应用起点地址是0x80000。 此应用快照中显示的地址为0x82aa5。 我认为这可能是出现问题的原因。
谢谢。
查尔斯
您好 Charles、
>>如果您已从1-6开始执行步骤并使用了主机编程器成功下载内核和应用程序,则这些是正确的。 请向我说明这是否确实是图2的生成方式。
-- Fig.2已成功结束,并且 LED 在这一步骤后闪烁。 当我重置设备电源时、LED 不闪烁。 我认为代码无法自动启动。 如果我使用 以下命令来使用 serial_flash_programr_appln.exe: ..\serial_flash_programr_appln.exe -d f2837xD -k f2837xD_fw_upgrade_example\F2837xD_sci_flash_kernels_cpu01_alt.txt -a f2837xD_fw_upgrade_example\blinky_dc_cpu01.txt -b 76800 -p COM10 提供1-DFU CPU1后、代码再次运行。 您可以在图3上看到它
图3. 串行闪存编程器 APPLN
>> 您放置在主机编程器中的应用起点地址为0x80000。 此应用快照中显示的地址为0x82aa5。 我认为这可能是出现问题的原因。
我认为这一步没有问题。 因为我的测试对象 0x82aa5 地址、并且在电源复位后停止闪烁。 我的意思是代码无法跳转(分支)到应用程序。 这个问题我真的需要帮助。
此致、
F·S·弗坎
您好、Charles、我有最新消息。 在我发送" AA "或" AA "重置过程后从串行(例如 PuTTY)发送到卡的消息、代码正在运行并且 LED 闪烁、但是每次重置、我应该从串行发送此消息吗?
此致、
F·S·弗坎
Furkan,
对于 F28379Dx 器件、如果已配置获取模式、则无法将引导模式选择引脚重新配置为在器件复位后从闪存引导(只能配置一次获取模式)。
从串行发送'AA'消息可使器件默认为闪存引导模式。
谢谢。此致、
查尔斯
Charles
感谢您的答复。 因此我理解、每次电源复位时、我都应该从 UART 发送'AA'消息、从而将引导模式从 SCI (OTP 值)更改为闪存引导。 您的 TRM 对于此序列是不够的...
此致、
F·S·弗坎
Charles
我还有一个问题。 如果我更改 Zx - BOOTCTRL。 OTP_KEY 具有 0xFF 而不是 0x5A ,它将是 从闪存引导 ? 我错了吗? 例如、我想通过改变 Z1-BOOTCTRL --> 0x000081FF ,现在它将使用 SCI 备用 ,引导引脚将 GPIO84和 GPIO72 和 OTP_密钥 将不相等 0x5A 。 它对 SCI 备用 IO 和跳转到闪存步骤是否有效? 您可以在以下位置查看此步骤: 图4.
图4. 独立和休眠启动流程
尊敬的 Furkan:
将键值的 MSB 更改为0xFF 的任何变化都将表明 BOOTCTRL 寄存器无效。 它将默认为引导模式开关值。
如果您遵循 SCI 备用 IO 的流程图、则设置 keyvalue (例如0x0000815A)将有效
谢谢。此致、
查尔斯
您好 Charles、
>> 将键值的 MSB 更改为0xFF 的任何变化都将表明 BOOTCTRL 寄存器无效。 它将默认为引导模式开关值。
"是的,我明白了。 我的意思是、在更改 SW1:0|1 (SCI 引导)之后、它将查看 OTP_BMODE。 OTP_BMODE 将为0x81 (SCI 备用)。 SCI 引导后、我将更改 SW1:1|1 (获取模式)、它将看起来像 OTP_KEY。 因此、这不会等于0x5A、它将从闪存引导。 我对吗?
此致、
F·S·弗坎
尊敬的 Furkan:
SW1:0|1 (SCI 引导)、器件将使用 BMODE 0x01 (SCI 默认)查找用于固件升级(GPIO84和 GPIO85)的默认 GPIO 引脚。
SW1时:1|1 (获取模式) 且 OTP_KEY 未设置为0x5A、它将从闪存引导。
如果 SW1:1|1 (获取模式)并且 OTP_KEY 已设置、并且 BMODE 与0x81一起、它将从 SCI 交替模式引导。 请注意、如果通过 OTP 进行设置、您将无法再在器件上使用闪存 BMODE。
谢谢。此致、
查尔斯
您好 Charles、
>>如果 SW1:1|1 (获取模式)并且 OTP_KEY 已设置、并且 BMODE 与0x81一起、它将从 SCI 交替模式引导。 请注意、如果通过 OTP 进行设置、您将无法再在器件上使用闪存 BMODE。
--我的意思是,如果我设置 SW:0|1(SCI 模式)并且 OTP_KEY 设置为0xFF(不是0x5A)且 BMODE 设置为0x81,那么它会从 SCI 交替模式引导吗? 在此步骤(从 SCI 交替引导)之后、如果我设置 SW:1 | 1 (获取模式)、它将从闪存引导。 我对吗?
此致、
F·S·弗坎
尊敬的 Furkan:
>如果我设置 SW:0|1( SCI 模式)且 OTP_KEY 设置为0xFF (不是0x5A)且 BMODE 为0x81,它会从 SCI 交替模式启动吗?
它将从默认 SCI 模式引导、因为引导控制寄存器未被视为有效(不是0x5A)。
>在此步骤之后(从 SCI 交替引导)如果我设置 SW:1|1(获取模式),它将从闪存引导。 我对吗?
由于 SCI Alternate 将无法被识别、因此它仍会从闪存引导。
对于该器件、如果从不设置 OTP_KEY 以识别寄存器更改有效、则获取模式将继续引导至闪存。 我希望这对您有所帮助。
谢谢。此致、
查尔斯
您好 Charles、
感谢您的答复。 关于这些步骤、我还有一个问题。 我想写 OTP_KEY --> 0x5A、BMODE --> 0x81。 使用此值,我的卡将始终等待 SCI 备用引导。 完成启动过程后、我希望在不写入"A"或"A"字符的情况下跳转到闪存。 我该怎么办?
此致、
F·S·弗坎
您好 Charles、
感谢您的答复! 我将查找自定义引导加载程序。 祝您度过美好的一天!
此致、
F·S·弗坎