查看: 7621|回复: 2

[原创] 【经验分享】RT105X烧录RAM APP到qspi flash image实例分析

[复制链接]

该用户从未签到

728

主题

6387

帖子

0

超级版主

Rank: 8Rank: 8

积分
25741
最后登录
2025-10-2
发表于 2019-11-6 18:23:04 | 显示全部楼层 |阅读模式
本帖最后由 小恩GG 于 2019-11-7 10:00 编辑

【经验分享】RT105X烧录RAM APPqspi flash image实例分析

一,文档介绍

        相信大家在看了痞子衡关于RT启动的文档之后,对RT代码启动结构已经比较熟悉 ,具体可以查看如下原文链接:


  本文为了更清晰的显示RT外部flashboot image的结构,以实例代码下载后读出memory形式来说明内存结构。

根据NXPRT相关文档可以知道实际的flash memory分块情况如下:

1.jpg

1 boot image

   下面我们使用IDE生成一个放在RAMapp代码,然后通过MCUBootUtility工具烧录之后,具体分析相关的内存块以及启动情况,希望能够更加清楚的帮助大家理解RT的外部memory启动。

    本文使用涉及到的工具有:MCUBootUtilitySRecordizer

二,MCUXPressoIDE 生成RAM app代码

     首先准备一个基于MCUXpressoIDERAM app代码,代码偏移地址为0XA000。当然其他的RAM地址也是可以的,这里仅仅以0XA000为例。

代码可以使用官方的SDK代码,如果要生成放到RAMcode,可以做如下配置。

2.jpg
2 mcuxpress IDE memory配置


3.jpg
3 RAM image 配置

配置好后,编译工程,然后选择.axf文件右击可以生成相关的image 这里我们选择S-record格式文件,也就是srec/s19文件。

4.jpg
4 生成app srec文件

点击之后,可以在相应的debug或者release文件夹下看到自己的.s19 app文件。生成的可执行文件可以改为其他名字,为了便于识别,我们这里名称改为

evkbimxrt1050_led_softwarereset_0xa000.s19,本代码功能为:RT1050-EVKB板上LED闪烁,启动之后打印信息,按键按下WAKEUP引脚,可以实现代码的软件复位。这里打开生成的evkbimxrt1050_led_softwarereset_0xa000.s19,第一行S0SREC文件格式中用于记录类型的,没有地址场,只是表示程序的开始,不需要烧录memory中,S1类型带有地址场和数据场,是真正的app image开始,可以看到代码的起始地址已经被放到0XA000之前定义的RAM目标地址。



5.jpg
5 s19 image查看

三,MCUBootUtility烧录的image分析

下面使用MCUBootUtility烧录到MIMXRT1050-EVKB QSPI 版本的nor flash中,然后开始分析相关image分区的代码以及信息。

从第一章的图1,可以看到,普通不带加密的app image烧录到外部norflash后,大致分为7块:FDCB,BLANK,IVT,BOOTDATA, DCD,APP,BLANK.

6.jpg


6 app imageflash中查看

由于RAM烧录到外部flash的代码并不是XIP的,所以会在启动之后把所有代码拷贝到内部的RAM 根据上面的代码信息,可以知道启动之后内部ITCM的最终地址映射情况如下:


7.jpg
7 app imageITCM中映射情况


1IVT: hdr IVT的头,具体见hab_hdr

2:   IVT: entry app entrypointAddress, 一般设为复位中断地址。图中连线到APP     0XA004即复位中断地址,可以看到数据的确为0X00A2DD.

3:  IVT: reserved

4:  IVT: DCD 用于SDRAM SEMC的配置,如果没有用SDRAM,则没有。

5:  IVT: BOOT_DATA 指定BOOT_DATA的起始地址0X9020

6:  IVT: self, ivt本身的起始地址为0X9000

7:  IVT:CSF,指定CSF的起始地址,无加密则无CSF

8:  IVT:reserved

9:BOOT_DATA: startimage的起始地址,这里最终为ITCM0X80000XA000-0X2000=0X8000

10:BOOT_DATA: size, APP的总size大小,可以图5看到,0Xf244-0xa000=0x7244

11: APP 结尾地址,可以用于算app代码大小。

到这里,可以看到具体的实例数据对应情况已经非常明显。

【经验分享】RT105X 烧录RAM APP到qspi flash image实例分析.pdf (498.25 KB, 下载次数: 65)
回复

使用道具 举报

  • TA的每日心情
    慵懒
    2021-12-23 09:57
  • 签到天数: 1587 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    5

    主题

    3048

    帖子

    23

    金牌会员

    Rank: 6Rank: 6

    积分
    8419
    最后登录
    2025-9-1
    发表于 2019-11-6 20:54:12 | 显示全部楼层
    手动点赞!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    2

    主题

    4

    帖子

    0

    注册会员

    Rank: 2

    积分
    60
    最后登录
    2022-10-12
    发表于 2022-10-12 08:58:39 | 显示全部楼层
    请问LPC54xx 怎么实现bootloader + app模式?app编译怎么设置?跳转地址怎么配置?谢谢
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-10-7 11:58 , Processed in 0.081494 second(s), 21 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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