野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8289|回复: 1

关于RT1052下载问题

[复制链接]
发表于 2019-4-14 09:54:47 | 显示全部楼层 |阅读模式
手里有块自己画板子的rt1052可以下载程序但是没法看到运行结果。
于是看了痞子哥的1052启动解析,做了些测试。
首先用jlink看了 SRC_SBMR1 和 SRC_SBMR2 寄存器的值:

SRC_SBMR1
J-Link>MEM8 0X400F8004 0X1
400F8004 = 00 00 00 20


SRC_SBMR2
J-Link>MEM8 0X400F801C 0X1
400F801C = 02 00 00 01


看到这个至少说明我的boot设置没有问题,选择了Internal Boot模式下载,而且BT_FUSE_SEL位为0BOOT_CFG[4:0]为4b'0,说明我是选择从SPI FLASH下载,这也符合板子上的spi flash电路


现在下载程序是没有问题了,程序应该是正常下进了flash里,也应该会从flash启动。接下来猜测是程序内容的问题。


继续用jlink读取内容,这回读取的是IVT,Boot Dat等一系列数据。看了许多文章,这些信息应该是在flash偏移0x1000的地方(0x60000000+4*1024)。但是我不知道用jlnk读取应该读0x60001000还是直接读flash的偏移量0x1000,我感觉因该是0x60001000,下面贴出内容:



J-Link>mem8 0x60001000 0x30
60001000 = A2 29 D5 5B EC 5A DA C7 A2 29 D5 5B EC 5A DA C7
60001010 = A2 29 D5 5B EC 5A DA C7 A2 29 D5 5B EC 5A DA C7
60001020 = A2 29 D5 5B EC 5A DA C7 A2 29 D5 5B EC 5A DA C7


按我的理解BootDat的前32位就是Application的地址了(0xa223d55b),不过综合查找的资料以及map文件,这个地址并不是Application的地址,我也不知道为什么,可能我有哪里理解错了?综合我查找的资料(http://www.firebbs.cn/forum.php? ... id=24119&page=1)Application的地址应该是0x60002000,下面依然贴出内容:

J-Link>mem8 0x60002000 0x30
60002000 = A2 29 D5 5B EC 5A DA C7 A2 29 D5 5B EC 5A DA C7
60002010 = A2 29 D5 5B EC 5A DA C7 A2 29 D5 5B EC 5A DA C7
60002020 = A2 29 D5 5B EC 5A DA C7 A2 29 D5 5B EC 5A DA C7


这我就迷了啊,这一看就不是正经的程序数据啊,红色部分的PC指针也不像是什么正经指针。我想知道我的分析过程有没有问题,哪个步骤有问题。比如是是读IVT读错了还是程序其实位置找错了。还有为什么程序不是在bootdat的前32位0xa223d55b而是在0x60002000?
感谢各位大佬解答疑惑!

回复

使用道具 举报

 楼主| 发表于 2019-4-15 01:38:25 | 显示全部楼层
好了好了   我找到问题了
我们理清一下思路

1 我们读取 SRC_SBMR1 和 SRC_SBMR1 的寄存器的值,这一步应该没有做错
2 我们读取IVT,BD等数据,想借此找到真正的Application数据放在了哪里。由于我用的spi nor flash启动,所以IVT在0x60001000是没错的,用jlink直接读取0x60001000而不是0x1000的偏移量。
  60001020 = 00 00 00 60 00 00 80 00 00 00 00 00 FF FF FF FF现在读到了BD数据,取前面32位也就是00 00 00 60,而这4字节数应该是小端存储,所以App数据在0x60000000(基本功不扎实啊,才发现这是小端模式)。这样就和map文件对上了。
3 那我们就放心大胆的去查看0x60000000地址的值吧
  60002000 = 00 00 24 20 A1 24 00 60 B9 24 00 60 BB 24 00 60 把第二个word提取出来 A1 24 00 60,同样是小端模式存储,组合成0x600024a1,可以看出这值在0x60000000~0x607ffffh之内,也就是PC指针指向flash空间。哦忘了说,我下载的工程是XIP工程,在flash
  内运行的。这样就对了。


至于以上我读出的数据为什么明显有问题我感觉是flash(w25q64)坏了或者电路有问题?刚下载完读出的数据还正常,过一下再读flash就不对了。
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-5-6 23:34 , Processed in 0.031000 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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