打印
[PIC®/AVR®/dsPIC®产品]

xc8编译器问题

[复制链接]
1523|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应该可以

使用特权

评论回复
5
wangzsa| | 2021-4-6 21:34 | 只看该作者
地址偏移之后中断向量也是会偏移的

使用特权

评论回复
6
chenho|  楼主 | 2021-4-6 21:36 | 只看该作者
偏移的是中断入口,中断向量应该还是0x0004。我这是想用bootloader烧入的程序。pic18的可以像图片上那么设置,pic16怎么设置

使用特权

评论回复
7
wenfen| | 2021-4-6 21:39 | 只看该作者
我也最近在搞BOOTLOADER,没加中断正常,加了中断就不行了!

使用特权

评论回复
8
wenfen| | 2021-4-6 21:44 | 只看该作者
还有些两次FLASE就不能重新擦除了!

使用特权

评论回复
9
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));  //???????????ò

使用特权

评论回复
10
chenho|  楼主 | 2021-4-6 21:48 | 只看该作者

boot中不能加中断,
//asm ("pagesel" str(NEW_INTERRUPT_VECTOR));//pagesel
//asm ("goto" str(NEW_INTERRUPT_VECTOR));这两句是可以用的。
我后来做的bootloader可以用了,只是flash烧写地址会出现错误,最后只能在编译时用ff把空地址堆填满

使用特权

评论回复
11
yszong| | 2021-4-6 21:49 | 只看该作者

那样跟启动文件的MAP不同了。

使用特权

评论回复
12
chuxh| | 2021-4-6 21:51 | 只看该作者
难以理解。

使用特权

评论回复
13
chenho|  楼主 | 2021-4-6 21:55 | 只看该作者

嗯,我再好好缕一缕吧,有了好消息及时通知大家

使用特权

评论回复
14
caigang13| | 2021-4-7 09:50 | 只看该作者
把代码贴出来看看

使用特权

评论回复
15
aliang924| | 2021-12-1 15:34 | 只看该作者
各位大佬,HI-TECH V9.80编译成功后,重新编译,hex文件校验和变,这个有是有什么方法解决吗

使用特权

评论回复
16
粤原点科技| | 2021-12-1 21:49 | 只看该作者
地址偏移后,中断向量不会跟着一起偏移,中断向量还是0x0004,需要在0x0004那里判断带响应的中断事件还是bootloader事件,如果是待响应的事件,就强行goto。

使用特权

评论回复
17
pzsh| | 2021-12-7 19:01 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

748

主题

9853

帖子

5

粉丝