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.

[参考译文] OTA_boot.bin项目

Guru**** 2553260 points
Other Parts Discussed in Thread: CC2538, Z-STACK, CC2530

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

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/582521/ota_boot-bin-project

主题中讨论的其他部件:CC2538CC2538DKZ-stackCC2530

尊敬的支持人员:

我使用了OTA引导.ewm (引导映像引导管理器)的ZStack软件包并下载到cc2538和smatRF06 EB的演示板,

我不能进入主功能。

如果我使用SampleSwitch-enddevice-otaclient-imageA-withbootloader并执行OTA进程与OTA_dongle项目通信,OTA进程成功,但OTA后的设备正常功能 不正常,我应该这样做

重新下载固件,这样就可以了。

您可以为我做同样的事情来检查问题吗?

非常感谢。

巴西,

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

    您正在尝试如何使用OTA Boot工作区? 该工作区用于生成.bin,然后与示例交换机OTA项目一起使用。 将带有引导加载程序工作区的示例交换机OTA客户端设置为将此OTA引导映像与示例交换机映像一起加载到设备中。

    此外,对于使用OTA Dongle服务器和带OTA终端设备客户端的示例交换机的练习,您将向客户端发送什么图像?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Jason:

    首先对于OTA Boot工作区,我只是想检查固件是否应该进入主功能,但到目前为止,我不能进入主功能,只是停留在一些启动代码,我不知道。

    其次,我通过 Otav 2.0 .7发送从OTACE-ImageB编译的Bebe-2538-BBBB0000.ZigBee文件0000.文件。

    顺便说一下,在完成OTA过程后,我没有发现项目重置,因为我在第一行的主要功能设置了断点。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的Jason:
    关于OTA过程已完成,我在调试模式下跟踪了代码,发现该过程成功进入系统重置,但无法重置,可能是引导加载程序的问题,您是否帮助我检查如何为我执行下一步?
    在zclSampleSw_ProcessOTAMSGs()函数的zcl_samplesw.c中:
    案例ZCL_OTA_DL_COMPLETE_callback:
    如果(pMsg->hdr.status == ZSuccessess)

    //重置CRC阴影并重新启动。 引导加载程序将看到
    // CRC阴影已被清除并切换到新图像
    HalOTACWRC();
    SystemReset(); /*********** 它可以到达这里********** /
    }
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否使用CC2538DK进行测试?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的,我在主板cc2538EM和SmartRF06 EB中进行测试,OTA整个过程成功,但无法很好地重置,为什么我知道这一点。
    因为第一次下载后,如果我想进行第二次OTA,则无法正常工作。再次下载固件后,otaserver无法找到设备。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您使用哪种Z-Stack版本?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Z-Stack Home 1.2 .2a.4.4539万
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我在1.2 我的CC2538DK上测试Z-Stack Home OTA.2a.4.4539万,它工作正常。 我建议您按照《Z-Stack OTA升级用户指南》中的步骤再次进行测试。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您可以给我发送OTA_Boot.project源代码吗? 或OTA_Boot.bin?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    OTA引导项目在Z-Stack Home 1.2 .2a中是相同的,我附加了我的boot.bin。

    e2e.ti.com/.../Boot.zip

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

    已附加!

    e2e.ti.com/.../cc2538_2D00_icf.zip

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

    尊敬的陈先生:

    问题仍然存在,你能帮我测试项目OTA_Boot吗?在我看来,如果我们只下载这个引导加载程序项目,程序必须进入主功能,但我无法到达主功能。

    只需打开OTA_BIN项目并下载即可,您可以帮我完成吗?

    非常感谢,任何信息都很受欢迎。

    巴西,

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我在我的CC2538DK上测试OTA启动项目,发现它也无法在主功能处停止。 我还在我的CC2530DK上试用了它,它可以在主站停止。 很奇怪。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您能告诉我CC2530DK项目的源代码吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您可以比较一下这两个.icf文件吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    什么是两个. icf文件?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我的意思是cc2530项目的ICF文件和CC25的ICF文件。
    因为我发现这两个项目的源代码不相同,所以在.icf文件中可能会有一些不同
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    CC2530使用xcl文件,CC2538使用ICF。 它们是不同的。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的介绍。但现在我不知道如何解决此问题,您是否可以让我解决此问题?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    对如何帮助您没有想法。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    有人能帮我修吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的YK:
    这方面有一些改进。
    关于OTA过程已完成,我已在调试模式下跟踪代码,发现该过程成功进入系统重置,如下所示;
    在zclSampleSw_ProcessOTAMSGs()函数的zcl_samplesw.c中:
    案例ZCL_OTA_DL_COMPLETE_callback:
    如果(pMsg->hdr.status == ZSuccessess)

    //重置CRC阴影并重新启动。 引导加载程序将看到
    // CRC阴影已被清除并切换到新图像
    HalOTAInvRC();/**************** 在此处屏蔽此代码********************** /
    SystemReset();/*********** 它可以到达这里********** /
    }
    如果我不屏蔽源代码HalOTACWRC(),设备不能再次进行升级,应该通过IAR +JLINK下载,就可以了。
    但现在我发现如果掩码HalOTACWRC();
    设备可以再次进行OTA,您能告诉我HalOTAInvRC()的功能吗? 以及如何解决这个问题?
    谢谢你。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    有人能帮我弄清楚如何修改这个函数HalOTAInvRC()吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    HalOTACWRC()用于重置CRC Shadow并重新启动。 引导加载程序将看到CRC阴影已清除并切换到新映像。 如果您注释掉它,则bootloader不知道映像已成功下载,它仍将使用原始映像启动应用程序。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的回复,您能否向我展示OTA过程后,OTA项目如何将新映像复制到旧映像,在主功能之前,哪个启动文件中是否存在?
    谢谢你
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在CC2538 OTA中,它不会在Bootloader中复制新映像。 OTA引导加载程序仅跳至下载的图像地址。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢,YK
    如何设置下载的映像地址,我认为它必须是一个常量值,应用程序才能跳到常量值?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您可以参阅Z-Stack OTA升级用户指南.pdf中的2.4 .7.1 CC2538 Cortex-M3 SoC部分。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我没有1.2 v中的2.4 .7.1 部分。
    仅此项:
    2.4 Tm7 OTA启动加载程序
    Z-Stack使用的OTA引导加载程序负责:
     如果给定平台需要,将内存从辅助存储空间复制到主存储空间。
     对可运行映像执行CRC检查以验证映像的完整性。
     确保正确设置中断处理。
     引导应用程序。
    对于Cortex-M3目标中的IBM,引导管理器只需在分类帐页面中查找要运行的就地运行映像。 两个引导应用程序都不能无线升级。
    您能为我显示最新版本吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    e2e.ti.com/.../8637.Z_2D00_Stack-OTA-Upgrade-User_2700_s-Guide.pdf</s>2700

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    嗨,YK:
    根据您的答复:
    在CC2538 OTA中,它不会在Bootloader中复制新映像。 OTA引导加载程序仅跳至下载的图像地址。
    您能否告诉我如何在ZStack的源代码中设置下载的映像地址,我找不到设置,OTA过程完成后重置,固件仍无法跳转到新映像并留在bootloader中。

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

    您是否阅读了CC2538 7.1 Cortex-M3 2.4 章节?


    在CC2538上,下载的图像不会被重新定位,而是Cortex-M3的一项功能“就地运行”。
    CC2538的OTA示例软件演示了如何在片上闪存中维护两个图像。 这些
    被称为“图像A”和“图像B”。 为此,将按中所述分配闪存
    下图。 请注意,包含非OTA内存映射以供比较:

    请注意,CC2538的映像引导管理器(OTA引导加载程序)驻留在Lock Bits (锁定位)页面中。 另请注意
    特殊的“分类帐”页面。 引导管理器使用此选项来维护最新下载的映像和的记录
    确定闪存中的哪个映像在引导时执行。 分类帐条目由的两个CRC值组成
    特定图像(阴影和实际图像)和指向图像中断矢量表(INTVEC)顶部的指针
    其中包括初始堆栈指针和中断处理程序列表(包括重置)
    该图像的句柄。
    虽然默认设置是平均除法,但NV和Ledger不使用闪存,而不是
    任务人。 通过更改特定于主板的hal_board_cfg.h文件中的定义以及对两个图像链接器控制文件进行相应的更改,可以根据需要调整Image-B和Image-B代码区域的大小:
    components\hal\target\CC2538\hal_board_cfg.h
    Projects\ZStack\Tools\CC2538DB\ CC2538-OTA-Image-A.ICF
    Projects\ZStack\Tools\CC2538DB\ CC2538-OTA-Image-B.ICF
    要对OTA Image Boot Manager进行编程,必须构建集成OTA Image的组合二进制映像
    引导管理器,OTA客户端应用程序(例如 Z-Stack Home SampleSwitch或Z-Stack Energy SampleApp)和
    SE OTA客户端应用程序的可选证书。 有关此过程的详细信息,请参阅
    3.2 章节2

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

    感谢您的快速回复。
    我已经检查了ICF.7.1 的部分。我所做的大部分工作,比如2.4 文件和hal_board_cfg.h文件的修改。
    现在我想知道分类帐页面,我已经检查了源代码,它叫HalOTAD(HAL_NVIC_OSET,   (uint8 *)ledger.nvicHum, sizeof((OTA_ledger_t *)0)->nvicHum, HAL_OTA_DL); 在函数HalOTACWRC()中,读取跳转地址并设置引导映像跳转地址的分类帐页,以便在重置后获取跳转地址, 但是现在我没有找到设置跳转地址的位置,我只想知道如何为此设置跳转地址?
    谢谢,等待您的回复。

    巴西,

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

    定义如下:

    在hal_ota.h中

    #define HAL_OTA_RC_ADDR           HAL_IMG_B_BG
    #define HAL_OTA_DL_ADDR           HAL_IMG_A_beg

    在hal_board_cfg.h中

    #define HAL_IMG_a_beg            FLASH_BASE
    #define HAL_IMG_B_BEGB           (FLASH_BASE + 0x0003E000)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    现在还可以了,还有一个问题是关于那个成像A和成像B。
    我是否可以下载镜像B,然后我再次下载镜像B,而不是下载镜像A,它是可以的,或者它应该下载镜像B,然后不加载镜像A,之后是镜像B ...
    我不知道。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    OTA应用程序将检查OTA映像的签名,因此如果您尝试下载镜像B,并且设备已运行镜像B,则不会开始下载OTA映像。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    再次感谢您。根据您的回复,我进行了测试,首先我下载了boot+imageA并使用imageB执行OTA,这非常正常,重置后,imageB运行良好,现在我更改了一些源代码并重建imageA, 我想通过OtaServer下载镜像A。
    但是,OtaServer显示:“No Image was found for Device”,如何解决此问题?
    谢谢你。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果您在未进行修改的情况下重建成像A,它是否有效?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我进行了测试,但仍然显示:"未找到设备的图像"
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您可以对OTA服务器进行屏幕截图吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

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

    巴西,

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

    我看不到您的附件。

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

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尝试使OTA文件的映像版本大于BBBB0000。 例如,使用CCCC0000。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的,根据您的说明,我将版本更改为DDDD0000,因为现在我的运行代码版本是CCCC0000,它可以再次下载。

    但另一个问题是,在我下载版本DDDD0000后,我重建了镜像B源代码以将版本更改为EEEE0000,它也可以下载agagin。

    但正如我们从OTA用户指南中所知:

    CC2538的3.2 .2.2 构建图像A/B示例应用程序
    使用已编程到目标硬件中的初始映像(带引导加载程序的OTA客户端),您的第一个OTA传输映像必须构建为映像B。传输完成后, 目标将重置并引导新的映像B。下一次OTA传输必须是映像A。要利用CC2538的就地运行功能,必须在映像A和B之间执行ping通操作。

    我对此感到困惑,如果不按照A-B-A下载订单,是否会出错?

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我认为文档中没有提到版本号需要大于正在运行的版本。 不管怎样,现在就能正常工作,这是件很好的事。