初级会员
- 积分
- 171
- 金钱
- 171
- 注册时间
- 2018-8-23
- 在线时间
- 43 小时
|
2金钱
本帖最后由 彭景昊 于 2019-4-14 03:02 编辑
之前买的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位为0;BOOT_CFG[4:0]为4b'0,说明我是选择从SPI FLASH下载,这也符合原子哥板子上的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?mod=viewthread&tid=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指针也不像是什么正经指针。要是我的分析过程没问题,那么这一串代码运行起来没有效果那真是理所当然的了。那么问题是为啥我下的XIP例程会得到这个结果呢。
希望原子哥团队或者热心的大佬帮帮我,再找不出问题我可能就要猝死了。
|
|