初次接觸貴公司的RISC-V芯片,目前還在開(kāi)發(fā)板的探索階段。有幾個(gè)粗淺的問(wèn)題請(qǐng)教:
開(kāi)發(fā)工具用的MRS-IDE,查看了一下攜帶的工具鏈和例程代碼,發(fā)現(xiàn)了幾乎所有的中斷處理函數(shù),在聲明的時(shí)候都加上了“__attribute__((interrupt("WCH-Interrupt-fast")))”這樣的屬性,這個(gè)是沁恒自定義的屬性吧?看論壇里面的一些帖子,意思是聲明中斷處理函數(shù)采用硬件壓棧(這樣應(yīng)該會(huì)快一點(diǎn))。但這樣一來(lái),是不是就只能使用來(lái)自MRS里面攜帶的工具鏈編譯器啥的了,xpack官方的risc-v gcc工具鏈?zhǔn)遣皇蔷筒荒苡昧耍?/p>
參看了EVT包里面,“USB/USBHS/DEVICE/SimulateCDC”的例子代碼,有關(guān)USB Device的驅(qū)動(dòng)程序是不是就是USB_Device里面的幾個(gè)文件,整體挪移到其他項(xiàng)目中,還需要修改調(diào)整嗎?哪幾個(gè)文件是不建議用戶動(dòng)的?還是說(shuō)看明白了之后,自己按照項(xiàng)目進(jìn)行調(diào)整?感覺(jué)USB方面的代碼,不像其他外設(shè),在SRC目錄里面有一組“庫(kù)”啊,雖然SRC目錄里面的“庫(kù)”其實(shí)封裝得也很薄。
"ch32v30x_usbhs_device.c"文件中,USBHS_Endp_DataUp函數(shù),根據(jù)寄存器“USBHSD->BUF_MODE”的模式,更新Tx分別采用了DMA和memcpy的方式,但在memcpy的時(shí)候,目標(biāo)地址換算來(lái)自宏“USBHSD_UEP_TXBUF(endp)”,看了頭文件的定義,這個(gè)USBHSD_UEP_TXBUF()宏就是把“USBHSD_UEP_TXDMA”的值+上了0x2000 0000,這個(gè)常數(shù)的出處在哪里?是指的SRAM起始地址“0x2000 0000”嗎?
嗯,另外,CH32V305/7我看也是2線接口的,ARM上能用的CMSIS-DAP swd調(diào)試器能用嗎?還是說(shuō)只能使用wch-linke?
抱歉,由于第一次接觸沁恒的MCU+SDK體系,比較懵圈,所以有些問(wèn)題可能是很粗淺的,但還是希望可以得到一些點(diǎn)撥,謝謝。