打印

xc8编译器问题

[复制链接]
1420|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chenho|  楼主 | 2019-12-19 22:42 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
用xc8写的程序在没有做地址偏移前程序可以正常运行,在设置了地址偏移后定时器中断就不准确了。

使用特权

评论回复
沙发
lizye| | 2019-12-19 22:51 | 只看该作者

然后呢?你是怎么应对这个的呢        

使用特权

评论回复
板凳
chenho|  楼主 | 2019-12-19 22:58 | 只看该作者
xc8地址偏移后中断向量会自动偏移吗,还是要人工加上偏移地址。另外xc8中bootloader跳转到程序空间的汇编语句是什么

使用特权

评论回复
地板
hanwe| | 2019-12-19 23:01 | 只看该作者
goto应该可以

使用特权

评论回复
5
langgq| | 2019-12-19 23:07 | 只看该作者
地址偏移之后中断向量也是会偏移的

使用特权

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

使用特权

评论回复
7
chenho|  楼主 | 2019-12-19 23:14 | 只看该作者

使用特权

评论回复
8
wenfen| | 2019-12-19 23:17 | 只看该作者
我也最近在搞BOOTLOADER,没加中断正常,加了中断就不行了!
还有些两次FLASE就不能重新擦除了!

使用特权

评论回复
9
wenfen| | 2019-12-19 23:24 | 只看该作者
//---------------------------------------------------------------------------//
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|  楼主 | 2019-12-19 23:27 | 只看该作者

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

使用特权

评论回复
11
zhuomuniao110| | 2019-12-20 00:14 | 只看该作者
那样跟启动文件的MAP不同了。

使用特权

评论回复
12
yiy| | 2019-12-23 23:37 | 只看该作者
难以理解。

使用特权

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

本版积分规则

748

主题

9853

帖子

5

粉丝