0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

单片机程序存储中的软件标识分析

集成电路应用杂志 来源:未知 2018-11-28 17:16 次阅读

在某些特殊设备中,如智能电表等产品,由于使用方并非产品设计方,而使用方又担心设计方将程序外泄,带来使用的安全问题,便要求设计方在单片机存储程序时可自动形成带有一定特征和加密特性的软件标识,以达到使用方可以溯源程序的目的。采用对软件代码计算,并形成校验码的方式,是单片机程序存储中的软件标识的一种良好设计方式。

1 引言

目前,电子设备、智能仪表等器件实现一些功能通常需要安装对应的应用软件。为了便于管理,需要对应用软件进行软件标识,特别是像电能表这类仪表需要执行法制计量机构颁布的相关标准,更加需要对安装于其中的软件进行软件标识,以实现有效管理[1,2]。

现有技术中,软件标识一般是由微处理器软件生成的,用户可更改软件标识,也存在软件更改或更新而未更改软件标识的情形,不利于器件的管理,存在数据泄露的风险[3,4]。

2 设计思路

在单片机生成方法为存储在存储介质中的软件代码生成软件标识,这需要一个前提,即存储介质包括至少一个第一存储单元、至少一个第二存储单元、第三存储单元。第一存储单元用于存储软件代码,第二存储单元用于存储多项式。其中,每个第二存储单元中存储的多项式是不同的。

2.1 实施方法一

如图 1 所示软件标识生成方法,包括以下步骤。

步骤一,设置第二存储单元与第一存储单元的对应关系。

步骤二,对软件代码进行计算以生成校验码。其中,不同的软件代码生成不同的校验码本实施例中,步骤二还包括:(1)从第一存储单元中获取软件代码,从对应的第二存储单元中获取多项式。(2)根据多项式对软件代码进行计算,生成校验码。

具体,当下载软件代码时,将软件代码依次写入第一存储单元中,每将一个第一存储单元写满则从该第一存储单元中获取软件代码,从对应的第二存储单元中获取多项式,根据多项式对软件代码进行计算。

以下通过一个具体实例说明根据多项式对软件代码进行计算的过程:例如,一个第一存储单元中存储的软件代码为 1010。与该第一存储单元对应的第二存储单元中存储的多项式为:H(x)=x3+x+1。

首先,根据变量的指数,将H(x)=x3+x+1转换成对应的二进制数 1011;由于多项式有4位,则把软件代码左移 3(4-1)位,得到 1010000。

其次,用多项式的二进制数对左移 3 位后的软件代码进行模2除,得到余位 011,即为校验码。

由于每个第一存储单元均会生成一个校验码,软件代码存储于几个第一存储单元中,即可得到几个校验码。需要说明的是,校验码的位数可根据实际需要自行设置,也即通过设置多项式的最高次幂实现。

步骤三,根据校验码生成软件标识。若一段软件代码共有 i 个 16 Bit 的校验码,生成软件标识具体可以是:将 i 个校验码进行分组后先进行同或运算,产生 64 Bit 数据,将这 64 Bit 数据与 Flash 的 Key 进行异或运算生成软件标识。

步骤四,将校验码存储于第三存储单元中。本实例中,根据不同的软件代码生成不同的校验码,进而生成不同的软件标识,也即只要软件代码不同,软件标识必不相同。当器件中的应用软件被更改、更新,相应的软件标识也会更改,从而能快速识别器件的应用软件是否符合用户要求,实现器件的安全管理。

2.2 实施方法二

在这种实施方法中,提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现实施例一所提供的软件标识生成方法。计算机可读存储介质为 Flash 存储器。

Flash 存储器的程序存储区一般由 M 个存储块(也即第一存储单元)组成,每一存储块分若干个页。程序存储区只支持片擦除,不支持块擦除和页擦除。Flash 存储器的 NVR 区的 NVR1(也即第二存储单元)存有一定的长度的数据码 K(多项式的二进制数),数据码 K 中的第 n 个 16 Bit 数据 Kn 与 M个数据块中的第 n 个块 Mn 对应,在写 Flash 每个存储块时,Flash 控制器根据对应关系选择相应的多项式计算校验码。

其中,NVR1 对用户不支持读写功能。写完一个存储块,则计算出一个 16 Bit 的校验码 Cn,并将此校验码 Cn 存储在 NVR 区的 NVR2(也即第三存储单元)中。NVR2 对用户有只读功能。

下载程序时所需要的存储块都写完后,共有 M 个16 Bit 的校验码。再将这些校验码进行分组后先进行同或运算,产生 64 Bit 数据,将这 64 Bit 数据与Flash 的 Key 进行异或运算生成软件标识。并将此软件标识的 64 Bit 数据存储到 NVR2 中的固定位置。

使用这种方法的计算机可读存储介质存储应用程式,只要 Flash 存储器中的应用软件被更改、更新,相应的软件标识也会更改,从而能快速识别 Flash 存储器的应用软件是否符合用户要求,实现器件的安全管理

2.3 实施方法三

在这种实施方法中,提供一种单片机,如图 2 所示,单片机包括:计算机可读存储介质、控制单元和 TR 接口。其中,计算机可读存储介质为实施例 2 所提供的计算机可读存储介质。

控制单元分别与计算机可读存储介质和 TR 接口电连接。控制单元用于在接收到读取指令时从计算机可读存储介质中获取软件标识,并通过 TR 接口向外输出软件标识。其中读取指令由外设设备生成并发送至单片机。本实施例中,不需要单片机干预,外设设备即可读取软件标识,避免单片机对软件标识进行处理的可能性,便于法律监督机构管理。

在这种实施方法中,可根据实际需求,还可在单片机中设置并串转换电路。控制单元通过并串转换电路与 TR 接口电连接。并串转换电路用于将软件标识转换成串行的 Bit 数据流。从而,经过并串转换的软件标识可有红外RS485 通信接口输出至外设设备。

3 结语

根据不同的软件代码生成不同的校验码,进而生成不同的软件标识,也即只要软件代码不同,软件标识必不相同。当器件中的应用软件被更改、更新,相应的软件标识也会更改,从而能快速识别器件的应用软件是否符合用户要求,实现器件的安全管理。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6001

    文章

    43973

    浏览量

    620825
  • 存储
    +关注

    关注

    12

    文章

    3856

    浏览量

    84660

原文标题:单片机程序存储中的软件标识研究

文章出处:【微信号:appic-cn,微信公众号:集成电路应用杂志】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    51单片机程序存储器和数据存储

      单片机内部的程序存储器用于存储单片机工作时候的程序单片
    发表于 08-02 17:01 1.2w次阅读
    51<b class='flag-5'>单片机</b>的<b class='flag-5'>程序</b><b class='flag-5'>存储</b>器和数据<b class='flag-5'>存储</b>器

    51单片机外部程序存储空间是什么?

    51单片机EA为内外部程序储存器选择端。当 EA为高电平时,单片机访问内部程 序储存空间,为低电平时访问外部 程序
    发表于 04-10 01:04

    单片机汇编代码分析

    单片机反汇编,二进制代码修改,单片机汇编代码分析单片机反汇编分析单片机逆向工程,bin或he
    发表于 07-13 06:51

    AVR单片机的型号标识分析

    AVR单片机的型号标识解析  1. 型号紧跟的字母,表示电压工作范围。带“V”:1.8-5.5V;若缺省,不带“V”:2.7-5.5V。  例:ATmega48-20AU,不带“V”表示工作电压为
    发表于 07-13 06:48

    怎样下载程序到stm32单片机

    ,需要用到单片机内部自带的Bootloader,这个Bootloader是预制在单片机内部的,出厂自带的,它在出厂后就不能修改或擦除。因此首先要将BOOT0=1,BOOT1=0让单片机从系统
    发表于 07-22 08:55

    单片机存储结构

    单片机存储结构:8051单片机在物理结构上有4个存储空间:1.片内程序存储器2.片外
    发表于 11-22 07:15

    如何知道现在的程序会不会超出单片机存储

    单片机下载程序是有时会出现:如何知道现在的程序会不会超出单片机存储单片机的芯片手册
    发表于 01-26 07:20

    单片机存储器介绍

    嵌入式开发学习笔记4-了解单片机存储单片机的物理结构程序存储器(ROM)数据
    发表于 02-08 06:42

    单片机存储器扩充与程序下载技巧

    介绍了如何对单片机存储器进行扩充,以及在这种大容量存储器条件下的程序下载技巧。关键词:单片机存储
    发表于 10-14 16:47 62次下载

    STC单片机程序软件

    STC单片机程序软件
    发表于 04-05 16:13 7次下载

    单片机存储器扩充与程序下载技巧

    单片机存储器扩充与程序下载技巧。
    发表于 05-20 11:16 14次下载

    单片机程序烧写软件

    单片机程序烧写软件
    发表于 01-07 21:01 16次下载

    51单片机存储程序和数据

    初学51总是会有这样的疑问,从电脑下载程序到开发板后,程序去哪了? C51中,用户或应用程序,系统程序和数据都是存放在哪的?51单片机从物理
    发表于 11-23 17:54 9209次阅读

    如何对单片机进行片外程序存储器设计

    EA=0,单片机只访问外部程序存储器,对于8031单片机此引脚必须接地.EA=1,单片机访问内部程序
    发表于 03-20 15:05 4453次阅读

    基于52单片机程序烧入软件

    基于52单片机程序烧入软件
    发表于 06-09 09:46 2次下载