TI中文支持网
TI专业的中文技术问题搜集分享网站

AWR2944: awr2944的在线升级方案

Part Number:AWR2944Other Parts Discussed in Thread: UNIFLASH

你好,工程师

           请问有关于awr2944的在线升级(OTA)方案吗?

谢谢

Shine:

可以参考下面的帖子。https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/1077334/iwr6843levm-does-iwr6843-support-ota-or-remote-upgrade

,

ZhiQiang Lin:

你好

如上面的帖子,SBL应该是在.appimage烧写之后,将appimage文件加载到对应的cpu的。我需要的是如何在AWR2944处于qspi boot mode的情况下,通过串口向flash写入新的.appImage文件。

1.了解到正常的烧写应该切换到uart boot mode,并且烧写需要3个文件uart_uniflash.release.tiimage 、sbl_release.tiimage 、appimage文件,其中第一个文件uart_uniflash.release.tiimage是引导后两个文件烧写到flash中的固定位置的。在qspi boot mode的情况下,能否每次更新固件只烧写.appimage文件,保持SBL和uart_uniflash文件不变?或者能否在不更换SOP的情况下,通过寄存器实现boot模式的切换?

2.在烧写完成后,需要复位AWR2944使其重新从flash中boot,请问要怎么实现软复位?

3.注意到通过串口的烧写过程较慢,需要约1分钟,串口的模式为interrup模式,readmode为block,所以要先暂停DPC和frame,然后在烧写完成后重启,请问要如何实现?

4.在1.中提到的uart_uniflash.release.tiimage会在DSS的L3分配一块内存暂存从串口收到的.appimage文件,再写入到flash中,请问在板子正常工作时,怎样通过MCU这边的程序在DSS上申请内存,有什么函数可以查看当前2944的内存使用情况?

,

ZhiQiang Lin:

对于上面的2,有没有类似文档Soft Reset Using CLI User Guide (ti.com)中提到的复位的方法,如果有应该往哪个寄存器地址写什么?

,

Cherry Zhou:

您好,我们已收到您的问题并升级到英文论坛寻求帮助,如有答复将尽快回复您。谢谢!

,

ZhiQiang Lin:

你好,

对于上述的第2点,我在论坛上找到一个相关的帖子AWR2944: Warm reset is reinitializing the MSS_L2 and DSS_L3 RAM – Sensors forum – Sensors – TI E2E support forums,我按照里面的做法对代码做了更改并重新生成并更新了sbl_qspi.tiimage文件,但是仍然不起作用,当使用CLI命令输入reset的指令后,板子就宕机了,并没有重新进入SBL。

,

ZhiQiang Lin:

你好

谢谢你在英文论坛上帮忙提问。关于解答的第二点,调用函数Bootloader_runSelfCpu只会重置ARM R5F我在CLI中定义的函数中调用该函数后,程序直接宕机了,而且该函数在SBL的main程序中的位置是SBL引导.appimage文件完成后。我想要实现的是当收到CLI命令后,可以重新运行SBL函数,及从RBL开始运行。

,

ZhiQiang Lin:

参照AWR2944EVM: How to reset all program(include bootloader) by software – Sensors forum – Sensors – TI E2E support forums,在SDK4.3.1版本可以使用CLI命令进行复位,但是在SDK4.2.2版本仍无法使用

,

Cherry Zhou:

以下是英文论坛的链接,您可以多多关注工程师的答复:

e2e.ti.com/…/4514988

,

ZhiQiang Lin:

你好

关于在qspi模式下通过串口接收上位机发送的appimage文件,在uart boot mode下,使用uart_uniflash.tiimage烧写脚本,其中使用xmodem协议从串口接收appimage文件,但是在qspi模式下不具备该烧写脚本,能否直接使用uart_read函数读取文件?会不会出现文件读取错误?

请详细的说明一下如何在DSS的L3上开辟内存用于临时存储appimage,然后写入到flash中?在回答中提到的函数Bootloader_socMenInitCpu中会初始化关于L3的bank,而不是分配内存,我在uart_uniflash.c中的中看到了如下内存申请的方式

#define BOOTLOADER_UNIFLASH_MAX_FILE_SIZE (0x200000) /* This has to match the size of DDR section in linker.cmd */
uint8_t gUniflashFileBuf[BOOTLOADER_UNIFLASH_MAX_FILE_SIZE] __attribute__((aligned(128), section(".bss.dss_l3")));
在uart_uniflash.c的main函数中调用了函数Bootloader_socCpuPowerOnReset(CSL_CORE_ID_C66SS0);在该函数的内部有调用上面提到的函数Bootloader_socMenInitCpu,请问这种方式是否可行?我尝试用这种方法进行内存分配时,当调用函数Bootloader_socCpuPowerOnReset后,程序宕机了,请问是为什么?是否需要先关闭DSP核再调用该函数?
谢谢

,

Cherry Zhou:

您好,

ZhiQiang Lin 说:关于解答的第二点,调用函数Bootloader_runSelfCpu只会重置ARM R5F我在CLI中定义的函数中调用该函数后,程序直接宕机了,而且该函数在SBL的main程序中的位置是SBL引导.appimage文件完成后。我想要实现的是当收到CLI命令后,可以重新运行SBL函数,及从RBL开始运行。

ZhiQiang Lin 说:参照AWR2944EVM: How to reset all program(include bootloader) by software – Sensors forum – Sensors – TI E2E support forums,在SDK4.3.1版本可以使用CLI命令进行复位,但是在SDK4.2.2版本仍无法使用

以上两点工程师已跟进,您可以多多关注。

ZhiQiang Lin 说:

关于在qspi模式下通过串口接收上位机发送的appimage文件,在uart boot mode下,使用uart_uniflash.tiimage烧写脚本,其中使用xmodem协议从串口接收appimage文件,但是在qspi模式下不具备该烧写脚本,能否直接使用uart_read函数读取文件?会不会出现文件读取错误?

请详细的说明一下如何在DSS的L3上开辟内存用于临时存储appimage,然后写入到flash中?在回答中提到的函数Bootloader_socMenInitCpu中会初始化关于L3的bank,而不是分配内存,我在uart_uniflash.c中的中看到了如下内存申请的方式

#define BOOTLOADER_UNIFLASH_MAX_FILE_SIZE (0x200000) /* This has to match the size of DDR section in linker.cmd */
uint8_t gUniflashFileBuf[BOOTLOADER_UNIFLASH_MAX_FILE_SIZE] __attribute__((aligned(128), section(".bss.dss_l3")));
在uart_uniflash.c的main函数中调用了函数Bootloader_socCpuPowerOnReset(CSL_CORE_ID_C66SS0);在该函数的内部有调用上面提到的函数Bootloader_socMenInitCpu,请问这种方式是否可行?我尝试用这种方法进行内存分配时,当调用函数Bootloader_socCpuPowerOnReset后,程序宕机了,请问是为什么?是否需要先关闭DSP核再调用该函数?

我们跟进给工程师看下。

赞(0)
未经允许不得转载:TI中文支持网 » AWR2944: awr2944的在线升级方案
分享到: 更多 (0)

© 2024 TI中文支持网   网站地图 鲁ICP备2022002796号-1