硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3893|回复: 2
收起左侧

[技术分享] 转载一篇文章 教你做CMSIS-DAP仿真器(基于Nucleo-F767ZI)

[复制链接]

747

主题

1049

回帖

3295

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3295
发表于 2019-8-22 22:56:32 | 显示全部楼层 |阅读模式
原文链接:
教你做CMSIS-DAP仿真器(基于Nucleo-F767ZI)2017年4月1日 BY : TATERLI
为什么选这个板子,因为我就这个高性能.哈哈.
新建Keil工程把我所列的组件都选上.
首先我们用的FULL SPEED模式.
修改USB_Config_0.c配置,这里名字记得改,他识别名字和VID PID.一定要带CMSIS-DAP字的.
再把具体USB_Config_HID_0.h修改.
我们这次是FullSpeed,先试试延迟16ms的版本.(默认值),接着把堆栈改大.

修改操作系统的参数.
在组右键通过模板增加一个文件,测试一下配置.
因为是HSI,注意修改一下main中的配置.

这时候编译应该就不会出什么错误.
设置一下让他ST-Link下载.
进入调试查看时钟对不对.时钟配置后下断点观察.
找到CMSIS-DAP源码.我的地址是[C:\Keil_v5\ARM\PACK\ARM\CMSIS\5.0.1\CMSIS\DAP\Firmware]
把配置文件搞过来.
同样如此.
然后搞这两个过来,Main不要覆盖.
把源码挪过来.
里面这个文件不要.
把刚才添加的一些东西加到Keil里面.

在main.c中增加include.


1

[color=rgb(49, 124, 197) !important]2

3

[color=rgb(49, 124, 197) !important]4


[color=rgb(184, 92, 0) !important]#include "osObjects.h"

[color=rgb(184, 92, 0) !important]#include "rl_usb.h"

[color=rgb(184, 92, 0) !important]#include "DAP_config.h"

[color=rgb(184, 92, 0) !important]#include "DAP.h"




RTOS调度相关函数删掉.添加我们的DAP数据.


1

[color=rgb(49, 124, 197) !important]2

3

[color=rgb(49, 124, 197) !important]4

5


[color=rgb(0, 111, 224) !important]  [color=rgb(0, 78, 208) !important]DAP_Setup[color=rgb(51, 51, 51) !important]([color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important];[color=rgb(0, 111, 224) !important]                          [color=rgb(255, 128, 0) !important]// DAP Setup

[color=rgb(0, 111, 224) !important]  [color=rgb(0, 78, 208) !important]Delayms[color=rgb(51, 51, 51) !important]([color=rgb(206, 0, 0) !important]100U[color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important];[color=rgb(0, 111, 224) !important]                        [color=rgb(255, 128, 0) !important]// Wait for 100ms

[color=rgb(0, 111, 224) !important]  [color=rgb(0, 78, 208) !important]USBD_Initialize[color=rgb(51, 51, 51) !important]([color=rgb(206, 0, 0) !important]0U[color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important];[color=rgb(0, 111, 224) !important]                  [color=rgb(255, 128, 0) !important]// USB Device Initialization

[color=rgb(0, 111, 224) !important]  [color=rgb(0, 78, 208) !important]USBD_Connect[color=rgb(51, 51, 51) !important]([color=rgb(206, 0, 0) !important]0U[color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important];[color=rgb(0, 111, 224) !important]                     [color=rgb(255, 128, 0) !important]// USB Device Connect

[color=rgb(0, 111, 224) !important]  [color=rgb(128, 0, 128) !important]while[color=rgb(0, 111, 224) !important] [color=rgb(51, 51, 51) !important]([color=rgb(0, 111, 224) !important]![color=rgb(0, 78, 208) !important]USBD_Configured[color=rgb(51, 51, 51) !important]([color=rgb(206, 0, 0) !important]0U[color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important])[color=rgb(51, 51, 51) !important];[color=rgb(0, 111, 224) !important]         [color=rgb(255, 128, 0) !important]// Wait for USB Device to configure




把这个文件的只读去掉.(在资源管理器)
然后把device.h改成stm32f7xx.h
CPU_CLOCK填真实系统时钟.
暂时不要SWO功能.

添加INCLUDE,自身项目目录和RTE目录.
这时候编译,应该会出错的.通过错误快速引导到需配置的地方.
一般情况已经可以了,如果还不可以,请加装HSE晶振.
但是这个时候不能仿真啊,不能不能啊.因为我们PIN脚都还没定义呢.由于硬件限制和偷懒,先只实现一个SWD吧,另外SWD有双向引脚,正常来说呢,不应该一个IO搞定的.但是速度无所谓党表示算了.把函数按照最后的改装表改装,如果SWDIO是不是很难控制?外部电路当然容易,当然也可以采用不断切换输入输出模式.就像我这样,但是缺点是最慢速度才能满足他检测所需时间了.

全部IO改好后,调到最低速度,连接了一个STM32F103,检测成功,仿真肯定也是可以的,只是慢得…
具体每个函数解释如下.
未来设想,做个带屏幕的调试器?



回复

使用道具 举报

3

主题

1235

回帖

1244

积分

至尊会员

积分
1244
发表于 2019-11-17 16:46:52 | 显示全部楼层
这个是不是会集成到H7-Tool工具里面?
回复

使用道具 举报

22

主题

250

回帖

321

积分

高级会员

积分
321
发表于 2019-11-17 22:14:04 | 显示全部楼层
这个很强大,那天直接试试H7,速度应该更快。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-23 22:47 , Processed in 0.226487 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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