WCH沁恒单片机
直播中

王萍

7年用户 1272经验值
私信 关注
[问答]

CH32F103到CH32V103的移植,切换到RISC-V之后指令如何转换?

现在在做CH32F103到CH32V103的移植,原先程序有做IAP。但是切换到RISC-V之后指令不知如何转换:
1、跳转:RISC-V没有__set_MSP指令,如何处理?跳转地址要+4吗?
    Jump_To_Application = (pFunction)(*(vu32*)(APP_BASE + 4));
    __set_MSP(*(vu32*)APP_BASE);
    Jump_To_Application();


2、中断向量重新映射:RISC-V没有这条指令,如何处理呢?
     NVIC_SetVectorTable(。。。)


3、ld文件中ROM起始地址0x00000000,改成0x08000000是否也可以,我看规格书说两个程序的启动地址一样?

回帖(7)

张秀云

2022-5-17 10:27:15
你好,CH32V103 IAPdemo可见附件,LD文件中FLASH起始地址需设置成0,编译器会自动加0x08000000.
举报

李慎梓

2022-5-17 10:27:21
好的感谢。不过关于LD中起始地址设置为0问题,那么我在程序中要擦除FLASH地址20K后的删除。程序中的地址指针我是要设置成0x08005000还是x00005000?


另外CH32V的没有USBD,只有USBHD,但是我发现USB唤醒中断USBWakeUp_IRQHandler仍然保留,USBHD唤醒时也能响应此中断吗?
举报

李海

2022-5-17 10:27:27
你好,如果在程序中要擦除FLASH地址20K后的数据,地址应该设置为0x08005000,关于USBWakeUp_IRQHandler函数,USBHD唤醒能响应该中断
举报

马龙

2022-5-17 10:28:20
我碰到到同样的问题:中断向量重新映射?
2、中断向量重新映射:RISC-V没有这条指令,如何处理呢?
     NVIC_SetVectorTable(。。。) //RISC-V没有这条指令
CH32V103 IAPdemo附件中,  USERCODE部分没有处理中断的实例代码, 如果加入中断,中断入口基地址如何设定??
不设定是不是跳到 BOOT的中断入口?

我实际使用的芯片是CH32V307VCT6 ,在数据手册中找一个异常入口基地址寄存器(MTVEC)
专用CSR 寄存器
但在CH32V307VCT6 EVT中找不到它的定义,也不知如何使用,提示需要系统在机器模式下才能访问。
手册中也没有解答,何为机器模式,如何进入,如何退出?

是不是 在LD文件中设定好 0x00005000开始地址后,编译器在初始化程序中自动设定好中断向量基地址,IAP不用管它?
举报

更多回帖

发帖
×
20
完善资料,
赚取积分