[PIC®/AVR®/dsPIC®产品] xc8编译器问题

[复制链接]
2113|16
 楼主| chenho 发表于 2021-4-6 21:26 | 显示全部楼层 |阅读模式
本帖最后由 pzsh 于 2021-12-7 19:01 编辑

用xc8写的程序在没有做地址偏移前程序可以正常运行,在设置了地址偏移后定时器中断就不准确了。
lizye 发表于 2021-4-6 21:28 | 显示全部楼层
然后呢?你是怎么应对这个的呢        
 楼主| chenho 发表于 2021-4-6 21:29 | 显示全部楼层
xc8地址偏移后中断向量会自动偏移吗,还是要人工加上偏移地址。另外xc8中bootloader跳转到程序空间的汇编语句是什么
liuzaiy 发表于 2021-4-6 21:32 | 显示全部楼层
goto应该可以
wangzsa 发表于 2021-4-6 21:34 | 显示全部楼层
地址偏移之后中断向量也是会偏移的
 楼主| chenho 发表于 2021-4-6 21:36 | 显示全部楼层
偏移的是中断入口,中断向量应该还是0x0004。我这是想用bootloader烧入的程序。pic18的可以像图片上那么设置,pic16怎么设置
wenfen 发表于 2021-4-6 21:39 | 显示全部楼层
我也最近在搞BOOTLOADER,没加中断正常,加了中断就不行了!
wenfen 发表于 2021-4-6 21:44 | 显示全部楼层
还有些两次FLASE就不能重新擦除了!
wenfen 发表于 2021-4-6 21:46 | 显示全部楼层

//---------------------------------------------------------------------------//
void    interrupt  service_isr()
{
    //asm ("pagesel" str(NEW_INTERRUPT_VECTOR));//pagesel
    //asm ("goto" str(NEW_INTERRUPT_VECTOR));
#asm         
          goto 0x604
#endasm      
                  NOP();
}

               //asm ("pagesel" str(NEW_RESET_VECTOR));
               //asm ("goto"  str(NEW_RESET_VECTOR));  //???????????ò
#asm
               goto   0x600
#endasm
根据XC编译自己生产的这两条语句根本不行,只能有GOTO去跳转。但没加中断正常,加了中断就不行了!              
//asm ("pagesel" str(NEW_RESET_VECTOR));
//asm ("goto"  str(NEW_RESET_VECTOR));  //???????????ò
 楼主| chenho 发表于 2021-4-6 21:48 | 显示全部楼层

boot中不能加中断,
//asm ("pagesel" str(NEW_INTERRUPT_VECTOR));//pagesel
//asm ("goto" str(NEW_INTERRUPT_VECTOR));这两句是可以用的。
我后来做的bootloader可以用了,只是flash烧写地址会出现错误,最后只能在编译时用ff把空地址堆填满
yszong 发表于 2021-4-6 21:49 | 显示全部楼层

那样跟启动文件的MAP不同了。
chuxh 发表于 2021-4-6 21:51 | 显示全部楼层
难以理解。
 楼主| chenho 发表于 2021-4-6 21:55 | 显示全部楼层

嗯,我再好好缕一缕吧,有了好消息及时通知大家
caigang13 发表于 2021-4-7 09:50 来自手机 | 显示全部楼层
把代码贴出来看看
aliang924 发表于 2021-12-1 15:34 | 显示全部楼层
各位大佬,HI-TECH V9.80编译成功后,重新编译,hex文件校验和变,这个有是有什么方法解决吗
粤原点科技 发表于 2021-12-1 21:49 | 显示全部楼层
地址偏移后,中断向量不会跟着一起偏移,中断向量还是0x0004,需要在0x0004那里判断带响应的中断事件还是bootloader事件,如果是待响应的事件,就强行goto。
pzsh 发表于 2021-12-7 19:01 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

748

主题

9853

帖子

5

粉丝
快速回复 在线客服 返回列表 返回顶部