硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3838|回复: 6
收起左侧

[ZLG EasyARM-RT1052] 关于RT1052使用U盘升级程序的问题请教

[复制链接]

15

主题

73

回帖

118

积分

初级会员

积分
118
发表于 2020-7-7 14:03:02 | 显示全部楼层 |阅读模式
大家好,想请教大家一个问题,就是使用U盘给RT1052升级的问题:
现在已经给RT1052写好了USB host和fafts文件系统,然后下一步想在U盘插入RT1052的时候,搜索U盘数据,如果有升级文件,就可以选择升级与否。
这方便查了很多资料,官方那边关于mcubootloader的介绍了USB HID的方法居多,各位大侠可否给个提示。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115594
QQ
发表于 2020-7-8 11:13:38 | 显示全部楼层
这个的升级,你能实现在线的Flash擦写就很好做了。
回复

使用道具 举报

2

主题

39

回帖

45

积分

新手上路

积分
45
发表于 2020-7-10 07:57:57 | 显示全部楼层
1. 先参考SDK的mcubootloader, 需要实现检测 ROM2合法标志及CRC检验需要U盘在ROM2数据. 然后将Rom划分为两个大小一样的空间, ROM1, ROM2。
回复

使用道具 举报

2

主题

39

回帖

45

积分

新手上路

积分
45
发表于 2020-7-10 08:22:41 | 显示全部楼层
1. 先参考MCUbootloader, 检查 ROM2更新标志并CRC检查ROM2更新文件数据。2,将ROM划分ROM1,ROM2;ROM1运行代码。ROM2用来存储代码。3.如果插入U盘,搜索有数据,选择升级。拷贝升级文件到ROM2,并置标志位。4,跳到bootloader或重启。5, 进入bootloader并检查标志位及check CRC更新文件,把文件拷贝到ROM1. 并清除标置位。6, 跳到ROM1运行新程序。
回复

使用道具 举报

15

主题

73

回帖

118

积分

初级会员

积分
118
 楼主| 发表于 2020-7-21 09:12:36 | 显示全部楼层
KingChen 发表于 2020-7-10 08:22
1. 先参考MCUbootloader, 检查 ROM2更新标志并CRC检查ROM2更新文件数据。2,将ROM划分ROM1,ROM2;ROM1运行 ...

谢谢你的回复,之前对一些加载文件,XIP还不是很了解,现在知道了,跟你说的差不对。我这边使用了外部Flash和SDRAM,所以比较简单了。
回复

使用道具 举报

15

主题

73

回帖

118

积分

初级会员

积分
118
 楼主| 发表于 2020-7-21 09:17:36 | 显示全部楼层
eric2013 发表于 2020-7-8 11:13
这个的升级,你能实现在线的Flash擦写就很好做了。

谢谢汉哥,之前看了你的建议,我回去补了一些知识,现在搞好了,不过跳转之后还会有一个问题。跳转是成功的,跳转之后会出现概率性卡在APP的LCD初始化的ELCDIF_RgbModeInit函数中。单独下载APP到RT1052是完全不会有卡住的情况的,跳转之前我也试过关闭全局中断 DisableGlobalIRQ()以及SCB_CleanDCache() 和SCB_DisableDCache(),还是消除不了该问题。
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2024-12-27 10:53:34 | 显示全部楼层
WSTON 发表于 2020-7-21 09:17
谢谢汉哥,之前看了你的建议,我回去补了一些知识,现在搞好了,不过跳转之后还会有一个问题。跳转是成功 ...

norflash:W25Q 4M     0-1000:config   ; 1000-2000:IVT ;2000-2400:BOOT的中断向量;  2400-100000:text(BOOT代码) ;100000-101000:APP的参数;  101000-101400:APP的中断向量;101400-200000:APP的代码
SDRAM:DDR 32M   0-400:BOOT的中断向量; 400-100000:BOOT的代码; 100000-200000:预留
启动顺序:1、BOOT启动,自动把代码搬运到DDR,需要手动copy中断向量到DDR并跳转到DDR运行BOOT。(这样就可以对NOR进行读写了)
     2、BOOT启动后,1.3S内检测U盘以及U盘中是否存在要升级的文件,并把U盘中的代码下载到DDR预留区,比较文件与NOR中的APP参数和代码是否需要升级,不需要升级就直接跳转到APP执行(实测OK)
    3、步骤2中需要升级,把DDR预留区中的代码copy到APP代码区,进行跳转(实测,APP不运行U盘驱动,一切正常)。
问题:当APP和BOOT中都使用了U盘驱动,且BOOT中出现发现到U盘之后,再跳转,就会卡死在APP的U盘驱动的位置。如果没有在BOOT中发现U盘直接跳转就不会卡死,一切正常。
尝试: 1、BOOT跳转之前USB-HOST deinit   PHY deinit  USB1->USBCMD复位 、 USBPHY1->CTRL复位
  2、关闭所有中断并清除中断标志位。
  3、关闭系统tick定时器。
以上尝试,均为解决问题。
求助大佬支招!!!万分感谢!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-6 14:36 , Processed in 0.277197 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表