[单片机芯片] 关于CH579在IAP时APP程序中的中断无法运行的问题

[复制链接]
WCHTech2 发表于 2021-1-27 19:27 | 显示全部楼层
bwnxqg 发表于 2021-1-27 14:38
在?CH579  RB_ROM_CODE_OFS 怎么操作才能IAP?
    R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG1;            ...

不支持中断向量重映射
laocuo1142 发表于 2021-1-28 15:58 | 显示全部楼层
程序中断的向量表也应该进行位移
豌豆爹 发表于 2021-1-28 16:23 | 显示全部楼层
PWM的频率和主频有关系,也和你设置的分频系数有关系,不可能固定2khz
WCHTech2 发表于 2021-2-1 09:35 | 显示全部楼层
bwnxqg 发表于 2021-1-27 14:38
在?CH579  RB_ROM_CODE_OFS 怎么操作才能IAP?
    R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG1;            ...

参考该贴:https://bbs.21ic.com/icview-3068314-1-1.html
里面有晴雨 发表于 2021-2-5 09:17 | 显示全部楼层
应该是程序代码跑飞了,造成的。
pigedong 发表于 2021-9-10 03:58 来自手机 | 显示全部楼层
again_gyf 发表于 2020-10-4 21:23
过段时间抽空把我那个以太网IAP开源了,就是利用前32K做为IAP,OFSEET这个配置其实理解为内存映射更合理 ...

大哥,有开放出来吗?可以的话发一份给我,谢谢!dong69008@163.com
相互探讨 发表于 2022-1-11 14:16 | 显示全部楼层
琢磨了两天,终于搞定了:
boot跳转至app就不说了,问题在于跳转后这款芯片没有提供中断向量偏移的寄存器,跳转至app后由于中断向量表还是指向0x00000000的位置所以导致跳转后app的中断无法使用
我的解决方式就是先把boot的向量表(0x00000000~0x00000048)保存在别的flash中(假设0x30000)中
然后跳转至app(假设0x9000),把app的向量表(0x00009000~0x00009048)的内容复制到boot的向量表中。
然后app就可以进中断了,我在app上了freertos也没问题。
boot程序一开始要把(0x30000)的数据放回来,然后要跳转了再存过去。
还不知道这款芯片后面还有什么坑呢,大家互相探讨

/******************************************/
最开始我是想在boot每个中断服务函数里面做判断
这样的话跳转至app后,若触发中断,中断函数在boot中,在boot中做判断通过函数指针来调用app的函数
但是发现这样做的话freertos就不能切换任务了,因为在pendsv中断里面的操作只能在这个中断服务函数里实现不能跳到别的函数执行。
/*****************************************/

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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