轻松搞定Silicon Labs 8bit MCU 代码加密
为了防止未经授权访问或拷贝单片机的机内程序,大部分芯片都带有加密锁定位或者加密字节,以保护片内程序。如果在编程时加密锁定位被使能(锁定),就无法用普通编程器直接读取单片机芯片内的程序。
芯片加密,很好的保护了芯片,防止芯片里面的程序被盗走,保护了程序设计者的专利权。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复位实用程序开发工具
- |
- +1 赞 0
- 收藏
- 评论 4
本网站所有内容禁止转载,否则追究法律责任!
评论
全部评论(4)
-
独角兽 Lv9. 科学家 2018-08-28不错
-
窝在家里好舒服 Lv5. 技术专家 2018-07-24已收藏
-
颜汐1207 Lv7. 资深专家 2017-12-01不错,收藏了
-
Tonyxing Lv8. 研究员 2017-11-21强
相关推荐
楼宇自动化系统中的能量收集系统构建方法
能量收集的概念已经越来越深入人心,而由环境能源供电的笨重而又昂贵的系统已经不被人所看好,更多的是采用了能量收集方法。随着RF和微控制器MCU器件在性能与能耗方面取得的新进展,意味着构建一个采用能量收集型应用,现在变得更加容易。
【技术】ARM Cortex-M 32 位微控制器EFM32 外设反射系统实现更低功耗
借助EFM32 MCU外设反射系统,外围设备能够产生其他外围设备可以接收并即刻反应的信号,而CPU 依然处于睡眠状态,从而达到降低系统功耗的目的。
Silicon Labs(芯科科技) 8 bit 集成开发环境 (IDE)
描述- Silicon Labs(芯科科技) 集成开发环境 (IDE) 是一个完整独立的软件程序,其包含项目管理器、源代码编辑器、源代码级调试器和其他实用工具。第三方开发工具链的 IDE 接口,可为系统设计者提供完整的嵌入式软件开发环境。IDE 支持全部的 8 位微控制器 (MCU) 组合。
SILICON LABS 8-bit Microcontroller选型表
SILICON LABS 8位MCU选型,MCU Core 8051,频率20MHz~100MHz,Flash存储2kB~120kB,RAM存储0.25kB~8kB。
产品型号
|
品类
|
系列
|
Frequency(MHz)
|
Flash (kB)
|
RAM (kB)
|
Vdd min(V)
|
Vdd max(V)
|
Package Type
|
Package Size (mm)
|
Internal Osc.
|
Dig I/O Pins
|
ADC 1
|
Temp Sensor
|
Timers (16-bit)
|
PCA Channels
|
DAC
|
Comparators
|
UART
|
SPI
|
I2C
|
HS I2C Slave
|
EMIF
|
CAN
|
LIN
|
VREF
|
Debug Interface
|
C8051F392-A-GM
|
8位MCU
|
C8051F39x Small Form Factor
|
50
|
16
|
1
|
1.8
|
3.6
|
QFN20
|
4x4
|
±2
|
17
|
10-bit, 16-ch., 500 ksps
|
Temp Sensor
|
6
|
3
|
10-bit, 2-ch.
|
1
|
1
|
1
|
2
|
0
|
0
|
0
|
0
|
VREF
|
C2
|
选型表 - SILICON LABS 立即选型
SILICON LABS C8051F99x Ultra Low Power Touch Sense MCUs选型表
SILICON LABS 8位MCU选型,基于25MHz Frequency,8kB Flash,0.5kB RAM等参数进行选型
产品型号
|
品类
|
MCU Core
|
Frequency(MHz)
|
Flash (kB)
|
RAM (kB)
|
Dig I/O Pins
|
ADC 1
|
Temp Sensor
|
Timers (16-bit)
|
PCA Channels
|
Comparators
|
UART
|
SPI
|
I2C
|
HS I2C Slave
|
I2S
|
EMIF
|
CAN
|
LIN
|
Vdd min(V)
|
Vdd max(V)
|
Package Type
|
Package Size (mm)
|
Internal Osc.
|
VREF
|
Debug Interface
|
C8051F990-GM
|
MCU
|
8051
|
25
|
8
|
0.5
|
16
|
12-bit, 9-ch., 75 ksps
|
Temp Sensor
|
4
|
3
|
1
|
1
|
1
|
1
|
0
|
0
|
0
|
0
|
0
|
1.8
|
3.6
|
QFN20
|
3x3
|
±2
|
VREF
|
C2
|
选型表 - SILICON LABS 立即选型
浅谈电容式触摸感应按键技术及常见问题解决办法
以传导性物体(例如手指)触摸电容器可改变电容,此改变会被内置于微控制器内的电路所侦测。本文提供一种可侦测因触摸而改变的电容的方法。
【选型】Silicon Labs的8位微控制器EFM8BB5和EFM8BB21性能差异对比
为了方便客户了解EFM8BB5系列和EFM8BB21系列的区别,更好的进行选型,本文例举出了Silicon Labs的8位微控制器EFM8BB21、EFM8BB51和EFM8BB52三者之间的不同点,来进行性能差异对比。
雅特力携工业控制、电机控制、消费电子、智能家居及汽车电子等领域近百款产品与方案亮相ELEXCON 2022
雅特力作为32位微控制器的创新领导者,携工业控制、电机控制、消费电子、智能家居及汽车电子等五大领域近百款产品与方案亮相此次展会,全面展示了雅特力最新技术与成果,吸引了众多电子行业人士参观交流!
8位单片机EFM8的烧录器有哪些?
8位单片机EFM8系列采用C2调试接口,常见的烧录器有:1,官方的EFM8 STK、USB Debug Adapter、ToolStick。2,第三方的U-EC2/6、WizPro200EFM(支持EFM8和EFM32)等。
【产品】中微半导体首款RISC-V内核的32位微控制器ANT32RV56xx问世,可满足消费电子对高算力、低功耗的要求
近日,中微半导体宣布正式发布首款集成RISC-V内核的32位微控制器-ANT32RV56xx,轻松应对消费电子对高算力、低功耗的要求。ANT32RV56xx设计旨在以超强外设和丰富资源减少驱动电路的元器件数量,以更高效的设计提升系统控制效率。
世界上最节能的微控制器EFM32之十大低功耗奥秘
Silicon Labs EFM32 32 位微控制器系列是世界上最为节能的微控制器,特别适用于低功耗和能源敏感型应用,包括能源、水表和燃气表、楼宇自动化、警报及安防和便携式医疗/健身器材。本文着重强调10个Silicon Labs32位MCU功耗低的因素。
C8051F120和AT45DB系列的存储芯片写数据,编译器在单步执行的时候MCU可以读到数据,但是程序运行的时读不到数据,这是为什么?
分析流程:1、MCU通过SPI写数据到1区的SRAM时,有SCK的信号确认,保证数据正常写入SRAM;2、AT45DB系列SRAM到主存写入,是通过开始地址和指令来执行,带擦除的话,先还擦除页面后再写入数据;3、AT45DB系列主存到2区SRAM,也是是通过开始地址和指令来执行,此时如果步骤2写入主存指令还没有执行完成,那么此时写入指令是无效的;4、如果步骤3指令没有执行成功,此时读到数据也是不正确的。由流程可以分析出来:如果主存区忙碌的话,再去对主存区域进行操作,读出的数据无效,所以在写入主存区域,先判断是否忙碌,可读取寄存器地址为57H的状态寄存器,判断第7bit的“RDY/BUSY”位,或者延时一段时间在去操作主存区。
围观国外达人如何DIY有趣的超声波障碍探测器!
设计达人使用EFM32 GiantGecko DK3750开发板设计出了一款通过声音的响亮程度来判断障碍物距离的超声波障碍探测器,真是太会玩了!
CP2105 单芯片USB转UART桥接器
描述- Silicon Labs(芯科科技) CP2105 单芯片USB转UART桥接器数据手册(中文)-CP2105技术资料,CP2105,CP2105-F01-GMR,CP2105-F01-GM,CP2105EK,silabs CP2105,CP2105数据手册,CP2105 datasheet,CP2105规格书,CP2105手册,CP2105技术资料,CP2105资料,CP2105方案
型号- CP2105,CP210X,CP2105-F01-GM,CP2105-F01-GMR,CP2105EK,CP2105-GM
电子商城
现货市场
服务
朗能泛亚提供是德(Keysight),罗德(R&S)等品牌的测试测量仪器维修服务,包括网络分析仪、无线通讯综测仪、信号发生器、频谱分析仪、信号分析仪、电源等仪器维修,支持一台仪器即可维修。
提交需求>
可定制射频隔离器/环行器(10M-40GHz),双工器/三工器(30MHz/850MHz-20GHz),滤波器(DC-20GHz),功分器,同轴负载,同轴衰减器等射频器件;可定制频率覆盖DC~110GHz,功率最高20KW。
最小起订量: 1 提交需求>
登录 | 立即注册
提交评论