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.

[参考译文] BQ28Z610:如何退出 ROM 模式?

Guru**** 2535150 points
Other Parts Discussed in Thread: BQSTUDIO, BQ28Z610, BQ40Z50-R1, BQ40Z50-R2

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/731918/bq28z610-how-to-exit-the-rom-mode

器件型号:BQ28Z610
主题中讨论的其他器件:BQSTUDIOBQ40Z50-R2BQ40Z50-R1

您好!

我生成了黄金映像并尝试将其刷写到微处理器中。 以下是生成的前几行:

W:AA 3E 33 00
X:1000
宽:16 09 00 00
W:16 0A 00
宽:16 09 02 00
W:16 0A 00
W:16 00 00 00
W:16 1A DE 83
宽:16 06 00 00

我意识到在加载第一行后、它会自动进入 ROM 模式。 因此、第一次运行后、如果我再次运行它、它无法检测从地址0xAA、只是卡在那里(通过 I2C 总线发送 NACK)。 即使我再次尝试为其供电、问题也无法解决。 我有几个与此相关的问题:

1.器件进入第三行时是否进入 ROM 模式? 我在网上看到一些文档说要进入 ROM 模式、我需要将0x0F00写入0xAA、这意味着我应该在生成的文件中看到一条类似 W:AA 00 0F 的行、但我没有看到。 即使不这样做、我的器件在运行第三行时是否自动进入 ROM 模式?

2.如果问题是因为我的器件进入 ROM 模式、那么我是否仍然可以退出 ROM 模式(不使用 bqstudio、因为芯片已经焊接到定制板上)? 我尝试发送 W:0x16 0x08 0x00 0x00、但如果我尝试在该命令之后向0xAA 地址运行某些命令、它仍然不起作用。

3.设备是否必须进入 ROM 模式才能将黄金映像刷写到处理器中?  

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

    您好!

    1.您说得对、发送0x0F00至0x00会将器件发送到 ROM 模式、但为了向后兼容某些较旧器件、0x0033也可以工作、也可以将其写入0x3E。 一旦处于 ROM 模式、器件地址也从0xAA 变为0x16。

    2.要退出 ROM 模式、您必须发送 W:0x16 0x08而不包含任何数据。

    3.仅当您需要更新固件时,设备才需要进入 ROM 模式。 如果只需要写入数据闪存、则无需进入 ROM 模式。 我记录了一些您可以遵循的步骤:

    e2e.ti.com/.../bq28z610-Production-Programming.pdf

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

    非常感谢您的快速回复。 我们目前正在尝试更新固件、因为芯片已经在我们的板上、无法连接到 bqStudio。 我们正在尝试通过 I2C 总线将黄金映像刷写到我们的处理器中。 我卡在 ROM 模式下、无法返回正常模式(将数据发送到0xAA 地址)、这是我尝试的方法、如果您能让我知道错误的地方、我会非常感激!

    W:0x16 0x08 //尝试退出 ROM 模式

    W:AA 3E 33 00 //尝试从头开始运行程序
    X:1000
    宽:16 09 00 00
    W:16 0A 00
    宽:16 09 02 00
    W:16 0A 00
    W:16 00 00 00
    W:16 1A DE 83
    宽:16 06 00 00

    这是正确的方法吗? 我仍然卡在第二行、从 I2C 总线获得一个 NACK。 但是、如果我删除第二行、并且仍然向地址0x16发送数据、则可以继续。 我不确定在本例中会发生什么以及如何从它中获取。 是否有任何文档解释了如何为此更新固件、以便我查看?

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

    您好!

    我将首先检查您是否可以退出 ROM 模式。

    我在 bq28z610上的 Beagle 上运行和捕获了以下序列:

    顺序如下:

    W:AA 00 0F //转至 ROM 模式,如果它已经处于 ROM 模式,则该命令将否定,因为它在 ROM 模式下无法在地址0xAA 处响应

    R:16 0D //读取0x0D,如果它处于 ROM 模式,它将返回 ROM 版本。 对于 bq28z610、如果它不在 ROM 模式中且 值小于100、则应为9101

    W:16 08 //退出 ROM 命令

    R:AA 0D //读取0x0D,如果它无法退出 ROM 模式,它将会 NACK,因为它在 ROM 模式下无法在地址0xAA 处响应

    如果监测计无法退出 ROM 模式、您尝试更新的固件很可能与您的器件不兼容。

    您能告诉我您为软件包订购的器件的固件版本、以及您尝试更新的版本吗?

    此致、

    Swami

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

    你好,Swami,

    非常感谢您的回复。

    我已经尝试发送您给我的命令、似乎我的器件卡在 ROM 模式、因为任何以0xAA 开头的内容都只能接收 NACK。

    至于固件更新、我们目前使用固件版本为 v0.17的 bq28z610 EVM 来生成黄金映像。 然后将 bqfs 文件转换为头文件、将其包含在我们的项目中、并尝试将其从处理器刷写到电量监测计。 闪存方法是使用我们编写的 I2C 读取/写入命令通过 I2C 总线发送每行命令。 当我们尝试将黄金映像加载到电量监测计时、我们的器件卡在 ROM 模式下。 在它卡在 ROM 模式之前、我能够执行一些命令、但之后它再也无法与地址0xAA 通信。 我们是否还可以从其中获取、因为命令 W:16 08实际上不能帮助我退出 ROM 模式? 或者是否有任何其他原因可能导致这种情况? 非常感谢您的帮助!

    此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    除了错误的固件之外、如果指令闪存中的任何内容损坏、它将不会退出 ROM 模式。
    如果黄金文件为 v0.17、设备上的固件也为 v0.17、则最好仅在固件模式下更新数据闪存、而不是在 ROM 模式下更新数据闪存、因为在 FW 模式下仅写入数据闪存要安全得多。
    诊断出错的唯一方法是使用 bqStudio 从该器件上载 srec、并将其与 golden 文件的 srec 进行比较。
    此致、
    Swami
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好,Swami,

    在这种情况下、我们是否有任何方法可以检查指令闪存中是否存在损坏的内容? 此外、根据数据表、如果指令闪存损坏、器件将进入永久性故障模式。 我们是否可以检查任何值以查看器件是否进入了永久故障模式?

    如果指令闪存出现问题、我们是否仍然可以修复它? 或者唯一的选择是替换芯片?

    请告诉我、非常感谢!

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

    你好,Swami,

    我刚刚从"生产时更新固件"手册中看到下面的这段内容。 我认为这也可能是我们的问题。 第一次运行固件时、我们没有让它正确完成编程、但是电量监测计已经处于 ROM 模式。 这可能是为什么发送 W:0x16 0x08不能帮助我再次退出 ROM 模式的原因。 我只是想知道、当它提到"在固件或数据闪存未完全编程的情况下退出 ROM 模式可以将器件置于不可恢复的模式"时、它是如何指的? 硬件是否完全中断、因此我们必须用新硬件替换它、或者是否有任何软件方法可以恢复它?

    请告诉我、非常感谢您的帮助

    此致

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    遗憾的是、如果编程中断、可能会导致启动 ROM 无法正常执行、因为它确实使用了闪存中的某些位置。 即使硬件没有物理损坏、这种情况也无法恢复、您必须更换设备。
    除非有必要、否则我们不建议为此目的在 ROM 模式下对器件进行编程。
    只有在更改或升级器件上的固件时才需要在 ROM 模式下进行编程、所有其他编程都应在固件模式下执行。
    此致、
    Swami
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,Swami,

    感谢您的回复。

    根据您到目前为止告诉我的情况、如果我理解正确、如果我们只想加载黄金文件(写入数据闪存)、我们根本不应该进入 ROM 模式。 需要注意的是、BQ28的固件版本必须与用于生成黄金文件的 BQ Studio 版本相同?

    我想我们遇到的问题是、我们尝试加载的文件实际上可能不是黄金文件、因此错误地进入 ROM 模式。 关于这一点、请您评论以下内容吗?

    1.我们是否能够使用 主机微控制器而不是 BQ Studio 发出的 I2C 命令加载黄金文件?

    golden 文件应该是什么格式? 在.srec 中? 由于固件更新文件也位于.srec 中、是否仍有要查看我们现在拥有的 srec 文件是黄金文件还是固件更新文件? (当我接管其他人的工作时、我不确定文件到底是什么)

    3.黄金文件版本是否与 BQstudio 版本绑定? 如果我们的电量监测计固件与黄金文件版本不匹配、我们如何生成不同版本以避免更新固件?

    4、连接是我们生成的黄金文件之一(已将其转换为 bqfs)、但前几行仍使我们进入 ROM 模式。 我已将该文件附加到该帖子中、您能否查看并告诉我该文件是否有意义?

    很抱歉、如果我问了很多问题、但这个项目非常紧急、似乎我们没有走上正确的道路。 如果您能向我澄清这些问题、我们将不胜感激!

    请告诉我、非常感谢

    此致、

    e2e.ti.com/.../golden_5F00_file.txt

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    您附加的黄金文件是一个 bqfs 文件。 使用此格式、您必须进入 ROM 模式、因为文件包含数据闪存和指令闪存。
    通常、您不需要对数据闪存和指令闪存进行编程、并且仅对数据闪存进行编程更安全、这可以在不进入 ROM 模式的情况下完成。
    为此、按照之前随附文档中"bq28z610 Production Programming.pdf"部分中的"使用十六进制转储文件进行编程:"部分中的说明进行操作要容易得多。
    bq28z610 ( www.ti.com/.../sluua65c.pdf )技术参考手册的第12.2.45节中有相关说明,可在您的微控制器中实现,以便使用十六进制转储中的数据写入数据闪存。
    bqStudio 版本与器件上运行的固件版本或从器件中读取的 srec 或 bqfs、dffs 或 gg.csv 文件无关。
    此致、
    Swami
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,Swami,

    感谢您的回复。

    我们刚刚使用 bqstudio 生成了.gg 文件、并尝试将其加载到我们的处理器中。 gg 文件看起来有很大不同、下面是生成的前几行:

    *德州仪器数据闪存二进制映像文件。
    *所有值都是十六进制的、从数据闪存偏移零开始。
    *
    *在2018年10月09:51:02日星期二创建的文件
    *器件名称 bq28z610
    *器件标识符 bq28z610 v0.19内部版本24
    *关闭-
    *设置+0 +1 +2 +3 +4 +5 +6+7
    0000:45 2F 05 C2 28 BF 0C 78
    0008:65 40 D5 8A 82 49 00 00
    0010:40 00 00 00 00 00 00
    0018:00 FF FF FF FF FF FF FF FF FF
    0020:FF FF FF FF FF FF FF FF FF
    0028:FF FF FF FF FF FF FF FF FF
    0030:FF FF FF FF FF FF FF FF FF

    如果我想使用与之前 bqfs 文件格式类似的内容将数据写入器件、下面的解释是否正确?  


    W:AA 3E 00 40 45 2F 05 C2 28 BF 0C 78 65 40 D5 8A 82 49 00 40 00 00 00 00 00 00 00 00
    W:AA 3E 20 40 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF

    我还想知道、在开始使用制造过程中的电量监测计之前、是否至少需要更新一次指令闪存? 因为我假设 srec 文件必须包含一些需要设置的参数。 然后、如果我们需要更新黄金文件、我们只能写入数据闪存? 或者、我们可以保留制造商的指令闪存并始终仅更新数据闪存?

    请告诉我、非常感谢您的帮助!

    此致

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    是的、您的解释正确、您应该能够使用此过程更新数据闪存。
    除非您需要更改器件的固件版本、否则不应更新指令闪存。 它没有任何可配置的内容。
    srec 文件包含三个部分:
    1.数据闪存(用户设置和电量计设置、包括化学成分信息)
    2.指令闪存(监测计处理器的固件)
    3.信息块(有关设备硬件和固件 ID 的信息)

    2和3仅在从一个固件版本转换到另一个固件版本时发生更改(例如、您可以在 bq40z50-R1器件上对 bq40z50-R2进行编程以使用下一个版本的器件、这将需要对指令闪存和信息块进行编程)

    在您的情况下、我建议仅对数据闪存进行编程。
    此致、
    Swami
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,Swami,

    非常感谢您的回复。

    我们刚刚尝试使用上述方法更新到 DataFlash。 我们似乎无法成功写入 DataFlash。 我正在从 I2C 总线获得一个 ACK、但如果我们尝试从 DataFlash 读回、即使我们刚刚在中写入了其他值、我们仍会读取默认值。 只是想知道导致写入 DataFlash 失败的问题是什么?

    请告诉我! 非常感谢您的帮助

    此致、

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

    你好,Swami,

    实际上、我刚刚意识到我的同事之前在 E2E 社区中提出了类似的问题、以下是原始帖子的链接:
    e2e.ti.com/.../721723

    另一位 TI 员工提到、如果不使用 bqstudio、就无法更新 DataFlash。 我只是想知道我的 I2C 命令中缺少任何内容、还是无法更新 DataFlash。 是否需要在每个命令的末尾添加校验和?

    请返回给我、感谢您的帮助

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Emil、
    根据您通过其他渠道进行的通信、您已解决此问题。 如果您有任何时间与其他用户共享、请在此处发帖。 否则、我们将关闭该线程。 谢谢!