当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]EDM安全访问机制应用方案

EDM安全存取是AndesCoreTM内建的功能(option),应用在安全存取的控管。EDM安全存取有二种的控管方式:debug access indication和EDM access restriction.第一种控管方式(debug access indication)提供了一个sideband signal用于指示从调试器(Debug host)的请求。第二种控管方式, 控制AndesCoreTM的input port(edm_restrict_access )达到EDM存取的限制。更详细的内容在后续章节会有更深入的介绍。

1.EDM功能介绍

一个debug system包含一个debug host和一个target system.EDM主要的功能就是translate debug host发出的TAP指令来存取系统memory或是CPU.下图为基本的debug系统方块图。

 

 

图表1 基本的debug系统方块图

下图说明TAP 指令的种类

 

 

图表2 TAP 指令的种类

2.控制EDM存取的限制

使用EDM的访问方式会被一个sideband signal (edm_restrict_access) 所影响。当这个signal值是high,仅仅只能对EDM MISC registers做读取的动作。而想要存取CPU/System Bus/Local Memory的动作将会被封锁住并且会得到下面的结果:

读为零写忽略

不正确的JTAG instruction(JTAG ICE debugger会timeout)

下图说明EDM限制存取方块图。

 

 

图表3 EDM限制存取方块图

在启用存取限制功能后,下图说明出每个TAP指令的行为。

 

 

图表4 在启用存取限制功能后,下图说明出每个TAP指令的行为

如何实现EDM存取限制,在系统设计上有很多种实现方法,以控制edm restrict access的signal.两种基本的设计方案说明如下:

eFUSE方式使用Chip重新编程管理控制

SOC方式使用软件管理控制

hardware实现控制edm_restrict_access的示意图如下:

 

 

图表5 hardware实现控制edm_restrict_access的示意图

software实现控制edm_restrict_access的例子如下:

sethi $r2,#0x80000

ori $r2,$r2,#0x8c

sethi $r3,#0x04030

ori $r3,$r3,#0x201

swi $r3,[$r2+#0]

3.EDM 存取指示

AndesCoreTM增加一个额外的sideband signal,xdebug_access(active-high),根据此sideband signal来决定request的host是否为EDM.而device就能根据此sideband signal决定是否要把request的data内容传回到host.

sideband signal的名称根据bus interface的类型而有所不同。对于AndesCoreTM处理器,基本的信号名称如下所示:

AHB/AHB-Lite => hdebug_access

APB => pdebug_access

EILM => eilm_debug_access

EDLM => edlm_debug_access

3.1.debug存取识别信号控制

当debug exception发生后,CPU将进入debug mode.然后CPU将会留在debug access mode直到CPU执行到IRET instruction并且trusted_debug_exit 是处于high后CPU将离开debug access mode,反之trusted_debug_exit如果是low,CPU将会保留在debug access mode.

实现控制trusted_debug_exit信号,有二种可供选择的方式如下:

trusted_debug_exit信号总是给high

增加一个权限管理逻辑去控制trusted_debug_exit信号是high或是low权限管理逻辑方块图如下所示:

 

 

图表6 权限管理逻辑方块图

如何控制trusted_debug_exit信号时序图如下所示:

 

 

图表7 如何控制trusted_debug_exit信号时序图

如下例子说明了如何产生trusted_debug_exit控制信号的verilog code:

The code example (Verilog) of trusted_debug_exit generation is described below:

//

//--- Utilize passcode to generate trusted_debug_exit in AHB Bus Controller

//* assume zero-wait-state AHB access

parameter AUTH_CODE = 32‘h0a0b0c0d;

always @(posedge hclk or negedge hreset_n) begin

if (!hreset_n) begin

passcode_reg <= 32‘d0;

end

else if (passcode_wen) begin //debugger enters passcode through debug access

passcode_reg <= hwdata[31:0];

end

end

//validate passcode to generate trusted_debug_exit

assign trusted_debug_exit = (passcode_reg == AUTH_CODE);

3.2.debug存取指示应用

下图说明AHB bus如何使用hdebug_access和验证逻辑来防止恶意的debug存取

 

[!--empirenews.page--]

 

图表8 AHB bus如何使用hdebug_access和验证逻辑来防止恶意的debug存取

如下verilog code说明了如何使用hdebug_access信号:

//--- Use hdebug_access to prevent malicious debug access in AHB Bus Controller

//* assume zero-wait-state AHB access

parameter IRRELEVANT_DATA = 32‘hcafe0001;

parameter AUTH_CODE = 32‘h01020304;

always @(posedge hclk or negedge hreset_n) begin

if (!hreset_n) begin

dbg_acc_d1 <= 1‘b0;

end

else begin // data phase indication of debug access

dbg_acc_d1 <= hdebug_access;

end

end

always @(posedge hclk or negedge hreset_n) begin

if (!hreset_n) begin

passcode_reg <= 32‘d0;

end

else if (passcode_wen) begin //debugger enters passcode through debug access

passcode_reg <= hwdata[31:0];

end

end

//validate passcode to check authentication

assign auth_check_fail = (passcode_reg != AUTH_CODE);

//return irrelevant data if the authentication check of debug access fails

assign hrdata_out = {32{data_read_en}} &

((dbg_acc_d1 & auth_check_fail) IRRELEVANT_DATA : normal_data_out);

4.实际的应用

用户经由上面的介绍完成了权限管理逻辑后,并且挂在AndesCoreTMAHB bus上,再经由仿真器(Cadence)仿真此权限管理逻辑的行为,如下面几张图所示:

edm_restrict_access信号控制

下图说明由sw code把edm_restrict_access signal disable

 

 

图表9 由sw code把edm_restrict_access signal disable

trusted_debug_exit信号控制

 

 

图表10 经由debug access把trusted_debug_exit signal设定成high

debug_access信号

下图说明经由debug host来做存取时,debug_access signal会从low变成high

 

 

图表11 经由debug host来做存取时,debug_access signal会从low变成high

下图说明经由执行IRTE instruction时,debug_access signal会从high变成low

 

 

图表12 经由执行IRTE instruction时,debug_access signal会从high变成low

5. 结语

EDM安全存取是AndesCoreTM保护周边装置内容不被窃取的功能,也因为越来越多客户使用到此功能,所以撰写此技术文章让客户更能进一步了解到此功能的用途,让客户能够很快速的上手,并且使用EDM安全存取是一件愉快与简单的工作。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭