完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
您好,我在PIC18F431中有一个Bootloader,它在地址0x7FF结束。中断向量是0x08,应用程序代码从0x800开始,应用程序中断在0x808,当前我使用选项--CODEOFFSET将我的应用程序代码移位0x800,以便在引导加载程序之后在内存中写入应用程序。up向量,引导加载程序将在0x808调用函数来执行应用程序中断,现在我的问题是应用程序中断执行上下文切换,我不想发生这种情况,请让我知道如何禁用该函数,我希望应用程序中断充当函数。
|
|
相关推荐
9个回答
|
|
|
当你调用一个函数时,你决定是否需要上下文保存。如果调用的第二个参数是1,则执行上下文保存,否则不会。类似地,retfie有一个参数决定是否恢复上下文。作为副作用,retfie会重新启用中断,而这可能是您不希望的。所以,使用回退而不是ReFie是个好主意。或者,你只需跳转到中断地址(而不是调用)。它会顺畅地工作,但是它不会回到你身边,而是会从中断中消失。
|
|
|
|
|
|
使用内联汇编程序进行调用。但是,如果您的引导加载器中断已经保存了上下文,您不想再次保存它,因为它将保存在同一个地方。正如jtemples指出的,这并不影响软件上下文保存。
|
|
|
|
|
|
…你使用中断优先级还是PIC16兼容模式?
|
|
|
|
|
|
谢谢你的答复,是的,这正是我想要做的,我不想在应用程序中断保存上下文,但是如何呢?如果我在应用程序中断内执行任何寄存器操作(我必须这样做),那么应用程序中断将保存上下文,我希望禁用它。
|
|
|
|
|
|
我使用PIC18,默认中断(高优先级)。我没有使用低优先级中断。
|
|
|
|
|
|
是的,如下所示:APP_CODE_ADDRESS方程0x800APP_INTERRUPT_ADDRESS方程0x808;----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------TEMP移动BSR,BSR_TEMP移动FSR0L,FSR0L_TEMP移动FSR0H,FSR0L_TEMP移动0移动W_TEMP移动0移动W_TEMP W TEMP呼叫Int服务;恢复上下文;移动0移动W_TEMP,移动W_TEMP,w移动FSRFSRFSR0H移动FSRFSR移动FSR0L移动FSRFSR移动BSR_TETEMP,FSR0L移动BSR移动BSR_TEMP,BSR移动STATUS_TEMP,STATUS重新开始然后在Int服务:Int服务:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;检查是否适用ISR代码可用;movlb 1;SET BANK 1movf AppCodeAvail,w;应用程序代码可用,btfsc STATUS,Z;如果不是0(appcode可用)则跳转到IS010;;应用程序ISR代码可用,就去获取它;调用APP_INTERRUPT_ADDRESS movlb 1IS010#ifdef TIMER0_STUFF;检查是否时间r0有一个中断;btfsc INTCON,TMR0IF呼叫Timer0ISRendif;检查TX空中断;IS020 btfsc PIR1,TXIF;检查UART TX IRQ调用UartTTTTTX是否为UART TX IRQ呼叫UartTTTTTTX检查UART TX全中断;btfsc PIR1,PIR1,RCIF;检查UART RX IRQ呼叫UartRXIRQ呼叫UartRX是否为UART RX IRQ呼叫UartRXRQUartRXUartRXRX呼叫UartRX检查;如果设置,服务UARXRXUARXRXRXRXRXRXRX呼叫UarTRX呼叫UarIRQ整理和归还;返回
|
|
|
|
|
|
是的,但是OP不能修改包含中断向量的引导加载程序。
|
|
|
|
|
|
既然您不能修改这个引导加载程序代码,而保存上下文的代码包括快速影子寄存器,那么您就麻烦了:(无论谁编写这个引导加载程序,都不知道自己在做什么。
|
|
|
|
|
|
嘿,没有箭和星星!在0808H的应用程序中,如果他跳转(或调用)到ISR函数(这将只是一个正常的函数)。我认为这是可行的。这是在这个领域,那么当前的计划是怎么做的呢?
|
|
|
|
|
只有小组成员才能发言,加入小组>>
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
473 浏览 0 评论
5793 浏览 9 评论
2334 浏览 8 评论
2224 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3530 浏览 3 评论
1123浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
1095浏览 1评论
我是Microchip 的代理商,有PIC16F1829T-I/SS 技术问题可以咨询我,微信:A-chip-Ti
873浏览 1评论
MPLAB X IDE V6.25版本怎么对bootloader和应用程序进行烧录
475浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 01:03 , Processed in 0.948938 second(s), Total 88, Slave 71 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1798