轻松搞定Silicon Labs 8bit MCU 代码加密

2016-07-08 世强 紫云
微处理器,微控制器,C8051F,C8051F996 微处理器,微控制器,C8051F,C8051F996 微处理器,微控制器,C8051F,C8051F996 微处理器,微控制器,C8051F,C8051F996

为了防止未经授权访问或拷贝单片机的机内程序,大部分芯片都带有加密锁定位或者加密字节,以保护片内程序。如果在编程时加密锁定位被使能(锁定),就无法用普通编程器直接读取单片机芯片内的程序。

 

芯片加密,很好的保护了芯片,防止芯片里面的程序被盗走,保护了程序设计者的专利权。SILICON LABS MCU 具有先进的代码加密技术,简单易用,可靠性高。下面就Silicon Labs MCU 加密问题,提供几个简单易用的窍门。


首先我们介绍Silicon Labs MCU是如何加密的。在芯片的datasheet中“FLASH存储器”章节中的“安全选项”里会有介绍。例如:C8051F350


安全选项

CIP-51提供了安全选项以保护FLASH存储器不会被软件意外修改,以及防止产权程序代码和常数被读取。程序存储器写允许(PSCTL寄存器中的PSWE)和程序存储器擦除允许(PSCTL寄存器中的PSEE)位保护FLASH存储器不会被软件意外修改。在用软件修改FLASH存储器的内容之前,PSWE必须被置为逻辑‘1’;在用软件擦除FLASH存储器之前,PSWE位和PSEE位都必须被置为逻辑‘1’。


此外,CIP-51还提供了可以防止通过C2接口读取产权程序代码和常数这一安全功能。 保存在 FLASH 用户空间的最后一个字节中的安全锁定字节保护 FLASH 存储器,使其不 能被非保护代码或通过 C2 接口读、写或擦除。FLASH 安全机制允许用户从 0 页(地址 0x0000 ~ 0x01FF)开始锁定 n 个 512 字节的 FLASH 页,其中 n 是安全锁定字节的反码。


注意:当任 何一个其他 FLASH 页被锁定时,包含 FLASH 安全锁定字节的页也被锁定,见下面的例子。



图1:FLASH程序存储器映象


简单的说,如果需要加密某些flash空间的代码,就对安全锁定字节写数据0,如果需要锁定整个flash空间,就对整个安全锁定字节全部写数据0。那么如何在代码中实现这个加密呢?如何在烧写芯片的时候,就对代码加密?来点实际的,见下面的例程:


方法一:直接修改HEX文件

最简单直接的方法,修改hex文件。如果我们了解hex文件的代码规则,就很简单实现这个加密,这种加密在代码烧录进去的时候,就实现了加密,不管这颗芯片是否被使用或被运行过,都已经加密。绝对保护你的代码。


首先介绍hex文件的代码规则

HEX由任意数量的十六进制记录组成。每个记录包含5个域,它们按 :llaaaatt[dd...]cc 的格式排列。其中每一组字母对应一个不同的域,每一个字母对应一个十六进制编码的数字。每一个域由至少两个十六进制编码数字组成,它们构成一个字节,就像以下描述的那样:




以上是介绍了HEX代码规则,知道了这个规则就很容易实现我们的代码加密。看看下面的实例:



 

这个例程说明,只需要在hex文件的结束行前面加入一行代码,这行代码在烧录的时候,就会把值写入安全选项字节,实现加密。下面再看一个C8051F350的例程:



仔细阅读会发现和F02x有点不一样,因为C8051F02x的安全选项字节是2个字节,而F350只有1个字节。所以具体要看芯片的不同而定义。文件夹中有一个HEX文件校验码计算工具可以试试。

 

方法二:在编程的时候添加代码实现 ASM

对于以上方法是比较容易,只要修改hex文件,但是如果不熟hex代码规则,或者不放心这么做,是不是可以在编程的时候添加代码,让编译器来实现这个加密的过程。答案是完全可以的。来看看下面的实例:

1、在keil51中新建工程,芯片选择C8051F350。添加好main函数。编译一下。

2、新建一个汇编文件,文件名后缀是“asm”。在这个文件中添加一下代码:


     


3、把这个文件添加到工程,并放在工程文件的最后面,这样生成代码的时候,可以编译在最后面,方便查看。

4、编译一下文件, 顺利通过,查看hex文件,会发现和之前手动在hex文件中添加是一样的。

5、这个例程可以查看文件夹中的“C8051F 代码加密例程 asm”。采用Keil uvision4编译器工程。


方法三:在编程的时候添加代码实现 C

在方法二中,是通过添加汇编文件实现的,那如果不想添加汇编文件如何实现呢?就看

在C语言文件中嵌入汇编代码来实现。

1、 在keil51中新建工程,芯片选择C8051F350。添加好main函数。编译一下。

2、 新建一个C文件,在这个文件中添加一下代码:



3、 把这个文件添加到工程,并放在工程文件的最后面,这样生成代码的时候,可以编译在最后面,方便查看。

4、编译一下文件, 会发现不能通过编译。注意:如果在c51程序中使用了汇编语言,注意在Keil编译器中需要激活Properties中的“Generate Assembler SRC File” 和“Assembler SRC File ”两个选项。注意这个是灰色的打勾,一定要重新打钩激活。


再查看工程窗口的文件图标发现:多了3个小红色方块。这就说明设置成功。重新编译文件,发现编译通过。

5、 查看hex文件,会发现和之前手动在hex文件中添加是一样的。

6、 这个例程可以查看文件夹中的“C8051F 代码加密例程 C”。采用Keil uvision4编译器工程。


方法四:在下载程序时加密

在使用下载器给芯片下载程序的时候,在下载界面的加密复选框勾选也可以实现代码加密,这里不做详细说明,可以查看所使用的下载器说明书。

 

结束:加密后的操作

1、只能擦除整片芯片;

2、读取芯片代码,数据全部是00;

3、不能对芯片再次烧录,除非先整片擦除。


看到这里您是否又有项目灵感需实现,点击下面开发软件帮你忙。

Silicon Labs Simplicity Studio平台开发工具
Silicon Labs 集成开发环境工具
Silicon Labs 配置向导2开发工具
Silicon Labs FLASH编程开发工具
Silicon Labs 8位MCU Keil PK51 开发工具
Silicon Labs ToolStick 开发工具
Silicon Labs μVision 调试驱动程序开发工具
Silicon Labs 生产编程器开发工具
Silicon Labs .HEX转化.SVF开发工具
Silicon Labs USB复位实用程序开发工具

授权代理商:世强先进(深圳)科技股份有限公司
技术资料,数据手册,3D模型库,原理图,PCB封装文件,选型指南来源平台:世强硬创平台www.sekorm.com
现货商城,价格查询,交期查询,订货,现货采购,在线购买,样品申请渠道:世强硬创平台电子商城www.sekorm.com/supply/
概念,方案,设计,选型,BOM优化,FAE技术支持,样品,加工定制,测试,量产供应服务提供:世强硬创平台www.sekorm.com
集成电路,电子元件,电子材料,电气自动化,电机,仪器全品类供应:世强硬创平台www.sekorm.com
  • +1 赞 0
  • 收藏
  • 评论 4
微控制器 微处理器 工业电子 消费电子 C8051F996-GUR C8051F997-C-GU C8051F991-C-GM C8051F996-GM C8051F997-C-GM C8051F990-C-GMR C8051F996-GU C8051F996-C-GUR C8051F996-C-GM C8051F991-C-GMR C8051F990-GM C8051F990-C-GM C8051F996-C-GMR C8051F996-C-GU C8051F990-GMR C8051F997-GM C8051F991-GM C8051F997 C8051F99x C8051F997-C-GMR C8051F991 C8051F996-GMR C8051F990 C8051F996 C8051F997-C-GUR C8051F981-GMR C8051F980-C-GMR C8051F98x C8051F988 C8051F989 C8051F986 C8051F987 C8051F986-C-GM C8051F980-GMR C8051F980 C8051F985-GM C8051F981 C8051F983-GM C8051F982-GM C8051F987-GM C8051F981-C-GMR C8051F985 C8051F982 C8051F989-GM C8051F988-GM C8051F983 C8051F980-C-GM C8051F973-A-GM C8051F974-A-GM C8051F971-A-GM C8051F97x C8051F975 C8051F975-A-GM C8051F970-A-GMR C8051F970 C8051F973 C8051F972-A-GM C8051F974 C8051F971 C8051F972 C8051F966-A-GM C8051F960-A-GQ C8051F966-A-GQ C8051F965-B-GM C8051F968-B-GM C8051F966 C8051F967 C8051F964 C8051F961-B-GM C8051F965 C8051F96x C8051F968 C8051F969 C8051F960-B-GQR C8051F967-B-GM C8051F964-B-GM C8051F962 C8051F963 C8051F960 C8051F961 C8051F966-B-GM C8051F963-B-GM C8051F969-B-GM C8051F960-B-GM C8051F962-B-GM C8051F964-A-GM C8051F964-B-GQR C8051F930-G-GDI C8051F930-G-GQ C8051F930-G-GMR C8051F931 C8051F930-G-GM C8051F93x C8051F931-GM C8051F931-G-GMR C8051F930-G-GQR C8051F930-GQ C8051F930 C8051F920-GMR C8051F920-GQ C8051F920 C8051F920-G-GQR C8051F921 C8051F921-GM C8051F920-G-GQ C8051F920-GM C8051F921-G-GMR C8051F92x C8051F920-G-GMR C8051F911 C8051F911-GU C8051F912 C8051F912-GU C8051F912-D-GMR C8051F911-GM C8051F912-D-GUR C8051F91x C8051F912-D-GU C8051F911-D-GM C8051F901 C8051F901-GU C8051F902-GM C8051F902 C8051F901-D-GM C8051F901-GMR C8051F90x C8051F901-D-GMR C8051F902-GU C8051F902-D-GDI C8051F 代码加密 代码保护 SILICON LABS 管状电机

本网站所有内容禁止转载,否则追究法律责任!

评论

   |   

提交评论

全部评论(4

  • 独角兽 Lv9. 科学家 2018-08-28
    不错
  • 窝在家里好舒服 Lv5. 技术专家 2018-07-24
    已收藏
  • 颜汐1207 Lv7. 资深专家 2017-12-01
    不错,收藏了
  • Tonyxing Lv8. 研究员 2017-11-21
没有更多评论了

相关推荐

【技术】如何将无限制版的Keil C51嵌入到Silicon labs IDE中调试

如果要编译超过4K代码的C程序,必须购买正版Keil并安装好,再把IDE中编译和链接文件的路径指定到Keil中的编译和链接文件所在的位置。

技术探讨    发布时间 : 2017-08-18

【经验】C8051单片机Flash失效分析

本文将就 Silicon Labs C8051Fxxx单片机Flash失效的问题进行根因分析以及提出解决办法。

设计经验    发布时间 : 2017-07-27

浅谈电容式触摸感应按键技术及常见问题解决办法

以传导性物体(例如手指)触摸电容器可改变电容,此改变会被内置于微控制器内的电路所侦测。本文提供一种可侦测因触摸而改变的电容的方法。

设计经验    发布时间 : 2016-03-07

围观国外达人如何DIY有趣的超声波障碍探测器!

设计达人使用EFM32 GiantGecko DK3750开发板设计出了一款通过声音的响亮程度来判断障碍物距离的超声波障碍探测器,真是太会玩了!

新应用    发布时间 : 2019-07-30

【经验】如何正确使用8位MCU的PortMatch功能

Silicon Labs的8位MCU(C8051和EFM8)都具有PortMatch功能,此功能允许一个或多个端口IO引脚上的逻辑电平变化触发系统事件。

设计经验    发布时间 : 2018-02-08

C8051F系列MCU是否兼容5V系统?

C8051F MCU不同的系列,供电电压范围不同,如C8051F5XX系列MCU的供电范围为:1.8V~5.25V,C8051F33X系列MCU的供电范围为:2.7V - 3.6V。

技术问答    发布时间 : 2017-05-05

【产品】Silicon Labs C8051F9xx系列超低功耗微控制器,适用于家庭自动化、智能仪表、工业监控等

Silicon Labs(芯科科技)推出的C8051F9xx超低功耗系列微控制器产品是业界最节能的微控制器。从开始设计到最终形成最优解决方案,在所有必要指标中实现业界最佳,因此它被视为真正的“低功耗”。其可在整个工作电压范围内完成所有工作,而不会影响其性能和电池寿命。

新产品    发布时间 : 2019-04-17

世界上最节能的微控制器EFM32之十大低功耗奥秘

Silicon Labs EFM32 32 位微控制器系列是世界上最为节能的微控制器,特别适用于低功耗和能源敏感型应用,包括能源、水表和燃气表、楼宇自动化、警报及安防和便携式医疗/健身器材。本文着重强调10个Silicon Labs32位MCU功耗低的因素。

新产品    发布时间 : 2016-07-11

C8051F120和AT45DB系列的存储芯片写数据,编译器在单步执行的时候MCU可以读到数据,但是程序运行的时读不到数据,这是为什么?

分析流程:1、MCU通过SPI写数据到1区的SRAM时,有SCK的信号确认,保证数据正常写入SRAM;2、AT45DB系列SRAM到主存写入,是通过开始地址和指令来执行,带擦除的话,先还擦除页面后再写入数据;3、AT45DB系列主存到2区SRAM,也是是通过开始地址和指令来执行,此时如果步骤2写入主存指令还没有执行完成,那么此时写入指令是无效的;4、如果步骤3指令没有执行成功,此时读到数据也是不正确的。由流程可以分析出来:如果主存区忙碌的话,再去对主存区域进行操作,读出的数据无效,所以在写入主存区域,先判断是否忙碌,可读取寄存器地址为57H的状态寄存器,判断第7bit的“RDY/BUSY”位,或者延时一段时间在去操作主存区。

技术问答    发布时间 : 2016-10-25

Silicon Labs(芯科科技) EFM32HG系列应用于工业、汽车市场的MCU微控制器官方数据手册

描述- EFM32 Happy Gecko系列凭借无与伦比的性能和超低功耗变革了8至32位MCU市场,成为了对能源敏感的电池供电设备和物联网(IoT)应用的最佳解决方案。

型号- EFM32HG210F64-B-QFN32R,EFM32HG321,EFM32HG322,EFM32HG108F32-B-QFN24R,EFM32HG308F64-B-QFN24R,EFM32HG309F64-B-QFN24R,EFM32HG222F64-B-QFP48R,EFM32HG210F64-B-QFN32,EFM32HG350F32-B-CSP36R,EFM32HG210F32-B-QFN32,EFM32HG210,EFM32HG310F64-B-QFN32R,EFM32HG222F32-B-QFP48,EFM32HG309F32-B-QFN24,EFM32HG322F32-B-QFP48,EFM32HG110F32-B-QFN24R,EFM32HG108F32-B-QFN24,EFM32HG308F32-B-QFN24,EFM32HG322F32-B-QFP48R,EFM32HG,EFM32HG321F32-B-QFP48R,EFM32HG350F64-B-CSP36,EFM32HG210F32-B-QFN32R,EFM32,EFM32HG110F32-B-QFN24,EFM32HG108,EFM32HG222,EFM32HG110F64-B-QFN24,EFM32HG108F64-B-QFN24R,EFM32HG308F32-B-QFN24R,EFM32HG309F64-B-QFN24,EFM32HG309F32-B-QFN24R,EFM32HG310F64-B-QFN32,EFM32HG222F32-B-QFP48R,EFM32HG308,EFM32HG309,EFM32HG350F64-B-CSP36R,EFM32HG321F32-B-QFP48,EFM32HG310F32-B-QFN32,EFM32HG321F64-B-QFP48,EFM32HG350,EFM32HG110,EFM32HG308F64-B-QFN24,EFM32HG310F32-B-QFN32R,EFM32HG322F64-B-QFP48R,EFM32HG110F64-B-QFN24R,EFM32HG310,EFM32HG322F64-B-QFP48,EFM32HG108F64-B-QFN24,EFM32HG222F64-B-QFP48,EFM32HG350F32-B-CSP36,EFM32HG321F64-B-QFP48R

数据手册  -  SILICON LABS  - Rev. 2.00  - March, 2018 PDF 英文 下载

【经验】PCB布线技巧:8位单片机端口Crossbar功能的使用及配置

如果单片机自带Crossbar功能,只要软件配置调整一下各端口功能,PCB布线就会畅通。

设计经验    发布时间 : 2017-08-09

低电压MCU在低功耗应用中的调试经验

世强代理的Silicon labs C8051F9xx系列MCU是可以在低于0.9 V工作的MCU,适合应用于单电池驱动的便携设备。该系列MCU的调试有些不同的地方,文章将介绍该系列MCU的调试经验

设计经验    发布时间 : 2016-03-10

【经验】如何进行IC FLASH程序存储器写入安全字节?

SILICON LABS推出C8051F系列单片机产品项目在开发时为了预防FLASH程序会被修改,通常软件工程师会对该IC FLASH程序存储空间进行加密。

设计经验    发布时间 : 2018-02-12

主控MCU通过C2接口对EFM8BB10F8G MCU的Flash存储器进行读写操作,存在概率性失败。从Flash存储器中读数据也是异常,请问这时什么原因导致的?

检查程序中的中断设置,发现是有一处读操作没有关闭中断导致的,将中断关闭后,对EFM8BB10F8G MCU的Flash进行读、写,存在概率性失败的情况得到解决。因为主控MCU用的是ARM芯片,运行的是linux操作系统,所以主控MCU通过C2接口对EFM8BB10F8G MCU的Flash存储器进行读写操作的函数也是以驱动程序的形式存在的,并且系统中各种软硬中断也比较频繁,因此相对时序控制上也需要更加严格,才能保证可靠的读写操作。

技术问答    发布时间 : 2016-10-25

Silicon Labs(芯科科技) C8051F996 开发套件用户指南

描述- 开发板操作文档

型号- C8051F996-GUR,C8051F997-C-GU,C8051F991-C-GM,C8051F996-GM,C8051F997-C-GM,C8051F990-C-GMR,C8051F980-C-GMR,C8051F996-GU,C8051F996-C-GUR,C8051F98X,C8051F988,C8051F996-C-GM,C8051F989,C8051F986,C8051F991-C-GMR,C8051F987,C8051F990-GM,C8051F980-GMR,C8051F990-C-GM,C8051F996-C-GMR,C8051F980,C8051F996-C-GU,C8051F985-GM,C8051F981,C8051F983-GM,C8051F987-GM,C8051F981-C-GMR,C8051F985,C8051F982,C8051F989-GM,C8051F983,C8051F981-GMR,C8051F990-GMR,C8051F997-GM,C8051F991-GM,C8051F997,C8051F99X,C8051F986-C-GM,C8051F997-C-GMR,C8051F996-GMR,C8051F991,C8051F982-GM,C8051F990,C8051F996,C8051F988-GM,C8051F980-C-GM,C8051F997-C-GUR

用户指南  -  SILICON LABS  - 2014年05月01日 PDF 英文 下载

展开更多

电子商城

查看更多

品牌:SILICON LABS

品类:8位MCU

价格:¥12.8215

现货: 9,414

品牌:SILICON LABS

品类:8位MCU

价格:¥14.9588

现货: 7,500

品牌:SILICON LABS

品类:8位MCU

价格:¥16.4456

现货: 7,149

品牌:SILICON LABS

品类:8位MCU

价格:¥29.8248

现货: 2,757

品牌:SILICON LABS

品类:8位MCU

价格:¥22.9487

现货: 2,205

品牌:SILICON LABS

品类:8位MCU

价格:¥67.5466

现货: 2,059

品牌:SILICON LABS

品类:8位MCU

价格:¥11.0563

现货: 1,500

品牌:SILICON LABS

品类:8位MCU

价格:¥17.9315

现货: 1,500

品牌:SILICON LABS

品类:8位MCU

价格:¥6.5429

现货: 99

品牌:SILICON LABS

品类:8位MCU

价格:¥51.9373

现货: 96

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

现货市场

查看更多

品牌:SILICON LABS

品类:Mixed-Signal MCU

价格:¥10.1700

现货:10,000

品牌:RENESAS

品类:microcontroller

价格:¥2.8532

现货:188,410

品牌:Advanced Digital Chips

品类:MCU

价格:¥6.6000

现货:100,000

品牌:SGMICRO

品类:微处理器监控电路

价格:¥0.2400

现货:90,000

品牌:SGMICRO

品类:微处理器监控电路

价格:¥0.9400

现货:80,000

品牌:RENESAS

品类:microcontroller

价格:¥32.9564

现货:40,179

品牌:SGMICRO

品类:微处理器监控电路

价格:¥0.7900

现货:40,000

品牌:SGMICRO

品类:微处理器监控电路

价格:¥0.4019

现货:39,000

品牌:兆易创新

品类:IC

价格:¥4.8932

现货:27,000

品牌:国民技术

品类:微控制器

价格:¥18.7261

现货:25,138

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

服务

查看更多

压力传感器定制

可定制板装式压力传感器支持产品量程从5inch水柱到100 psi气压;数字输出压力传感器压力范围0.5~60inH2O,温度补偿范围-20~85ºС;模拟和数字低压传感器可以直接与微控制器通信,具备多种小型SIP和DIP封装可选择。

提交需求>

液冷板/液冷机箱定制

定制水冷板尺寸30*30mm~1000*1000 mm,厚度1mm~50mm,散热能力最高50KW,承压可达3MPA;液冷机箱散热能力达500W~100KW。项目单次采购额需满足1万元以上,或年需求5万元以上。

提交需求>

查看更多

授权代理品牌:接插件及结构件

查看更多

授权代理品牌:部件、组件及配件

查看更多

授权代理品牌:电源及模块

查看更多

授权代理品牌:电子材料

查看更多

授权代理品牌:仪器仪表及测试配组件

查看更多

授权代理品牌:电工工具及材料

查看更多

授权代理品牌:机械电子元件

查看更多

授权代理品牌:加工与定制

世强和原厂的技术专家将在一个工作日内解答,帮助您快速完成研发及采购。
我要提问

954668/400-830-1766(工作日 9:00-18:00)

service@sekorm.com

研发客服
商务客服
服务热线

联系我们

954668/400-830-1766(工作日 9:00-18:00)

service@sekorm.com

投诉与建议

E-mail:claim@sekorm.com

商务合作

E-mail:contact@sekorm.com

收藏
收藏当前页面