代码安全模块限制了CPU访问片内存储器,这也就阻止了通过JTAG接口或外设模块对存储器的读写操作。在安全的时候,有两种保护级别,这与程序计数器指向何处有关。如果代码正在安全存储器内运行,仅仅是仿真器(即JTAG)的访问被阻断,那么代码本身可以访问受安全保护的数据。相反,如果代码正在不安全存储器内运行,那么所有到安全存储器的存取操作都被阻止。
用户代码可以动态跳进、跳出安全存储器,所以允许在安全存储器运行的程序从不安全的存储器中调用函数。类似地,即使主程序正在不安全的存储器中运行,中断服务子程序也可以放在安全存储器内被调用。
通过一个128位(8个16位的字)密码,DSP的安全可以得到保护。但在执行了密码匹配流程PMF(Password Match Flow)后,DSP就不安全了。DSP安全级别见表2-4。
表2-4 安全级别
(www.daowen.com)
密码存放在Flash、ROM存储器中的代码安全密码区(Password Locations,PWL),地址为0x003F 7FF8~0x003F 7FFF。该区存放着由设计者事先设定好的密码。在Flash型DSP中,旧密码可以改成新密码。而在ROM型DSP中,密码由TI公司一次性烧写好,不能被改动。
如果PWL中的密码为全1,那么DSP也是不安全的。因为在DSP中Flash内容被擦除后,就变为全l,仅需从PWL中读一下就可使DSP不安全。如果PWL中的密码为全0,那么DSP是安全的,但不要这样做,因为这样DSP就再也不能被调试或重新编程。如果对Flash执行了清除(Clear)过程后立即复位DSP,PWL中的密码也会为全0,所以也不要这样做。
要使DSP处于安全或不安全的状态,用户可以通过访问相关寄存器来进行。这些寄存器共有8个,每个寄存器的长度均为16位,被称为关键字(KEY)寄存器,这些寄存器映射到存储器空间的0x0AE0~0x0AE7地址中,并受EALLOW保护。
如果使用代码安全操作,在0x3F 7F80~0x3F 7FF5之间的地址就不能存放程序代码或数据,而是必须全部编程为0。如果不使用代码安全功能,则这片区域就可用于编程或存放数据。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。