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.

[参考译文] AM263P4-Q1:闪存、引导加载程序、地址

Guru**** 2894990 points

Other Parts Discussed in Thread: UNIFLASH, SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1644005/am263p4-q1-flash-bootloader-addresses

器件型号: AM263P4-Q1
Thread 中讨论的其他器件: UNIFLASHSYSCONFIG

您好、

我正在尝试扩展 OSPI-SBL、以便能够通过 CAN 接收数据并将该数据写入闪存、特别是我希望能够写入 mcelf 文件来更新固件。

有些事情对我来说仍然不清楚,请帮助我澄清一些事情。

  1. 0x80000000 地址空间与 0x60000000 之间有何区别? 当我使用 UniFlash 读取它们时、两者看起来都返回相同的值。
  2. 将 mcelf 文件写入的正确地址是什么。 0x60081000?
  3. 读取写入数据以进行验证/校验和的正确地址是什么? 也是 0x60081000?
  4. 我能否通过更改 SBL SysConfig 中的“引导映像偏移量“来自由更改此地址(显然是要避免 SBL 空间)?
  5. 我在 0x60080000 处读取到 OSPI PHY 的数据。 在将 mcelf 写入 0x60081000 之前、我将删除闪存扇区、因此这也将被删除。 从哪里获取这些数据、以便可以重写?
  6. mcelf_XIP 文件是否重要? 它只有 224B 长。 我是否需要这一点? (我将闪存用于除存储 SBL 要加载的应用程序代码之外的任何其他用途。)
  7. UniFlash 会将 mcelf_XIP 写入 0xF0000000。 这是什么? 我在存储器映射中看不到这一点。

此致、
Frank

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

    您好:

    该主题已发送给目标专家、请期待接下来的星期一响应。

    此致、

    马特

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

    您好 Frank、

    写入 mcelf-file 的正确地址是什么。 0x60081000?

    此地址可以自定义。 默认情况下、SDK 中的 SBL 配置为在闪存中查找偏移为 0x81000 的应用程序。 所以是的、要写入的地址为 0x6008_1000。


    读取用于验证/校验和的写入数据的正确地址是什么? 也是 0x60081000?

    是、由于应用程序映像是在此地址写入的、因此为了计算校验和或映像验证、回读也需要在该地址 0x6008_1000 处完成。


    我读到、地址为 0x60080000 是 OSPI PHY 的数据。 在将 mcelf 写入 0x60081000 之前、我将删除闪存扇区、因此这也将被删除。 我从哪里获取这些数据、以便可以重写它?

    PHY 连接矢量位于 0x6008_0000。 如果您已擦除此地址、则可以通过以下方式写回攻击向量

    1.运行一个应用程序、其启用了 Flash with PHY 复选框 (在 SysConfig 中)、该复选框处于打开状态。

    2.使用 UART uniflash 写入器刷写一些映像。 该工具将编写攻击向量

    如果您的 SBL 启用了闪存和 OSPI PHY、那么再次运行 SBL 就足够了。 这是因为 OSPI 驱动程序将检查起音矢量是否存在。 如果不在那里,那么它将重新写入附加矢量。


    mcelf_XIP 文件是否重要? 它只有 224B 长。 我是否需要这一点? (我不将闪存用于除存储 SBL 要加载的应用程序代码之外的任何其他用途。)

    仅当使用 XIP 或将任何.rodata 内容存储在由链接器配置的闪存中时、才需要此文件。 如果没有,那么它是不需要的。


    UniFlash 将 mcelf_XIP 写入 0xF0000000。 这是什么? 我在内存映射中看不到这一点。

    是的、它不在存储器映射中。 此地址只是 uniflash 工具中用于标识下一个闪存器软件的标签地址、用于将其标识为 mcelf_XIP 文件。

    此致、

    Aswin