搜索
bottom↓
回复: 9

KE02 bootloader 如何跳转到用户程序?跳转的代码看得(已解决)

[复制链接]

出0入0汤圆

发表于 2014-9-25 17:37:18 | 显示全部楼层 |阅读模式
本帖最后由 FSL_TICS_ZP 于 2014-10-8 15:59 编辑

asm(“LDR   r1,[r0]”)
asm(“MOV   r13,r1”)
asm(“ADDS   r0,r0,#0x04”)
asm(“LDR   r0,[r0]”)
asm(“BX  r0”)网上看了下 说是跳转PC指针 比如我KE02 bootloader  跳转向量中断重定位是到0x1000,那是不是跳转的时候PC指针会跳转到0X1000处开始运行程序,主要是我对r0,1这些存储是什么东西不了解!!!
希望有人能够帮助下,非常感谢!!!!

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2014-9-25 18:03:52 | 显示全部楼层
本帖最后由 捷恩斯威科技 于 2014-9-25 18:06 编辑

没有源代码,不知道前面还有什么内容,就你贴出来这几句。 首先是初始化 SP(R13),R0指向地址存储值。 再跳转到R0+0x04开始执行。这是因为KE02的首4个字节是栈初始化值。4个字节后才真实的程序执行内容。如果R0是0x1000的话,则0x1000存值的栈初始化值,0x1004才是程序执行。好比没有BOOTLOAD的工程,则0x0000存储的栈初始化值,0x0004才是复位向量。

出0入0汤圆

 楼主| 发表于 2014-9-25 18:42:17 | 显示全部楼层
捷恩斯威科技 发表于 2014-9-25 18:03
没有源代码,不知道前面还有什么内容,就你贴出来这几句。 首先是初始化 SP(R13),R0指向地址存储值。 再跳 ...

你好

SCB_VTOR=0X1000;
jumpTouser(0x1000)
{
        asm(“LDR   r1,[r0]”)
        asm(“MOV   r13,r1”)
        asm(“ADDS   r0,r0,#0x04”)
        asm(“LDR   r0,[r0]”)
        asm(“BX  r0”)
}
这个是他的跳转到用户程序的代码 ,按你说的是 前面的4个字节 存储的INIT_SP,RESET_BL这两个,然后从便宜0x04地址程序从中断向量开始的吗?
因为我对程序从何处开始执行还不了解,还有 R1 R0 R13是存储着什么?是不是不同单片机是不同的,这个我得去看什么资料呢?

出0入8汤圆

发表于 2014-9-25 19:31:00 来自手机 | 显示全部楼层
R0存储参数0x1000,这些属于AAPCS的范畴,去百度下相应的过程调用约定。然后R13等同于sp,这些去看cortex-m3权威指南,,这里就是跳到用户的中断向量表,设置初始栈,然后跳到用户程序入口点。。中断向量表,这些都可以看权威指南

出100入101汤圆

发表于 2014-9-25 20:08:16 | 显示全部楼层
jumpTouser,调用这个函数时,传递过来的0x1000存储到r0中。

出0入0汤圆

发表于 2014-9-25 20:19:45 | 显示全部楼层
R13是堆栈指针,R0是调用这个函数的参数,R1只是作为普通寄存器使用。
下面的C代码是用在STM32中的,原理应该一样。

typedef void (*pAppFunc_t)(void);

pAppFunc_t pAppFunc;

// 设置用户程序的堆栈指针
__set_MSP(*(__IO uint32_t *)FLASH_APP_ADDR);
// 跳转到用户程序
pAppFunc = (pAppFunc_t)*(__IO uint32_t *)(FLASH_APP_ADDR + 4);;
pAppFunc();

出0入0汤圆

发表于 2014-9-26 08:51:07 | 显示全部楼层
相信前面网友的回复可以回答你的问题啊!

出0入0汤圆

发表于 2014-9-26 11:12:34 | 显示全部楼层
r0、r1、r13等这些是属于汇编的内容,楼主学习下汇编知识就会知道。

出0入0汤圆

 楼主| 发表于 2014-9-26 14:15:25 | 显示全部楼层
FSL_TICS_ZP 发表于 2014-9-26 08:51
相信前面网友的回复可以回答你的问题啊!

嗯,已经明白了,版主有KE02Flash 读写的文档吗?看英文手册没看明白

出0入0汤圆

 楼主| 发表于 2014-9-26 14:15:52 | 显示全部楼层
zndz410 发表于 2014-9-26 11:12
r0、r1、r13等这些是属于汇编的内容,楼主学习下汇编知识就会知道。

谢谢!已经看懂了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-25 21:21

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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