关于嵌入式开发人员和专门进犯硬件的黑客来说,JTAG 实践上是调试和拜访微处理器寄存器的标准。该协议已运用多年,至今仍在运用,JTAG调试接口有必要运用VCC、GND电源信号,以及TMS、TCK、TDI、TDO四根调试信号,别的TRST、RESET复位信号和RTCK(同步时钟)信号也在可选项里。现在,设备变得越来越小,微处理器的可用引脚数也越来越少,这些杂乱的信号,现已阻止了协议的正常运用。
为了处理这个问题,ARM创建了一个名为SWD(串行线调试)的代替调试接口。相关于JTAG接口,SWD运用了更少的信号。它只运用两个信号(SWDCLK和SWDIO),这个接口及其相关协议现在简直能够在所有的Cortex-[A,R,M]处理器中运用。
Cortex-A:面向功能密集型体系的运用处理器内核,Cortex-A处理器为运用操作体系(例如Linux或许Android)的设备供给了一系列处理方案,这些设备被用于各类运用,从低本钱手持设备到智能手机、平板电脑、机顶盒以及企业 *** 设备等。
Cortex-R:面向实时运用的高功能内核,Cortex-R系列是衍出产品中体积最小的ARM处理器。Cortex-R处理器针对高功能实时运用,例如硬盘操控器(或固态驱动操控器)、企业中的 *** 设备和打印机、消费电子设备(例如蓝光播放器和媒体播放器)、以及轿车运用(例如安全气囊、制动体系和发动机办理)。Cortex-R系列在某些方面与高端微操控器(MCU)相似,可是,针对的是比一般运用标准MCU的体系还要大型的体系。
Cortex-M:面向各类嵌入式运用的微处理器内核,Cortex-M系列是针对竞赛现已十分剧烈的MCU商场。Cortex-M系列根据ARMv7-M架构(用于Cortex-M3和Cortex-M4)构建,而较低的Cortex-M0+根据ARMv6-M架构构建。首款Cortex-M处理器于2004年发布,当一些干流MCU供货商挑选这款内核,并开端出产MCU器材后,Cortex-M处理器敏捷遭到商场喜爱。能够必定的说,Cortex-M之于32位MCU就好像8051之于8位MCU,遭到很多供货商支撑的工业标准内核,各家供货商选用该内核加之自己特别的开发,在商场中供给差异化产品。
ARM调试接口
体系结构概述
与JTAG将接口链接在一起相反,SWD运用名为DAP(调试拜访端口)的总线。在这个DAP上,有一个主端口(DP – Debug端口)和一个或多个隶属端口(AP – Access端口)相似于JTAG接口。DP运用包括AP地址的数据包与AP事务处理。
总而言之,外部调试器运用名为SWD的协议通过DP连接到DAP,ARM的这份介绍很好地概述了SWD架构:
SWD架构
调试端口
调试端口是主机和DAP之间的接口,它还处理主机接口,现在有三个不同的调试端口能够拜访DAP:
JTAG调试端口(JTAG- dp):该端口运用标准JTAG接口和协议来拜访DAP;
串行线调试端口(SW-DP):该端口运用SWD协议拜访DAP;
串行线/ JTAG调试端口(SWJ-DP):该端口能够运用JTAG或SWD拜访DAP,这是许多微处理器上常见的接口。它重用TMS和TCK JTAG信号,别离传输SWDIO和SWDCLK信号。为了从一个接口切换到另一个接口,有必要发送特定的序列。
拜访端口
能够根据需要将多个AP添加到DAP中,ARM供给了两个AP的标准:
1. 内存拜访端口(MEM-AP):该AP供给对中心存储器和寄存器的拜访;
2. JTAG拜访端口(JTAG-AP):该AP答应将JTAG链连接到DAP。
SWD协议
信号
如前所述,SWD只运用两种信号:
· SWDCLK:主机宣布的时钟信号,因为处理器时钟和SWD时钟之间没有关系,所以频率的挑选取决于主机接口。在这篇文章中,更大 调试时钟频率约为60MHz。
· SWDIO:这是把数据从DP传送到DP的双向信号,数据由主机在上升沿设置,由DP在SWDCLK信号下降沿采样。数字电路中,数字电 平从低电平(数字“0”)变为高电平(数字“1”)的那一瞬间(时间)叫作上升沿。数字电路中,数字电平从高电平(数字“1”) 变为低电平(数字“0”)的那一瞬间叫作下降沿。
事务处理进程
每个SWD交流进程分三个阶段:
1.恳求阶段:从主机端口发送8位;
2.ACK阶段:从方针端口发送3位;
3.数据阶段:发向主机端口或从主机端口发送最多32位,带有奇偶校验位;
请留意,有必要在数据方向发生变化时发送Trn循环(Trn cycle)。
SWD搬运
恳求
恳求头包括以下字段:
ACK
ACK (Acknowledgement)便是承认字符,在数据事务处理中,接纳站发给发送站的一种传输类操控字符。表明发来的数据已承认接纳无误。
在TCP/IP协议中,假如接纳方成功的接纳到数据,那么会回复一个ACK数据。一般ACK信号有自己固定的格局,长度巨细,由接纳方回复给发送方。
ACK位包括恳求头的ACK状况,留意,有必要先读取LSB中的三个位。
数据
数据由主机发送或方针发送。它首要发送LSB,并以奇偶校验位完毕。
协议交互
现在咱们现已了解了协议的底层部分,现在是与实践方针交互的时分了。为了做到这一点,我运用了Hydrabus,但也能够运用总线海盗(Bus Pirate)或任何其他相似的东西。BusPirate 是由Dangerous prototypes 规划出品的一款硬件hacking 瑞士军刀,支撑多项常见协议并可跨渠道Windows/Linux/MAC,并具有丰厚的协助文档。在本文的测验中,我运用了一个名为Blue Pill的STM32F103开发板。绰号为蓝丸(蓝色药丸(blue pill)rootkit是以办理程序身份履行来操控电脑资源的歹意软件)Joanna Rutkowska是新加坡的IT安全公司COSEIN的一名安全研究员,她在2006年的黑帽简报会议上展现了Blue Pill rootkit,它是作为概念验证型歹意软件而开发的。原始的蓝色药丸(blue pill)操作根据AMD虚拟化(AMD-V),它是X86处理器架构的一套硬件扩展。该处理器扩展从软件上卸下了重复与低效的作业。通过处理器扩展、圈套和虚拟化仿真处理这些使命,根本上排除了通过操作体系[1][2]黑客接单网