硬汉嵌入式论坛

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

[官方评估板] 求助MIMXRT1010-EVK FlashLoader APP跳转问题

[复制链接]

0

主题

4

回帖

4

积分

新手上路

积分
4
发表于 2021-8-4 11:36:12 | 显示全部楼层 |阅读模式
本帖最后由 jankey2020 于 2021-8-4 11:45 编辑

背景需求:
1、通过移植flashloader跳转函数部分,实现APP的跳转,直接在flash上运行APP
2、实现第一步后,实现使用USB-HID更新APP
目前试验情况:
1、APP程序
参考SDK led_blinky例程(见附件led_blinky.zip),修改了scf文件里的地址信息,对应的修改了keil编译器的Target中ROM的烧录地址,main函数屏蔽systemtick相关内容,上电后仅初始化LED相关IO及时钟,随后点亮LED。此程序作为跳转后运行的APP程序。
2、引导程序(实现跳转的程序)
2.1基于SDK flexspi----polling_transfer例程(见附件polling_transfer.zip),参考flashloader例程中的jump_to_application函数(见下图),把它移植到polling_transfer中


2.2 屏蔽例程中main中擦写flash的操作函数,防止擦掉APP的内容。随后调用jump函数将APP入口地址传进去,如jump_to_application(0x60080004,0x60080000);借此实现跳转

主要思路:
查看flexspi的scf文件,如下


由此可见它是把flash操作函数加载到ram运行的,通过keil仿真也验证了。因此我将flashloader的函数也移植到该文件中,运行时也在ram调用,随后再跳转到APP地址,直接在flash上运行(XIP)

遇到的问题:
1、跳转前是否需要关中断,关时钟等操作,是否还需要其他配置,程序的配置及编译器的配置?
2、APP里的scf文件修改后的地址是否有误,加载区和运行区的配置是否正确,堆栈的设置?(最主要的问题)
3、如何确定是否跳转成功,是否有工具测试







jump to app

jump to app

scf

scf
回复

使用道具 举报

0

主题

4

回帖

4

积分

新手上路

积分
4
 楼主| 发表于 2021-8-4 11:39:22 | 显示全部楼层
添加附件
ps:这种思路是否正确,有没有可参考的资料
RT1010-EVK.jpg

led_blinky.zip

266.47 KB, 下载次数: 2

polling_transfer.zip

528.09 KB, 下载次数: 2

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107470
QQ
发表于 2021-8-7 10:09:29 | 显示全部楼层
帮顶。
回复

使用道具 举报

0

主题

4

回帖

4

积分

新手上路

积分
4
 楼主| 发表于 2021-8-13 17:44:57 | 显示全部楼层
已实现以下功能,记录一下成功的喜悦
1、通过串口/USB对APP进行更新,完成后自动跳转至APP运行
2、在APP运行时,需要更新时可按下按键跳回BootLoader进行更新

总结分享一下心得:
1、正确加载APP入口堆栈实现跳转;
2、Flash地址空间的规划,就是BootLoader多大,app多大;
3、Flexspi读写操作flash,这部分内容要加载到ram操作;
4、与上位机的通讯,接收数据烧写时要注意关系统中断
5、利用keil仿真查看memory地址的数据是否有异常,数据是否写到了目的地址
6、用抓包工具看是否有丢包

uart update.jpg
usb update.jpg
interrupt addr.png
text addr.png
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-3 06:44 , Processed in 0.264880 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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