微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 离线加密编程器中的BootLoader程序设计

离线加密编程器中的BootLoader程序设计

时间:01-19 来源:互联网 点击:

引言

离线加密编程器是一种独立于PC机,并通过SPI接口直接对ATmega系列单片机进行编程操作的设备。在整个系统中,编程器与目标板之间的结合部分是一个最可能被解密的地方,因为可以通过抓取SPI总线上的时序得到所传输的数据,因此编程器与目标板之间传输的数据必须是经过加密的。而有效的编程数据不能为加密数据,所以加密数据需要经过解密还原才能用于单片机的编程。本设计中BootLoader程序的作用就是接收离线加密编程器的加密数据,对加密数据进行解密,然后完成目标板的编程操作。首先编程目标板单片机的BootLoaoler引导程序,最后与BootLoacler程序建立连接。编程器将加密数据传送给。BootLoader程序,由BootLoacler程序对加密数据进行解密,然后完成编程操作。这样做既可以确保数据不被外界破解,又能方便程序的升级操作。BootLoader程序的下载对具有知识产权保护要求的离线编程器设计是一个关键步骤,它的成功与否直接决定离线编程器设计能否成功。本文将以ATmegal69为例进行BootLoader程序下载的介绍。

1 系统硬件设计

本系统主要由单片机、显示部分、按键开关、存储部分和串行通信部分等组成,硬件结构框图如图1所示。

图1中,AVR ATmegal69P(V)单片机是一种高性能、低功耗的8位微处理器,采用先进的RISC结构,130条指令大多数可以在1个时钟周期内完成,满足了本系统对执行速度的要求。它具有非易失性的程序和数据存储器,16 KB的系统内可编程Flash,具有4×25段的LCD驱动器的ATmegal69P(V),输入电压3.3 V,串行US—ART,可工作于主机/从机模式的SPI串行接口;存储部分采用ATmel公司8个引脚的串口存储芯片AT45DB041B,主存容量大小为528 KB,一共2 048页,每页264B,具有2个大小为265B的数据缓存,允许通知对存储芯片进行读写,工作电压为3.3 V。由于系统单片机的SPI通信口用来对目标板进行编程,所以采用软件模拟SPI对AT45DB041B进行读写;其通信部分分为与PC机的通信和与目标板的通信。与PC机的通信采用USB接口,编程器内部采用UART—USB转换桥芯片PL一2303,在编程方式上等同于一个普通的UART接口,非常方便;与目标板的通信是通过高速的SPI接口,达到对目标板的编程操作;采用双键制按键开关,其中按键之一用来查询下载器的各种信息,另外一个按键用来启动对目标板的下载操作;为了充分利用ATmegal69P(V)具有LCD驱动器的特点,采用段式LCD屏,可以缩小下载器的体积,操作方便。

2 工作原理

2.1 几个概念

①开发方:设计IP的开发单位或个人。
②IP拥有方:拥有离线加密编程器的知识产权方。
③客户:离线加密编程器的使用者,需向IP拥有方购买离线加密编程器的各种软硬件资源。

2.2 三方关系

开发方负责开发离线加密编程器的各种软硬件,然后向IP拥有方提供各种所需的软硬件资源,包括编程器硬件、上位机软件,并且根据IP拥有方的要求编写目标板的程序。IP拥有方将软硬件卖给客户,客户使用IP拥有方提供的与编程器相关的软硬件对目标板进行编程操作。开发方提供给IP拥有方的适合目标板的程序是未经过加密的,IP拥有方通过上位机软件,自由选择加密参数,对未经过加密的程序进行加密。客户购买到离线加密编程器后,可以选择某一IP拥有方,并在选择的IP拥有方处进行注册。购买授权下载次数,通过客户端软件将加密编程器进行授权,此时,加密编程器具备了下载功能。客户根据自己的要求向自己注册过的IP拥有方提出目标板软件购买意向,IP拥有方将客户要求告知开发方,开发方根据要求进行软件的编写。软件编写成功后,开发方将软件交给IP拥有方,IP拥有方将软件进行加密,并交给客户,客户通过客户端软件将加密过的程序存储到加密编程器。此时,客户手中的加密编程器可以脱离PC机。客户将编程器带到现场对目标板进行编程,直到授权下载次数用完为止。授权次数使用完毕后,客户可以通过客户端软件提取加密编程器的授权购买请求文件,通过网络将文件传给IP拥有方,IP拥有方根据文件的内容进行相应的授权操作,然后将生成的授权文件通过网络回传给客户,客户通过客户端软件将授权文件下载到加密编程器,如果授权成功,那么编程器可以继续使用。

2.3 文件类型

整个工作过程涉及以下几种文件:

①加密下载文件:该文件是HEX文件经过加密后得到的文件,其中包含密钥信息和编程数据。
②注册申请文件:该文件包含申请注册所需编程器的内部信息及客户信息。
③注册文件:该文件是在注册申请文件的基础上,IP拥有方添加注册信息,包括各种参数。
④授权申请文件:该文件用来向IP拥有方购买授权下载次数,内容包括编程器信息、客户信息,以及交易达成的各种协议。
⑤授权文件:该文件在授权申请文件的基础上添加授权次数及说明。
注:其中注册申请文件、授权申请文件是通过客户端软件从编程器中提取的;注册文件、授权文件通过客户端软件下载到编程器。

3 编程器工作流程

编程器的工作流程如图2所示。下载到编程器的加密数据需要存入具有SPI接口的大容量外存AT45DB041B 中,然而Atmegal69P(V)的SPI接口需要用来对目标板进行编程,所以只能采用软件模拟SPI接口来对AT45DB041B进行读写操作。对目标板进行编程时,为了防止通过抓取SPI接口的时序来得到有效的编程数据,首先编程目标板的引导程序,然后对目标板下载加密数据,通过引导程序对数据进行解密后再进行目标板的编程操作。这样做的好处是,通过数据加密,使得SPI总线上传输的数据均为加密信息,即使得到SPI总线上的时序,也不能使用。目标板的BootLoader程序将接收到的加密数据进行解密,然后将数据存储。这些操作都在单片机内部进行,不会被破解。

3.1 主程序

主程序要完成系统的初始化、中断设置、全局变量设置等。在初始化结束后,系统进入主查询循环过程以判断当前进行的操作,并进入相应的功能模块。系统主程序流程如图3所示。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top