初次接触贵公司的RISC-V芯片,目前还在开发板的探索阶段。有几个粗浅的问题请教:
开发工具用的MRS-IDE,查看了一下携带的工具链和例程代码,发现了几乎所有的中断处理函数,在声明的时候都加上了“__attribute__((interrupt("WCH-Interrupt-fast")))”这样的属性,这个是沁恒自定义的属性吧?看论坛里面的一些帖子,意思是声明中断处理函数采用硬件压栈(这样应该会快一点)。但这样一来,是不是就只能使用来自MRS里面携带的工具链编译器啥的了,xpack官方的risc-v gcc工具链是不是就不能用了?
参看了EVT包里面,“USB/USBHS/DEVICE/SimulateCDC”的例子代码,有关USB Device的驱动程序是不是就是USB_Device里面的几个文件,整体挪移到其他项目中,还需要修改调整吗?哪几个文件是不建议用户动的?还是说看明白了之后,自己按照项目进行调整?感觉USB方面的代码,不像其他外设,在SRC目录里面有一组“库”啊,虽然SRC目录里面的“库”其实封装得也很薄。
"ch32v30x_usbhs_device.c"文件中,USBHS_Endp_DataUp函数,根据寄存器“USBHSD->BUF_MODE”的模式,更新Tx分别采用了DMA和memcpy的方式,但在memcpy的时候,目标地址换算来自宏“USBHSD_UEP_TXBUF(endp)”,看了头文件的定义,这个USBHSD_UEP_TXBUF()宏就是把“USBHSD_UEP_TXDMA”的值+上了0x2000 0000,这个常数的出处在哪里?是指的SRAM起始地址“0x2000 0000”吗?
嗯,另外,CH32V305/7我看也是2线接口的,ARM上能用的CMSIS-DAP swd调试器能用吗?还是说只能使用wch-linke?
抱歉,由于第一次接触沁恒的MCU+SDK体系,比较懵圈,所以有些问题可能是很粗浅的,但还是希望可以得到一些点拨,谢谢。