咱們就簡(jiǎn)化流程,快快結(jié)束這個(gè)項(xiàng)目。
DAPLink主頁:https://www.keil.com/pack/doc/CMSIS/DAP/html/index.html
看一下DAP的更新記錄
可以發(fā)現(xiàn)在2.0.0以后采用高速的批量傳輸(bulk)端點(diǎn)完成數(shù)據(jù)交互,一般我們指DAPLinkV1與V2也主要指代這倆大版本。
v1調(diào)試器使用的是HID驅(qū)動(dòng),使用中斷端點(diǎn),在win8.1/win10下可以做到免安裝驅(qū)動(dòng)程序,但是HID雖然免驅(qū),但速度太低。
v2調(diào)試器使用了winusb驅(qū)動(dòng),設(shè)備端在USB描述符中報(bào)告自身支持winusb特性,需要一個(gè)inf驅(qū)動(dòng)文件,Win10可以免驅(qū),走批量傳輸端點(diǎn),速度要快很多,我們本次目標(biāo)也是針對(duì)V2版本進(jìn)行移植。
閑扯到此為止,感興趣的小伙伴可以自行查閱相關(guān)資料。
首先是添加RL-USB驅(qū)動(dòng),按下圖配置,可以看到RT1020還沒有適配驅(qū)動(dòng)接口,一會(huì)需要外部進(jìn)行添加。
需要添加新的文件,主要由SDK目錄跟DAP源碼中得來
這是需要引入的新頭文件
對(duì)USB部分進(jìn)行配置,CMSIS-DAP是必須要的,幫助keil識(shí)別DAPLink
同樣進(jìn)行配置,我這里沒有廠家碼,就直接使用MCU-Link里面的數(shù)據(jù)了
編寫main代碼
#include "fsl_device_registers.h"
#include "fsl_debug_console.h"
#include "peripherals.h"
#include "pin_mux.h"
#include "clock_config.h"
#include "board.h"
#include "cmsis_os2.h"
#include "rl_usb.h"
#include "osObjects.h"
#include "DAP_config.h"
#include "DAP.h"
__NO_RETURN void app_main (void *argument)
{
DAP_Setup();
USBD_Initialize(0U);
USBD_Connect(0U);
while (!USBD_Configured(0U));
DAP_ThreadId = osThreadNew(DAP_Thread, NULL, &DAP_ThreadAttr);
osDelay(osWaitForever);
for (;;) {}
}
int main(void)
{
BOARD_ConfigMPU();
BOARD_InitBootPins();
BOARD_InitBootClocks();
BOARD_InitDebugConsole();
/* Just enable the trace clock, leave coresight initialization to IDE debugger */
SystemCoreClockUpdate();
CLOCK_EnableClock(kCLOCK_Trace);
osKernelInitialize();
osThreadNew(app_main, NULL, NULL);
if (osKernelGetState() == osKernelReady)
{
osKernelStart();
}
for(;;){}
}
處理一下各類報(bào)錯(cuò),主要集中在DAP IO接口上,把之前的代碼統(tǒng)統(tǒng)注釋掉,這次不對(duì)這部分進(jìn)行修改。
下載進(jìn)去看看效果。
Keil里面顯示也正常,因?yàn)闆]移植IO部分,所以沒有識(shí)別到芯片。
收工
代碼工程
5.az158_dapLink.zip (520.37 KB, 點(diǎn)擊下方附件下載)
當(dāng)前環(huán)境