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.

[参考译文] TPS6.5986万:需要阐明固件更新过程的内存映射

Guru**** 2484615 points


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

https://e2e.ti.com/support/interface-group/interface/f/interface-forum/666448/tps65986-need-to-clarify-memory-mapping-for-fw-update-process

部件号:TPS6.5986万

团队,我们仍在努力澄清 高/低区域的规模和位置。  似乎'ID,标头和配置数据'+'应用程序代码'部分的最大大小仍为64KB,而不是如FW Update App-Note中所示的图3-4所示的68KB。

 我这样说是因为使用FLrr,我获得:

FLrr区域0 = 0x0000_2000</s>2000

FLrr区域1 = 0x0001_2000</s>2000

 

因此,每个区域之间的容量仅为64KB。  当固件升级步骤要求您运行FLem命令以从FLrr区域地址擦除X个4KB块时,这种情况尤其令人困惑。  在示例代码中,它擦除17个4-KB块(SO 68KB)。  如果我使用17个4-KB块从0x0000_2000开始2000开始执行FLem,我将擦除多达0x0001_3000,3000,这大概是超过区域1的起点。

 

为什么示例代码/TI文档说'ID, Header,& configuration data'+'application code'部分是68KB,但根据FLrr,它是64KB?  当我执行FLem命令时,我应该擦除16块还是17块?

 

根据其他响应,最新的配置工具似乎可以将高区域设置为低至0x0001_2000,2000, 但这是目前配置工具的限制(显然将应用程序代码限制为60kB,标题+应用程序代码保持在最大64KB范围内)...  还是FW更新文档不正确,并且区域标题+应用程序代码的大小限制确实为64KB?

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

    我们的工程师应在周一之前回复您。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Eric,

    建议为sFLASH上的低和高区域分别分配68KB,但较新版本的工具为较高区域分配0x1.2万。 这目前没有问题,因为应用程序代码是~60kB,但我们将在该工具的后续版本中修复高区域图像的区域地址。 仅供参考,该工具的早期版本将高区域的地址设置为0x2万。

    要通过I2C更新工具3.10 v (及更高版本)生成的图像的低区域/高区域,请使用FLem w/ 16 4KB块。

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

    Praneet,

    感谢您的澄清... 但是,当将High Region分配给0x1.3万时,现在如何使用该工具的未来版本来管理FW更新过程?   

    当TI确实将区域1的内存地址更改为以0x1.3万开始时,我认为这有点棘手。  如果区域1处于活动状态,升级过程会告诉我们先刷新区域0。  由于区域大小会增加,闪烁的区域0也会导致区域1的一部分被擦除。  这意味着,如果更新区域时出现问题,我们可能会将区域0和1都设置为非功能状态,这将很糟糕。  请您澄清一下吗?  

     

    应用程序代码大小仍小于60kB的解决方案,因此我们使用新的工具版本,并且仍然使用FLem 和16个4KB块。  这将更新固件的大小仍与以前相同,但将有效 地"移动"到0x1.3万。   这是否正确?  随后的更新过程将能够使用FLem和17个4KB块?

     

    感谢您的支持。  

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

    我的客户现在面临相同的问题。 您能否澄清一下Eric在上面提出的问题?

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

    如果使用通过旧工具(..)生成的全闪二进制文件对sFLASH进行编程,则可能会发生您所描述的问题 在0x2000处为低区域,在0x1.2万处为高区域),并尝试使用通过该工具的较新版本(假定它生成68KB二进制)生成的低区域二进制文件来更新这些原因中的任何一个。

    当工具更新为包含0x1.3万的高区域内容时,使用新工具生成的映像更新sFLASH上的全闪二进制文件,然后闪存更新应用程序将正常工作(FLem w/ 17KB块)

    请告诉我它是否回答了您的问题-如果您有其他疑问,请告诉我。

    谢谢,此致,
    Praneet
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Takashi-san,您的问题是否得到了解答? 请告诉我,除了Eric列出的问题之外,您是否还有其他关于该主题的疑问。

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

    Praneet,

    您告诉我的事情 似乎 正是您所说的可能会导致腐败问题。   sFLASH将包含旧工具的全闪二进制文件,并且不能简单地重写sFLASH,我们希望使用FW-Update。   如果我使用新工具生成的二进制文件进行更新,使用FLem w/ 17 4KB块.... 那么,如果先对较低的区域进行编程,它“可能”会重叠区域。  这是我们需要避免的。

    我们如何使用Flash-Update应用程序安全地为高区域内容进行此转换,以0x1.3万为起点???    我想,我们可以使用闪存更新程序执行以下操作:

    1. 使用旧工具生成的旧64KB二进制文件
    2. 使用FLem和16个4KB块,但使用新工具(将高区域置于0x1.3万处),对旧的64KB二进制文件运行Flash-Update过程。
    1. 这只会有效地将现有的高层区域"移动"到正确的地址位置
    • 然后使用新工具生成新的二进制文件(我假设它可能生成68KB二进制文件)
    • 使用新的二进制文件并使用FLem w/ 17 4KB块再次运行闪存更新过程。

    现在,我们有了新的二进制文件,新的工具和位于0x1.3万的高区域。

    然而...... 但是,问题是运行更新过程的正确方法... ,因为FLrr将返回Region[1]的0x1.2万,并且该指针值将用于后续的“erase”和“address”命令。   FLem应该使用在FLrr命令中返回的相同指针运行... 但应该使用多少个4KB块?   他们是否应该使用17个4KB块,以确保在从新的开始地址0x1.3万写入数据时擦除将成为第16块的内容?
    现在, FLAD还应使用地址0x1.3万,而不是从FLrr命令返回的指针值。  这与应用注释过程不同,需要知道我们当前是否正在写入区域[0]或区域[1],并且需要修改过程以增加指针地址。   

    很抱歉,如果我完全错过了一些内容,但我希望看到一个强大的说明,使用Flash-Update过程迁移到新工具和0x1.3万地址位置。  我们不能简单地重写整个sFLASH二进制文件来在所有情况下获得新的起点。   谢谢你。

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

    Eric,

    这正是我的观点-正如我在上一篇文章(我再次引用)中提到的那样:"如果使用通过旧工具(...)生成的全闪存二进制文件对sFLASH进行编程,您所描述的问题可能会发生 Low Region (低区域)位于0x2000,High Region (高区域)位于0x1.2万),并尝试使用通过工具的较新版本(假定它生成68KB二进制文件)生成的低区域二进制文件来更新其中任一原因。"

    我承认这一限制-全闪存和低区域二进制文件是相辅相成的,我希望sFLASH的内容能够通过全闪存二进制进行重写,以便能够通过I2C成功更新低区域内容。 我们不能仅仅支持这样一种情况:使用旧工具生成的二进制文件对sFLASH进行编程,并且主机尝试使用计划(尚未发布)的新工具生成的低区域二进制文件更新区域。 如果您说客户无法使用全闪存二进制文件重新编程sFLASH,并且最终会出现更多问题,我们可以推迟更新该工具较新版本中的高区域地址- code+config二进制文件仍在64KB内, 这将适合我们的可用空间,包括b/w 0x2000和0x1.2万。

    关于您所问的16或17个4KB块问题:为了使实施/更新过程更可靠,我建议不要将4KB块的数量硬编码为16或17。 区域偏移0x08和0x0C处的4B内容将分别包含配置和代码修补的大小。 示例:*(0x2008)/*(0x1.2008万)是配置大小,*(0x200C)/*(0x1200C)是代码大小,该工具当前设置为0x1000和0xECBO -这将累加到低区域二进制文件的实际大小。 使用此数据设置4 KB块的#。

    谢谢,此致,

    Praneet