标签 ARM 下的文章

通过DAP下载运行程序

前一篇文章我们介绍了DAP的基本原理,并介绍了通过DAP访问系统内存的方式,这篇文章着重介绍一下怎么通过DAP控制ARM CORE的运行状态,以及如何读取和更改CORE的通用寄存器。对于一般程序调试,获取通用寄存器的状态是比较重要的一种调试手段,读取这些通用寄存器的状态的前提是CORE必须处于HALT状态,否则这个寄存器的值是一直变化的,我们也就无法获取一个比较准确的值。另外对这些寄存器的值...

继续阅读 »

ARM调试端口简介

ARM的调试是基于DAP实现的,ARM的调试端口一般要实现以下一些功能:更改处理器的状态读取处理器状态设定调试事件,比如搞个断点什么的强制处理器进入或者离开Debug状态查看当前处理器是不是在Debug状态追踪程序执行状态DAP的基本结构一般DAP的结构如下图所示:Debug Port(DP)是直接和外部接口的,可以通过JTAG和SWD两种形式实现。Access Port(AP)是位于DP和...

继续阅读 »

TrustZone的IDAU接口

IDAU模块是用来表示处理器上哪些内存区域是Secure,Non-Secure Callable,Non-Secure的。通过它可以查询某个内存区域的Region Number,它还可以用来划分一个不受Secure Checking的区域,比如ROM table。不同处理器的IDAU是不尽相同的,但是在Cortex-M处理器上它还是有一定的共性的。下图就是一个典型的IDAU的接口:理论上ID...

继续阅读 »

ARMv8-M的TrustZone可应对的攻击类型

在安全系统设计中,我们常会有一个问题就是:“这个系统到底有多安全?”而在TrustZone设计中,我们考虑了很多种攻击类型,比如:软件访问控制通过额外的系统组件,系统内存可以划分为Secure和Non-Secure空间,可以保护Secure空间不被Non-Secure模式访问。Secure Address的跳转通过SG指令和NSC空间的定义,可以保证系统只能在有效的Entry Point才能...

继续阅读 »

TrustZone系统测试(Test Target)指令

Test Target指令设计的主要目的是允许软件获取某个内存地址所属的安全属性(Secure Attribute)。Test Target(TT)指令可以查询内存地址的安全属性和访问权限。Test Target Unprivileged(TTT) 可以查询非特权模式下内存地址的安全属性和访问权限。Test Target Alternate Domain(TTA)和Test Target A...

继续阅读 »