我现在使用F13的芯片,参考例程把Boot和APP做成了单独的例程,Boot和APP分别独立运行都正常,但是将APP设置为0x6000启动之后,就出现APP中无法进入中断的现象,并且APP中操作Flash会引起芯片软件复位,从boot开始重新执行。
芯片是96K,我把0000-6000用作Boot区域,中断向量表做了偏移,如图:
1. WDT有没有启动? 是不是WDT造成的
2. 可以查看一下复位后的RESF是什么复位造成的
3. section的定义有问题, App的section是从6000H开始的. 这里怎么定义在0x2800
4. Boot已经做了向量表的映射, 为什么app还要做一次?
请认真对照样例程序, boot 和app的编译选项设置有差别, 仔仔细细按照样例程序去做.
非常感谢您的回复。我先和您讨论中断的问题,复位的问题后续我在查看。
3. 我这边之前有修改过,如图所示,也是一样的现象。
4. Boot这边是我后来修改的,之前是空的。
我按照下图的配置,也是一样的现象。
请问除了这两个配置和 函数跳转表,还有其他地方需要设置吗?
两个独立工程, 不用fsy的话, boot就不需要使用这个
感谢您的回复,这边改了之后现象一样。我单独调试boot,如下图,是可以跳转到APP的
调试APP+Boot时,可以成功跳转到APP执行,但是就是进不去中断,包括timer定时中断和CAN接收中断,不知道和Section的这些值有没有关系?
有没有可能是中断跳转到Boot的的中断服务函数那里去了,而APP部分的中断服务函数和Boot的中断服务函数没有指向同一个区域?
您好,我刚在Boot的中断服务函数加了一段IO调试翻转,发现APP代码运行时,确实是进入到了Boot的中断服务函数,请问有没有办法能够让中断服务函数改变到APP中?
因为RL78只有一个硬件的中断向量表, 在0-7FH, 所以为了应用方便, 在boot里面不使用向量中断, 因为0-7FH是在boot区里面, 所以你使用了(vect = xxxx)后, 所有中断都会指向boot区了, 即使你映射了也没有用.
所以建议boot不要用向量中断(用查询的办法), 把向量中断留给App用(比较省事), 因为boot的功能本来就只是flash和数据获得.比较简单.
另外一个就是boot的向量表自己写, 通过标志位(自己定义的判断是boot还是app)然后分支到boot或app的服务程序,
还有一个办法就是通过FSL_ChangeInterruptTable, 实现boot和app- 使用中断, 但相对来说, 代码会复杂一些.
感谢您提供的几种解决办法,请问您方便提供一些参考示例吗?我的邮箱:[email protected]
hello,请问你这种做成boot和app做成单独工程的(boot和app均可以使用中断)有实现了吗?
黄工 我还有另外一个问题就是我想一系列的app都用同一个boot 但是不同的app用到的中断不一定一样(但相同中断的服务程序名是一样的) 这样怎么实现? 是把所有的中断都预留吗?