轻松搞定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强
相关推荐
【技术】ARM Cortex-M 32 位微控制器EFM32 外设反射系统实现更低功耗
借助EFM32 MCU外设反射系统,外围设备能够产生其他外围设备可以接收并即刻反应的信号,而CPU 依然处于睡眠状态,从而达到降低系统功耗的目的。
浅谈电容式触摸感应按键技术及常见问题解决办法
以传导性物体(例如手指)触摸电容器可改变电容,此改变会被内置于微控制器内的电路所侦测。本文提供一种可侦测因触摸而改变的电容的方法。
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三者之间的不同点,来进行性能差异对比。
世界上最节能的微控制器EFM32之十大低功耗奥秘
Silicon Labs EFM32 32 位微控制器系列是世界上最为节能的微控制器,特别适用于低功耗和能源敏感型应用,包括能源、水表和燃气表、楼宇自动化、警报及安防和便携式医疗/健身器材。本文着重强调10个Silicon Labs32位MCU功耗低的因素。
【产品】中微半导体首款RISC-V内核的32位微控制器ANT32RV56xx问世,可满足消费电子对高算力、低功耗的要求
近日,中微半导体宣布正式发布首款集成RISC-V内核的32位微控制器-ANT32RV56xx,轻松应对消费电子对高算力、低功耗的要求。ANT32RV56xx设计旨在以超强外设和丰富资源减少驱动电路的元器件数量,以更高效的设计提升系统控制效率。
使用EFM8BB1系列MCU时,怎样关闭看门狗定时器?
关闭看门狗定时器,需要向WDTCN寄存器写入0xDE后再写入0xAD将禁止WDT。写0xDE和写0xAD必须发生在4个时钟周期之内,否则禁止操作将被忽略。在这个过程期间,应禁止中断,以避免两次写操作之间有延时。
【产品】Silicon Labs C8051F9xx系列超低功耗微控制器,适用于家庭自动化、智能仪表、工业监控等
Silicon Labs(芯科科技)推出的C8051F9xx超低功耗系列微控制器产品是业界最节能的微控制器。从开始设计到最终形成最优解决方案,在所有必要指标中实现业界最佳,因此它被视为真正的“低功耗”。其可在整个工作电压范围内完成所有工作,而不会影响其性能和电池寿命。
C8051系列MCU用外部振荡器作为时钟源,在软件中该如何配置这些外部振荡器引脚?
对于具有专用振荡器引脚的 MCU (如 C8051F12x系列),这些引脚将自动配置为所选的外部振荡模式。 对于那些外部振荡器引脚与GPIO引脚复用的器件(如C8051F30x),这些与外部振荡器相关的GPIO引脚必须按照下面描述配置: 1. 对于一个外部晶体振荡器,XTAL1和XTAL2两个引脚必须配置为模拟输入。 2. 对于“RC”模式或“C”模式,XTAL2 或 EXTCLK引脚必须配置为模拟输入。 3. 对于CMOS时钟模式,XTAL2或EXTCLK引脚必须配置为数字输入。 对于振荡器引脚与GPIO复用的器件,任何时候使用外部振荡器,相关的Crossbar必须配置跳过这些被振荡器电路使用的引脚,以避免任何与Crossbar外设之间的 冲突。
使用KEIL C51开发环境,仿真调试正常,手动切换内部默认20MHz时钟到24.5MHz时钟后,调试仿真MCU和开发环境卡死,仿真器USB接口不断尝试连接不成功,是不是仿真器的问题?应该如何解决?
在KEIL C51环境和Eclipse环境下操作时钟切换要特别小心,一定要先确认切换到的时钟已经正常振荡,否则一旦切换到没有起振的时钟源,将导致开发环境和目标板卡死的现象,这并非仿真器的问题。解决办法:重新启动开发环境软件或者计算机,连接仿真器和目标板,检查程序是否先打开了24.5MHz的内部高速振荡器,循环判断等待振荡标志位生效,然后再切换主时钟到内部高速24.5MHz时钟源上。
【产品】超低功耗的精度和模拟外围设备的32位低功耗微控制器EFM32HG 系列
专门开发世界级混合信号器件的深圳芯科科技有限公司(Silicon Labs)开发了世界顶级节能微控制器EFM32 MCUs系列产品,其中Happy Gecko 32 位微控制器系列基于强大的 ARM® Cortex®-M0+ 内核,具有低能耗技术、短的节能模式唤醒时间以及多种多样外围设备等优点,实现了高功能、低功耗的系统设计,非常适用于任何电池驱动的应用以及其他需要高性能和低能耗的消费类电子
【产品】最大工作频率48MHz的微控制器,嵌入式应用最佳选择
Silicon Labs新推出微控制器EFM8UB3系列,Flash容量为40kB,在512字节扇区内支持在线可编程,提供非易失性数据存储,同时支持固件的现场升级。提供独立的片上系统解决方案,具有多功能的外设接口。
电子商城
现货市场
服务
可定制板装式压力传感器支持产品量程从5inch水柱到100 psi气压;数字输出压力传感器压力范围0.5~60inH2O,温度补偿范围-20~85ºС;模拟和数字低压传感器可以直接与微控制器通信,具备多种小型SIP和DIP封装可选择。
提交需求>
可来图定制均温板VC尺寸50*50mm~600*600 mm,厚度1mm~10mm,最薄0.3mm。当量导热系数可达10000W/M·K,散热量可达10KW, 功率密度可达50W/cm²。项目单次采购额需满足1万元以上,或年需求5万元以上。
提交需求>
登录 | 立即注册
提交评论