查看: 877|回复: 2

【DAPLink】五、移植DAP USB部分

[复制链接]
  • TA的每日心情
    慵懒
    2024-2-8 09:39
  • 签到天数: 217 天

    [LV.7]常住居民III

    92

    主题

    1114

    帖子

    29

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    7683

    热心会员

    最后登录
    2024-4-29
    发表于 2023-11-20 14:13:26 | 显示全部楼层 |阅读模式
    本帖最后由 az158 于 2023-12-19 15:29 编辑

    不知不觉距离上一篇已经一个月了,最近到了年底又多了起来,咱们就简化流程,快快结束这个项目。

    DAPLink主页:https://www.keil.com/pack/doc/CMSIS/DAP/html/index.html

    看一下DAP的更新记录
    微信截图_20231120110659.png
    可以发现在2.0.0以后采用高速的批量传输(bulk)端点完成数据交互,一般我们指DAPLinkV1与V2也主要指代这俩大版本
    v1调试器使用的是HID驱动,使用中断端点,在win8.1/win10下可以做到免安装驱动程序,但是HID虽然免驱,但速度太低。
    v2调试器使用了winusb驱动,设备端在USB描述符中报告自身支持winusb特性,需要一个inf驱动文件,Win10可以免驱,走批量传输端点,速度要快很多,我们本次目标也是针对V2版本进行移植


    闲扯到此为止,感兴趣的小伙伴可以自行查阅相关资料。

    首先是添加RL-USB驱动,按下图配置,可以看到RT1020还没有适配驱动接口,一会需要外部进行添加。
    捕获1111.JPG

    需要添加新的文件,主要由SDK目录跟DAP源码中得来
    捕获444.JPG


    这是需要引入的新头文件
    捕获77.JPG

    对USB部分进行配置,CMSIS-DAP是必须要的,帮助keil识别DAPLink
    捕获222.JPG

    同样进行配置,我这里没有厂家码,就直接使用MCU-Link里面的数据了
    捕获333.JPG

    编写main代码

    1. #include "fsl_device_registers.h"
    2. #include "fsl_debug_console.h"
    3. #include "peripherals.h"
    4. #include "pin_mux.h"
    5. #include "clock_config.h"
    6. #include "board.h"
    7. #include "cmsis_os2.h"
    8. #include "rl_usb.h"
    9. #include "osObjects.h"
    10. #include "DAP_config.h"
    11. #include "DAP.h"

    12. __NO_RETURN void app_main (void *argument)
    13. {
    14.     DAP_Setup();
    15.     USBD_Initialize(0U);
    16.     USBD_Connect(0U);
    17.     while (!USBD_Configured(0U));
    18.     DAP_ThreadId = osThreadNew(DAP_Thread, NULL, &DAP_ThreadAttr);
    19.     osDelay(osWaitForever);
    20.     for (;;) {}
    21. }

    22. int main(void)
    23. {
    24.     BOARD_ConfigMPU();
    25.     BOARD_InitBootPins();
    26.     BOARD_InitBootClocks();
    27.     BOARD_InitDebugConsole();

    28.     /* Just enable the trace clock, leave coresight initialization to IDE debugger */
    29.     SystemCoreClockUpdate();
    30.     CLOCK_EnableClock(kCLOCK_Trace);
    31.     osKernelInitialize();
    32.     osThreadNew(app_main, NULL, NULL);
    33.     if (osKernelGetState() == osKernelReady)
    34.     {
    35.         osKernelStart();
    36.     }
    37.     for(;;){}
    38. }
    复制代码

    处理一下各类报错,主要集中在DAP IO接口上,把之前的代码统统注释掉,这次不对这部分进行修改。

    下载进去看看效果。
    捕获7777.JPG

    Keil里面显示也正常,因为没移植IO部分,所以没有识别到芯片。
    捕获555.JPG

    收工

    代码工程
    5.az158_dapLink.zip (520.37 KB, 下载次数: 2, 售价: 5 NXP金币)
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-3-26 15:16
  • 签到天数: 266 天

    [LV.8]以坛为家I

    3302

    主题

    6549

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    32045
    最后登录
    2024-4-29
    发表于 2023-11-21 08:30:27 | 显示全部楼层
    一个6字了得
    签到签到
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    半小时前
  • 签到天数: 1943 天

    [LV.Master]伴坛终老

    61

    主题

    1万

    帖子

    3

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    17324
    最后登录
    2024-4-29
    发表于 2023-11-21 10:36:32 | 显示全部楼层
    真不错
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-29 15:07 , Processed in 0.117252 second(s), 23 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表