图 5.57 带有加密设置的程序结构图
加密程序的实现部分在 LPC1700 系列 Cortex-M3 的启动代码 vector_table.c 文件中,如程序
清单 5.19 所示。程序首先使用 IF 伪指令判断是否已定义 CRP_LEVEL 全局变量,若已声明,则
编译CRPx数据到向量表__GpvVectorTable[](或__GpvVectorRom[])中,进行加密设置。在Target.c
文件中 targetInit()函数会将向量表挂接到 VTOR 上。
注意:将带有加密设置的程序下载到芯片内部 Flash,在下一次系统复位后加密生效。
程序清单 5.19 LPC1700 系列 Cortex-M3 程序加密实现代码
#if VECTOR_TABLE_IN_FLASH == 1
void *const __GpvVectorTable[] = {
#else
void *const __GpvVectorRom[] = {
#endif
/* 中间段代码在此省略,详细请参看例程 */
(void *)IRQ_187_HANDLE,
(void *)IRQ_188_HANDLE,
(void *)IRQ_189_HANDLE,
(void *)IRQ_190_HANDLE,
#if CRP_LEVEL == 0
(void *)0xffffffff
#endif /* CRP_LEVEL 0 */
1