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.

[参考译文] TMS570LS1224:TI FEE 驱动器在配置上添加块后放慢速度

Guru**** 2544110 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1021664/tms570ls1224-ti-fee-driver-slow-down-after-adding-blocks-on-configuration

器件型号:TMS570LS1224

您好、支持团队、

我们正在进行一个项目、我们更新了 TI FEE 配置、将2个块添加到之前的4个块配置中。

我们不更新 先前分配的块的块大小和数据集。

我们遇到了 TI 驱动程序减速的情况(TI_FEE 主函数需要更多的时间/调用来 完成写入并从 繁忙状态退出)

问题1:是否有关于完成忙线操作所需的时间的信息、与块数相关(时间与块数相关)?

Q2:我对如何使用 TI FEE 驱动器有另一个问题。 TI 文档建议在请求操作后安排任务并调用 TI_FEE 维护功能、直到空闲。 计划/上下文切换是否是强制性的、或者我们可以在同一上下文中在操作请求后多次调用 TI_FEE Mainfunction?

感谢您的支持

Ilario

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

    您好!

    问题1. 时间取决于闪存操作、也与块数量相关。 当您将数据写入一个块时、驱动程序需要通过检查所有数据块的配置数据块数量来获取块阵列索引。

    问题2.  TI_FEE WriteSync 函数会同步完成数据写入、即在函数退出之前将数据写入 EEPROM。 TI_fee_WriteAsync 函数接受写入作业、但实际写入数据在 TI_fee_Mainfunction API 中完成。  应调用 TI_fee_Mainfunction() 来完成异步写入/读取作业,将数据移动到新扇区(扇区已满),擦除该扇区并准备好使用。

    是的、您 可以在异步操作请求后多次调用 TI_FEE Mainfunction。

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

    您好!

    感谢大家的支持、但时间差异很大、可能我的问题是什么。

    我们有如下所示的 fee:

    - 4个块:1和2个,250个25字节的数据集;3和4个,不同的设置(数据集总数584)

    将0xAA 写入1°块的所有(250)数据集需要~500ms

    我们现在有如下所示的新 cfg:
    6个块:1、2、3、4个像旧块;5和6个,100个25字节的数据集(数据集总数784)

    将0xAA 写入1°块的所有(250)数据集所需的时间现在超过30秒

    您能否澄清单个数据集的访问权限是否正确?
    我们使用的写操作如下所示:
    块5的数据集0x64:(0x500 | 0x64)= 0x564

    TI_FEE WriteSync (0x564、缓冲器);


    为什么要再添加2个块(200个数据集)、性能会受到如此大的影响?

    此致
    Ilario

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

    差异太大:500ms 与30s。

    新块是否编程到虚拟扇区的末尾? 将新块写入虚拟扇区时是否发生扇区擦除操作? 如果当前虚拟扇区中没有足够的空间对块进行编程、则会切换到下一个虚拟扇区、并将当前虚拟扇区中的其他数据块中的所有有效数据复制到新数据块。 复制完所有有效数据后、 新数据将写入新的活动虚拟扇区、标记为准备擦除的当前虚拟扇区将在后台擦除。

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

    问:新块是否编程到虚拟扇区的末尾?  

    答:我转储块1的存储器和数据集、块5的数据集连续写入相同的 VS

    问:将新块写入虚拟扇区时是否发生扇区擦除操作?

    答:如何验证?

    问: 如果当前虚拟扇区中没有足够的空间对块进行编程,则.....

    答:我们正在模拟2个 EEPS、两个 EEP 都具有2个虚拟扇区、每个虚拟扇区都映射了1:1个物理扇区。

    我们无法理解数据是否适合一个虚拟扇区、因为我们无法理解开销。

    从反向工程转储看来、对于25字节的数据集、FEE 驱动器使用56字节 o 物理存储器

    当数据不再适合虚拟扇区时、似乎会在虚拟扇区的开头开始写入、例如循环缓冲区。

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

    您好 QJ、

    您能否帮助我了解如何计算此配置的开销以及使用的虚拟扇区大小和物理矢量的总量?

    我担心不适合矢量

    谢谢你  

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

    您好、  

    您想与我们分享您的代码吗? 我想使用您的代码在工作台上进行测试。

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

    对于 NDA、我很遗憾无法这么做。 我能提供不同的帮助吗?

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

    您好、Ilario、

    我刚刚对您的 FEE 配置进行了测试、但我使用了1 EEPS。 我注意到块大小对于虚拟扇区来说太大了。 1个虚拟扇区的大小为0x4000字节。 块#1大小为255*(32 + 24)= 0x37C8。 其中255是块1中的数据集数量,24是块标头的大小,32是块大小(舍入到 n*8字节)。 虚拟扇区的大小为32字节。 虚拟扇区和块#1的总大小为0x37E8。

    当将块3的数据集#44写入 EEPROM 时、由于虚拟扇区0已满、因此数据集#44将写入虚拟扇区1、然后虚拟0中的所有数据将复制到虚拟1。 遗憾的是,虚拟1没有足够的空间来容纳来自虚拟扇区0的数据。 代码将不断复制数据并擦除扇区、数据集#45/46./80将不会写入 EEPROM。