目录

0. 简介

1. GDK7和Nano Code的简单介绍

1.1 GDK7的简单介绍

1.2 Nano Code的简单介绍

2. GDK7调试原理的简单说明

3. 配置前的准备工作

3.1准备设备

3.2 准备GDK7

3.3 准备调试主机

4. 配置过程

4.1 配置GDK7的过程

4.2 配置调试主机的过程

4.3 确认调试主机与GDK7成功连接

5. 中断GDK7(调试主机端操作)

5.1 中断Ubuntu系统的GDK7

5.2 中断Windows系统的GDK7

参考文献

附录

补充说明


0. 简介

GDK7和NanoCode是由格蠹汇编及软件调试的作者张银奎老师研发的一款高端调试套件,本人趁着现在GDK7搞暑期活动入手了一台,并记录了一下配置GDK7的过程,以供大家参考。

1. GDK7和Nano Code的简单介绍

1.1 GDK7的简单介绍

GDK7是一款针对英特尔架构开发的高端调试套件,为使用英特尔架构的技术人员解决英特尔平台上出现的各种技术问题;GDK7不仅包含了用于建立JTAG/DCI调试会话的连接设施,还为底层调试和调优需求提供了一种高效便捷的新方案;同时GDK7也是一台可以直接使用的主机,大幅度的减少了准备调试环境所需的时间,省去各种因为软件和硬件不兼容所带来的烦恼。

主要功能的简单介绍

  1. 调试固件、调试操作系统的启动加载程序、调试操作系统的内核代码、调试驱动程序、调试具有反调试功能的软件等。
  2. 通过英特尔CPU的处理器追踪功能采集CPU的事件。
  3. 通过调试会话实现调试主机与目标主机之间的内存转储与加载。
  4. 观察CPU和芯片组的硬件结构和逻辑结构。
  5. 通过Nano Code/DAL工具的Python扩展包进行高级调试和调优的任务。
  6. 开发定制的调试和调优工具。

GDK7更为详细的主要功能说明见链接:http://advdbg.org/gdk/features.aspx。

配置情况的简单介绍

  • 硬件配置:主要硬件配置的说明见图1。

图1.1 主要硬件配置说明

  • 软件配置:操作系统:Ubuntu-18.04-64位/Windows专业版-未激活、Nano Debugger内核调试引擎。
  • 外部接口:前、后面板的外部接口图片见图1.2和图1.3。

图1.2 前面板的外部接口

图1.3 后面板的外部接口

  • 内部接口:SATA硬盘接口、许多的串口。

GDK7更为详细的系统配置说明见链接:http://advdbg.org/gdk/bom.aspx。

1.2 Nano Code的简单介绍

Nano Code是一款基于Visual Studio Code二次开发的调试工具,调试指令兼容WinDBG。

功能的简单介绍

  1. Nano调试:支持JTAG调试、内核调试、无源代码调试、跨模块调试等场景。
  2. Nano提问:可提出问题,等待他人的解答。
  3. Nano阅读:可购买格蠹出版的电子书籍。
  4. Nano视频:可购买格蠹录制的视频课程。
  5. Nano直播:可报名格蠹举办的直播课程或直播。
  6. 格友货栈:可购买格蠹的周边商品。

2. GDK7调试原理的简单说明

GDK7基于英特尔Skylake微架构引入的SVT(Silicon View Technology)技术研发,通过一条定制的USB 3.0电缆把调试目标和主机连接起来,二者通过DCI(Direct Connect Interface)协议通信,电缆两端只要插在USB 3.0端口即可;不需要打开机箱,也不需要专用的ITP硬件就可以实现JTAG调试和系统追踪,调试主机与GDK7的连接示例见图2.1。

图2.1 调试主机与GDK7的连接示例

3. 配置前的准备工作

3.1准备设备

准备一台GDK7(GDK7即目标主机)。

准备一根USB3.0专用电缆(GDK7套件中的蓝色USB3.0电缆)。

准备一台调试主机(推荐使用64位Windows10操作系统的主机)。

3.2 准备GDK7

USB3.0专用电缆与GDK7及调试主机连接时所对应的接口说明。

  • 调试主机端必须使用USB3.0接口与电缆连接;具体接口位置没有要求。
  • GDK7必须使用后面板中两个蓝色USB3.0接口的其中一个与电缆连接;蓝色USB3.0接口的位置见图3.1,图中用红色标出的部分即两个蓝色USB3.0接口的位置。

图3.1 GDK7后面板中两个蓝色USB3.0接口的位置

给GDK7连接显示器、键盘及鼠标等其他设备,并插上电源。

3.3 准备调试主机

下载并安装WinDBG调试器;通过下方链接进入WinDBG调试器的下载页面。

https://docs.microsoft.com/zh-cn/windows-hardware/drivers/debugger/debugger-download-tools

参照fast_dci文档安装DCI的USB驱动及配置文件;注意第6步中的文件路径,所需文件源于前几步中的解压文件,因此路径也随解压文件的相应位置而来设定,故路径不应照搬原文(fast_dci文档中DCI的USB驱动及配置文件的说明见附录的4)。

  • 原本应该安装的是Intel System Studio,但是因为英特尔现在已经不在提供Intel System Studio的下载,故通过2来替代Intel System Studio;关于Intel System Studio 2016的详细解释见参看文献的3。

4. 配置过程

4.1 配置GDK7的过程

按下GDK7前面板的开机按钮;开机按钮的位置见图4.1,图中用红色标出的部位即开机按钮的位置;开机后选择Ubuntu/Windows操作系统,进入桌面。

图4.1 开机按钮的位置

4.2 配置调试主机的过程

开机并选择Windows操作系统,进入桌面后右键左下角的 [微软图标] 后,点击设备管理器,打开设备管理器。

下载并安装Nano Code;通过下方链接进入Nano Code的下载页面。

https://www.nanocode.cn/#/download

登录Nano Code。

  • 首次使用Nano Code的用户可选择的注册途径有:
  • Nano Code:打开Nano Code=>点击 [登录] =>点击 [注册] =>输入所要求填写的信息并同意《用户协议》=>点击 [注册] =>完成注册=>可登录Nano Code。
  • 微信:微信小程序内搜索盛格塾=>进入盛格塾小程序=>点击 [我的] =>点击 [注册/登录] =>点击 [授权微信一键登录] =>点击 [创建新账号] =>输入所要求填写的信息=>点击 [绑定登录] =>完成注册=>可登录Nano Code。正常情况下可不用理会第4步,若一直未成功与GDK7取得连接,才应考虑第4步=>应保证调试主机BIOS面板内DCI相关选项全部处于关闭状态(即Disable状态);一般情况下的主机BIOS面板中的DCI相关选项默认处于关闭状态,GDK7的BIOS面板中DCI的相关选项默认处于开启状态。

正常情况下可不用理会第4步,若一直未成功与GDK7取得连接,才应考虑第4步=>应保证调试主机BIOS面板内DCI相关选项全部处于关闭状态(即Disable状态);一般情况下的主机BIOS面板中的DCI相关选项默认处于关闭状态,GDK7的BIOS面板中DCI的相关选项默认处于开启状态。

4.3 确认调试主机与GDK7成功连接

确保调试主机和GDK7处于开机状态。

应注意到应用程序OpenIPC_x64.exe是否在调试主机机上运行,与调试主机有没有办法检测到DCI设备没有任何的关系;即使应用程序OpenIPC_x64.exe没有运行,也可以检查到DCI设备;能否检测到DCI设备取决于调试主机中DCI的USB驱动dcidrc.msi是否已经成功安装。

调试主机端打开设备管理器(右键左下角 [微软图标] ,点击设备管理器),查看是否有DCI设备/未知设备。

  • 若出现DCI设备则代表调试主机与GDK7连接成功并可以开始调试;出现DCI设备的画面见图4.2。

图4.2 出现DCI设备

  • 若没有出现DCI设备则代表调试主机与GDK7可能连接失败,可按以下顺序尝试解决。
  • (1)尝试查看设备管理器中的通用串行总线控制器下是否有未知设备,禁用未知设备后再重新启用查看DCI设备是否出现;若有,则连接成功;若无,则见(2)。
  • (2)尝试插拔USB3.0专用电缆及其他USB设备,看是否出现新设备;若出现DCI设备,则连接成功;若出现未知设备,则重复(1);若无,则见(3)。
  • (3)禁用设备管理器中的通用串行总线控制器下USB3.0主控制器,然后在再启用USB3.0主控制器(可通过ALT+A=>A刷新设备管理器);若出现DCI设备,则连接成功;若出现未知设备,则重复(1);若无,则连接失败,检查DCI驱动是否已经安装好。
  • (4)若实在是很肯定DCI驱动已经安装好,但仍无DCI设备出现,则应考虑4.2中的第4步;或不断插拔USB3.0专用电缆及其他USB设备直至DCI设备出现。

5. 中断GDK7(调试主机端操作)

只要使用DCI Exdi启动调试会话,就会导致调试会话直接介绍,详细情况见图5.1;NanoCode设置IPCAPI的路径时选择ExdiIpc.dll文件依然无效,暂不知道原因,因此暂时只能选择DCI Open启动调试会话。

图5.1 使用DCI Exdi启动调试会话导致调试会话直接结束

使用DCI Open启动调试会话的详细情况见5.1和5.2。

报错:Unable to perform operation because there are no GPC threads in this domain

此错误属于随机错误,可按以下顺序尝试解决:

  1. 重启Nano Code。
  2. 重启调试主机和GDK7。
  3. 关闭调试主机和GDK7并拔下电源,在等待一段时间后,插上电源再开机。

5.1 中断Ubuntu系统的GDK7

第一次调试时Nano Code会下载调试符号,注意需要保证网络的畅通,等待下载完成。

打开Nano Code并登录=>打开Nano调试并点击左侧栏中的 [糖果](鼠标放上去会提示Nano Debgguer)=>点击 [内核调试] =》点击 [USB3] => 点击[DCI Open] =>点击   [Reconnect] 、[Linux Kernel] 、 [Memory Shadow] => 点击[启动] ;Linux内核调试时应选择的选项详见图5.2。

图5.2 Linux内核调试时应选择的选项

等待 [暂停](鼠标放在上去会提示中断 F6)从灰色变成其他颜色,然后点击;当出现图5.3的画面时代表GDK7已经成功的被断开,此时GDK7仍然处于开机状态,但键盘鼠标失灵。

图5.3 GDK7成功被断开时调试主机端Nano调试的反应

输入G/按下F5/点击工具栏栏中的 [运行] 使GDK7恢复过来。

成功中断并恢复Ubuntu操作系统的GDK7。

5.2 中断Windows系统的GDK7

重启(仅第一次需要),并打开Nano Code并登录=>打开Nano调试并点击左侧栏中的 [糖果](鼠标放上去会提示Nano Debgguer)=>点击 [内核调试] =》点击 [USB3] => 点击[DCI Open] =>点击 [Reconnect] 、 [Memory Shadow] =>点击[启动] ;Windows内核调试时应选择的选项详见图5.4。

图5.4 Windows内核调试时应选择的选项

等待 [暂停](鼠标放在上面会提示中断 F6);当出现图5.5的画面时代表GDK7已经成功的被断开,此时GDK7仍然处于开机状态,但键盘鼠标失灵。

图5.5 GDK7成功被断开时调试主机端Nano调试的反应

输入G/按下F5/点击工具栏栏中的 [运行] 使GDK7恢复过来。

成功中断并恢复Windows操作系统的GDK7。

参考文献

  1. https://www.nanocode.cn/software/gdk7/GDK7-Startup.pdf
  2. fast_dci文档 张银奎
  3. https://www.intel.cn/content/www/cn/zh/embedded/products/quark/mcu/system-studio-getting-started-guide.html
  4. http://advdbg.org/gdk/index.aspx
  5. https://www.nanocode.cn/#/gdk7/features
  6. https://www.nanocode.cn/#/gdk7/bom
  7. https://blog.csdn.net/henly1217/category_10244945.html
  8. https://blog.csdn.net/henly1217/article/details/107657070

附录

  1. GDK7的官网链接:https://www.nanocode.cn/#/gdk7/index
  2. NanoCode的官网链接:https://www.nanocode.cn/#/home
  3. [XXX]的说明:代表主机的可视化按钮。
  4. DCI的USB驱动及配置文件:DCI的USB驱动为dcidrc.msi;配置文件为exdi.zip、openipc.zip(fast_dci文档和其中所需文件的离线文件见下方百度网盘链接:链接: https://pan.baidu.com/s/1UdOn7eIG5W-3mN9PphpnWg 提取码: 6hhe 复制这段内容后打开百度网盘手机App,操作更方便哦

补充说明

若您有问题咨询及出现链接失效等其他情况请联系邮箱:birdring_001@outlook.com。

入坑张银奎老师研发的GDK7相关推荐

  1. 专访张银奎:要抓住技术发展趋势,只有不断学习和更新自己?

    如果说软件的执行过程就像是CPU在无数条道路(指令流)间飞奔,那么开发软件的过程就是设计和构建这个交通网络的过程.其基本目标是要让CPU在这个网络中奔跑时可以完成需求(requirement)中所定义 ...

  2. 专访张银奎:要抓住技术发展趋势,只有不断学习和更新自己?...

    如果说软件的执行过程就像是CPU在无数条道路(指令流)间飞奔,那么开发软件的过程就是设计和构建这个交通网络的过程.其基本目标是要让CPU在这个网络中奔跑时可以完成需求(requirement)中所定义 ...

  3. window启动过程讲解--PPT截图[张银奎]

    c:\dir /ahs

  4. WinDBG工具简介(.net大会中张银奎先生介绍)

    对于一般的程序不需要使用WinDBG工具去调试,使用MDBG就OK 使用WinDBG + SOS调试.Net程序的一般步骤 2009-03-28 1. 加载进程和SOS扩展: a. F6或者使用菜单F ...

  5. 2022__我的嵌入式入坑之路

    目录 一.学习篇 51单片机: python爬虫: stm32单片机: ad: 立创EDA: openmv: ardunio: ESP32: 汇编语言: ROS: FreeRTOS: matlab: ...

  6. 只用300小时,17岁高中生解开困扰数学家27年难题,因张益唐「入坑」数论

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 Pine 鱼羊 发自 凹非寺 量子位 | 公众号 QbitAI 只因 ...

  7. 这些坑你都趟过吗?研发经验一箩筐,从此再也不入坑!

    01. 聊 啥 世人都说路不齐.别人骑马我骑驴.回头看看推车汉.比上不足下有余! 你骑马来我骑驴,看看眼前我不如:回头一看推车汉,比上不足比下余. 回头总结一下以往填过的坑,感觉自己还真挺牛掰. 今天 ...

  8. 【Flutter从入门到入坑】Flutter 知识体系

    学习 Flutter 需要掌握哪些知识? 终端设备越来越碎片化,需要支持的操作系统越来越多,从研发效率和维护成本综合考虑,跨平台开发一定是未来大前端的趋势,我们应该拥抱变化.而 Flutter 提供了 ...

  9. python这个软件学会能做什么工作-学会Python真的有高收入?盯,请查收这份入坑指南...

    学会Python真的有高收入?盯,请查收这份入坑指南 2018-10-10 20:51:00 567点赞 6312收藏 186评论 小编注:想获得更多专属福利吗?金币加成.尊享众测.专属勋章.达人福利 ...

  10. 初次入坑解析的小程序(决定写代码风格的小程序)

    初次入坑解析的小程序(决定写代码风格的小程序) 我是一个大二的学生,在接触小程序之前我是一个学计算机运维的,后来入了坑,在入坑以后开发了两个小程序. 第一个是为学校开发的一个考勤的小程序,样式是别人设 ...

最新文章

  1. phpstorm failed to create jvm:error code -6 解决办法 解决方法
  2. 智源研究院发布《2020北京人工智能发展报告》,剖析北京AI发展的17个中国“第一”...
  3. RMS 谈自由软件运动和后门
  4. (传送门)JVM的GC日志的主要参数
  5. 数据库语法_圣诞快乐:用GaussDB T 绘制一颗圣诞树,兼论高斯数据库语法兼容...
  6. PHP无用图片清理,php – 如何在img / p /上删除Prestashop无用的图像
  7. 算法题:输入一个表示整数的字符串,把该字符串转换成整数并输出。例如输入字符串“12345”,则输出整数“12345”
  8. Linux入门学习(五)
  9. tomcat上传文件,重新加载后删除以及在web.xml中配置全局路径
  10. eclipse3.6_jee启动tomcat无法访问http://localhost:8080/的解决方案
  11. php httputils,Android 自定义网络加载工具类 HttpURLConnectionUtils
  12. shell命令之 tr
  13. 《Java并发编程实战》读书笔记-第5章 基础构建模块
  14. 从零开始的单片机学习(二)
  15. Python深度学习05——Keras循环神经网络实现股价预测
  16. CSS:transform应用之立体魔方案例
  17. 关于新iPad充电的一些误读
  18. FM系列算法解读(FM+FFM+DeepFM)
  19. 微软输入法 ——当前时间 快捷键
  20. 苹果框架学习(二) Metal

热门文章

  1. postgresql的下载与安装
  2. 精密测量专题2--光栅基片预处理
  3. OpenCV函数subtract()使用心得及需要注意的地方
  4. TestNg测试框架
  5. httpclient中警告Encrypted Alert后断开连接问题处理
  6. 服务器系统2008怎么安装net,如何在win2008R2 上安装.Net 3.5 sp1
  7. 《东周列国志》第六十四回 曲沃城栾盈灭族 且于门杞梁死战
  8. UVA - 558 Wormholes (SPEA算法模板题)
  9. Android 架构组件之 Room
  10. vim 强制保存修改只读文件