搜索
bottom↓
回复: 2

AVRIAR内嵌汇编定义标号

[复制链接]

出0入0汤圆

发表于 2018-6-3 20:11:24 | 显示全部楼层 |阅读模式
AVRIAR内嵌汇编跳转指令 asm("jmp 0XFFFA") 跳转的地址怎么才能使用xcl定义的变量
如xcl文件定义-D_..X_FLASH_BOOT_APP_SAVE_JMP=0XFFFA或-Z(DATA)FLASH_BOOT_APP_SAVE_JMP=0XFFFA
使用asm("jmp FLASH_BOOT_APP_SAVE_JMP") 总是提示错误,怎么才不会报错

出0入0汤圆

 楼主| 发表于 2018-6-3 20:39:36 | 显示全部楼层
谢谢自己用函数指针解决,发出来大家遇到问题可以参考下
xcl文件定义跳转地址-Z(DATA)FLASH_BOOT_APP_SAVE_JMP=0x7F80
__root  uint16 __flash  I_Ram_JAmp@"FLASH_BOOT_APP_SAVE_JMP";
程序中
         void    (*pIapFun)(void);       //定义一个函数指针.用于指向APP程序入口
             uint16 __flash    *IapJumpAddr = &I_Ram_JAmp;            //IAP程序的跳转地址.即,IAP程序的入口.
    pIapFun = (void (*)(void))IapJumpAddr;              //生成跳转函数.
    (*pIapFun) ();                                  //跳转到0x7F80地址.不再返回

出0入0汤圆

 楼主| 发表于 2018-6-3 20:56:44 | 显示全部楼层
本帖最后由 cnxh 于 2018-6-3 21:47 编辑

有个问题就是用嵌入汇编的话,指令只有1条,
而用函数指针是3条指令,不符合自编程的时序要求,有没有办法可以少点,因为现在是在app区,跳转后就是boot区的spm指令,指令太长spm就失效
发现加在不同的函数中,生成的指令不同,在另一个函数中是多了1条跳转到此地址的指令

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

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

本版积分规则

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

GMT+8, 2024-4-20 02:35

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

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