如何应用AndesCore 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。


  1. 控制EDM存取的限制


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


  ? 读为零写忽略


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


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


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


  ? SOC方式使用软件管理控制


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


  ? sethi $r2,#0x80000


  ? ori $r2,$r2,#0x8c


  ? sethi $r3,#0x04030


  ? ori $r3,$r3,#0x201


  ? swi $r3,[$r2+#0]


  1. 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控制信号的verilog code:


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


  v //


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


  v //* assume zero-wait-state AHB access


  v …


  v parameter AUTH_CODE = 32’h0a0b0c0d;


  v …


  v always @(posedge hclk or negedge hreset_n) begin


  v if (!hreset_n) begin


  v passcode_reg <= 32'd0;


  v end


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


  v passcode_reg <= hwdata[31:0];


  v end


  v end


  v …


  v //validate passcode to generate trusted_debug_exit

推荐阅读:http://blog.chinaunix.net/uid-30007806-id-4726527.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值