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.

[参考译文] CC2543:CC2543

Guru**** 2394305 points
Other Parts Discussed in Thread: CC2543

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

https://e2e.ti.com/support/wireless-connectivity/other-wireless-group/other-wireless/f/other-wireless-technologies-forum/651982/cc2543-cc2543

器件型号:CC2543

我正在为 CC2543 SOC 开发引导加载程序。   我已经修改了链接器脚本、将32K 闪存分为以下几部分:

  • 3K 中断矢量表和引导加载程序
  • 14K 应用程序和矢量重定向表
  • 14K 新应用程序映像
  • 1K 被保留用于块保护位。

该应用程序负责将新的14K 应用程序映像(由专有调试工具发送)写入适当的位置以供引导加载程序处理、然后触发软件复位

已修改复位矢量以直接指向引导加载程序、因此它在应用程序之前执行。  引导加载程序会检查新应用程序映像的完整性、如果它具有正确的 CRC、则会将其复制到应用程序空间中。

在引导加载程序中、我想使用 DMA 将14K 新应用程序映像复制到14K 的应用程序空间中。  当源和地址都驻留在闪存中时、这是否可行?  如果是、是否提供了示例代码?

提前感谢您的帮助...

Todd 发射器

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    澄清:最后一段应改为"... 源地址和目的地址"
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Todd、

    请参阅 CC254x 用户指南 SWRU191中的6.2.3 DMA 闪存写入。 DMA 闪存写入要求源数据位于 XDATA 中。

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

    从该文档的第2.2节中:

    XDATA。 一个读写数据存储器空间、对该空间的访问通常需要4–5个 CPU 指令周期。 该存储器空间的地址为64KB。 由于代码和 XDATA 内存空间在 CPU 内核上共用一条公共总线、因此对 XDATA 内存的存取也比数据存取慢、因此无法与 XDATA 存取并行执行代码的指令预取。

    同一文档中的图2.1显示了 XDATA 内存空间内的32K 闪存组。  这是内部32K 程序空间的映射吗?  如果不是、是什么?

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

    XDATA 的高32KB 是一个被称为 XBANK 的只读区域(请参阅图2-1)。 可用的任何32个
    KB 闪存组可在此处映射。 这使软件可以访问整个闪存。 这个领域
    通常用于存储其他常量数据。

    这是否表示 XDATA 可以用来读取闪存的内容?