尊敬的支持人员:
我使用了OTA引导.ewm (引导映像引导管理器)的ZStack软件包并下载到cc2538和smatRF06 EB的演示板,
我不能进入主功能。
如果我使用SampleSwitch-enddevice-otaclient-imageA-withbootloader并执行OTA进程与OTA_dongle项目通信,OTA进程成功,但OTA后的设备正常功能 不正常,我应该这样做
重新下载固件,这样就可以了。
您可以为我做同样的事情来检查问题吗?
非常感谢。
巴西,
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引导.ewm (引导映像引导管理器)的ZStack软件包并下载到cc2538和smatRF06 EB的演示板,
我不能进入主功能。
如果我使用SampleSwitch-enddevice-otaclient-imageA-withbootloader并执行OTA进程与OTA_dongle项目通信,OTA进程成功,但OTA后的设备正常功能 不正常,我应该这样做
重新下载固件,这样就可以了。
您可以为我做同样的事情来检查问题吗?
非常感谢。
巴西,
您好,Jason:
首先对于OTA Boot工作区,我只是想检查固件是否应该进入主功能,但到目前为止,我不能进入主功能,只是停留在一些启动代码,我不知道。
其次,我通过 Otav 2.0 .7发送从OTACE-ImageB编译的Bebe-2538-BBBB0000.ZigBee文件0000.文件。
顺便说一下,在完成OTA过程后,我没有发现项目重置,因为我在第一行的主要功能设置了断点。
OTA引导项目在Z-Stack Home 1.2 .2a中是相同的,我附加了我的boot.bin。
e2e.ti.com/.../8637.Z_2D00_Stack-OTA-Upgrade-User_2700_s-Guide.pdf</s>2700
您是否阅读了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)
是的,根据您的说明,我将版本更改为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下载订单,是否会出错?