daplink源码中,main文件在main_interface.c文件中,整个工程貌似只创建了main_task一个任务。
而main_task任务里,while循环里,主要是等待7个任务通知/消息。
53 while (1) {
1 flags = osThreadFlagsWait(FLAGS_MAIN_RESET // Put target in reset state
2 | FLAGS_MAIN_90MS // 90mS tick
3 | FLAGS_MAIN_30MS // 30mS tick
4 | FLAGS_MAIN_POWERDOWN // Power down interface
5 | FLAGS_MAIN_DISABLEDEBUG // Disable target debug
6 | FLAGS_MAIN_PROC_USB // process usb events
7 | FLAGS_MAIN_CDC_EVENT // cdc event
8 , osFlagsWaitAny
9 , osWaitForever);
reset好像是让目标板复位的;
90MS是处理usb是否连接的;
30ms是处理led灯闪烁的;
power_down好像是板子断电相关的;
disabledebug好像是设置目标退出debug状态;
proc_usb是被usb中断函数调用的;
cdc_event好像是usb转串口相关。
那么daplink的主要功能,烧录程序及硬件仿真,是在哪里完成的呢?
最近编辑记录 Gentlepig (2024-07-31 08:45:56)
离线
daplink只是起一个接口协议转换的作用,将USB发来的命令数据通过SWD或JTAG发送出去,返回的数据再通过USB发给PC。
下载和调试功能是PC上的软件实现的。
不光是daplink,其它所有link都是这个功能。
只有如脱机下载器这类设备,会把下载算法等集成进去,可独立运行。
离线
明白些了,谢谢。
离线