PAGE1
PAGE1
25.LPC17xx安全与防护
25.1引言
在现代嵌入式系统中,安全性和防护是至关重要的考虑因素。LPC17xx系列单片机提供了多种安全机制,包括硬件和软件层面的保护措施,以确保系统的可靠性和数据的安全性。本章将详细介绍LPC17xx系列的安全特性,包括闪存保护、调试保护、访问控制和安全启动等方面的内容。
25.2闪存保护
25.2.1闪存保护概述
闪存保护是LPC17xx系列单片机中的一项重要安全特性,用于防止未经授权的访问和修改闪存中的程序代码和数据。闪存保护可以通过编程方式设置,以确保特定的代码段或数据段在运行过程中不会被意外修改或读取。
25.2.2闪存保护寄存器
LPC17xx系列单片机使用闪存保护寄存器(FlashProtectionRegister,FPR)来控制闪存的保护功能。FPR寄存器位于闪存控制器中,通过编程该寄存器可以设置闪存的保护模式。
25.2.2.1FPR寄存器结构
FPR寄存器的结构如下:
位|描述|
|—–|—————————–|
0|闪存保护使能|
1-3|保留|
4-7|闪存保护区域选择|
8-31|保留|
25.2.3闪存保护配置
闪存保护可以通过编程FPR寄存器来配置。以下是一个配置闪存保护的例子,假设我们希望保护闪存的前16KB区域。
#includeLPC17xx.h
voidenable_flash_protection(void){
//使能闪存保护
LPC_FLASH-FPR=0x10;//0x10表示选择前16KB区域进行保护
//确保写操作完成
while(LPC_FLASH-STAT(16)){
//等待写操作完成
}
}
intmain(void){
//初始化系统
SystemInit();
//使能闪存保护
enable_flash_protection();
//主循环
while(1){
//应用程序代码
}
}
25.2.4闪存保护的注意事项
保护区域选择:FPR寄存器的4-7位用于选择保护区域,具体区域大小和位置可以根据需求进行配置。
保护使能:FPR寄存器的第0位用于使能保护功能,设置为1时保护功能生效。
写操作完成:在设置FPR寄存器后,需要等待写操作完成,可以通过读取闪存控制器的状态寄存器(STAT)来实现。
25.2.5闪存保护的应用场景
闪存保护广泛应用于以下场景:
防止代码篡改:确保程序代码不被未经授权的修改。
保护敏感数据:防止敏感数据被非法读取或修改。
防止调试工具访问:确保调试工具在某些情况下无法访问闪存中的内容。
25.3调试保护
25.3.1调试保护概述
调试保护是LPC17xx系列单片机中的一项重要安全机制,用于防止未经授权的调试访问。调试保护可以通过编程调试控制寄存器(DebugControlRegister,DCR)来设置,以确保单片机在调试模式下不会暴露敏感信息。
25.3.2调试控制寄存器
DCR寄存器的结构如下:
位|描述|
|—–|—————————–|
0|调试访问使能|
1-3|保留|
4|调试中断使能|
5-7|保留|
25.3.3调试保护配置
调试保护可以通过编程DCR寄存器来配置。以下是一个配置调试保护的例子,假设我们希望禁用调试访问。
#includeLPC17xx.h
voidenable_debug_protection(void){
//禁用调试访问
LPC_SC-DCR=0x1;//0x1表示禁用调试访问
//确保写操作完成
while(LPC_SC-DCR(18)){
//等待写操作完成
}
}
intmain(void){
//初始化系统
SystemInit();
//使能调试保护
enable_debug_protection();
//主循环
while(1){
//应用程序代码
}
}
25.3.4调试保护的注意事项
调试访问使能:DCR寄存器的第0位用于使能或禁用调试访问,设置为1时禁用调试访问。
调试中断使能:DCR寄存器的第4位用于使能或禁用调试中断,