STM8 存储FLASH、EEPROM、存储保护

发布者:码上奇迹最新更新时间:2016-08-08 来源: eefocus关键字:STM8  FLASH  EEPROM  存储保护 手机看文章 扫描二维码
随时随地手机看文章
FLASH主要特性

STM8内部的FLASH程序存储器和数据EEPROM由一组通用寄存器来控制。用户可以使用这些寄存器来编程或擦除存储器的内容、设置写保护、或者配置特定的低功耗模式。用户也可以对器件的选项字节(Option byte)进行编程。

  • STM8S EEPROM分为两个存储器阵列:
    • 最多至 128K字节的FLASH程序存储器,不同的器件容量有所不同。请参考4.4存储器组织结构了解更多细节。 
    • 最多至 2K字节的数据EEPROM(包括option byte-选择字节),不同的器件容量有所不同。请参考4.4存储器组织结构了解更多细节。 
  • 编程模式
    • 字节编程和自动快速字节编程(没有擦除操作) 
    • 字编程 
    • 块编程和快速块编程(没有擦除操作) 
    • 在编程/擦除操作结束时和发生非法编程操作时产生中断 
  • 读同时写(RWW)功能。该特性并不是所有STM8S器件都拥有。请参考ATM8具体的数据手册了解更多细节。 
  • 在应用编程(IAP)和在线编程(ICP)能力。 
  • 保护特性
    • 存储器读保护(ROP) 
    • 基于存储器存取安全系统(MASS密钥)的程序存储器写保护 
    • 基于存储器存取安全系统(MASS密钥)的数据存储器写保护 
    • 可编程的用户启动代码区域(UBC)写保护 
  • 在待机(Halt)模式和活跃待机(Active-halt)模式下,存储器可配置为运行状态和掉电状态。

存储器组织结构

STM8S的EEPROM以32位字长(每字4字节)为基础组织起来。根据不同的器件,存储器组织机 构有所不同:

  • 小容量STM8S器件
    • 8K FLASH程序存储器,每页 64字节,共 128页 
    • 640字节数据 EEPROM,每页 64字节,共 10页。数据 EEPROM包括一页的选项字节(64字节)。 
  • 中容量STM8S器件
    • 从 16K到 32K FLASH程序存储器,每页 512字节,最多 64页 
    • 1K字节数据EEPROM,每页 512字节,共 2页。数据 EEPROM包括一页的选项字节(512字节)。 
  • 大容量STM8S器件
    • 从 64K到 128K FLASH程序存储器,每页 512字节,最多 256页 
    • 从 1K到 2K字节数据 EEPROM,每页 512字节,共 4页。数据 EEPROM包括一页的选项字节(512字节)。

页的大小定义了用户启动代码区域(UBC)大小的最小可调整值。请参考4.4.1用户启动区域 (UBC)。 图3和图4展示了STM8S系列FLASH存储器和数据EEPROM的组织机构。

 

 

STM8 存储FLASH、EEPROM、存储保护 - Wornyong - 智能物联,嵌入您我!

STM8 存储FLASH、EEPROM、存储保护 - Wornyong - 智能物联,嵌入您我!

 

STM8 存储FLASH、EEPROM、存储保护 - Wornyong - 智能物联,嵌入您我!

 

 

 用户启动区域(UBC)

用户启动区域(UBC)包含有复位和中断向量表,它可用于存储IAP及通讯程序。UBC有一个两级保护结构可保护用户代码及数据在IAP编程中免于无意的擦除或修改。这意味着该区域总是写保护的,而且写保护不能通过使用MASS密钥来解锁。

在ICP模式下(使用SWIM接口)可以通过修改选项字节来配置UBC的大小。UBC选项字节指定了分配在UBC中的页的数量。UBC区域的起始地址是0x00 8000。 可以通过读取UBC选项字节来获得UBC区域的大小。请参考图6,图7和图8来了解UBC区域的存储器映射。对于选项字节部分,请参考相应的数据手册了解更多的UBC选项字节的细节。

STM8 存储FLASH、EEPROM、存储保护 - Wornyong - 智能物联,嵌入您我!

 

1. UBC[7:0]=0x00意味着没有定义用户启动区域。请参考相应的数据手册了解UBC选项字节的细节。 
2. 头两页(128字节)包含中断向量表。 

 

STM8 存储FLASH、EEPROM、存储保护 - Wornyong - 智能物联,嵌入您我!

 

 1. UBC[7:0]=0x00意味着没有定义用户启动区域。请参考相应的数据手册了解UBC选项字节的细节。 
2. 头两页(1K字节)包含中断向量表。中断向量表只占用128字节(32个中断向量)。

STM8 存储FLASH、EEPROM、存储保护 - Wornyong - 智能物联,嵌入您我!

 

1. UBC[7:0]=0x00意味着没有定义用户启动区域。请参考相应的数据手册了解UBC选项字节的细节。 
2. 头两页(1K字节)包含中断向量表。中断向量表只占用128字节(32个中断向量)。
 
 

存储器保护

读保护

当选项字节中的ROP字节被编程为'0xAA'时,读保护就生效了。这种情况下,无论写保护是否生效,在ICP模式中(使用SWIM接口)读取或修改FLASH程序存储器和DATA区域都是被禁止的。即使认为没有什么保护是完全不可破解的,对于一个通用微处理器来说,STM8的读保护的特性也提供了一个非常高水平的保护级别。

 

可以在ICP模式中通过对选项字节中的ROP字节重新编程来解除程序存储器、UBC和DATA区域的读保护。在这种情况下,程序存储器、UBC、DATA区域以及选项字节都被自动擦除,器件也可以被重新编程了。

存储器存取安全系统(MASS)

STM8在复位以后,主程序和DATA区域都被自动保护以防止无意的写操作。在试图修改其内容前必须对其解锁,而解锁的机制由存储器存取安全系统(MASS)来管理。UBC区域的特性指明了在UBC中的内容一直是写保护的一旦存储器内容被修改完毕,推荐将写保护使能以防止数据被破坏。


对主程序存储器的写操作

在器件复位后,可以通过向FLASH_PUKR寄存器连续写入两个被叫作MASS密钥的值来解除主程序存储器的写保护。这两个写人FLASH_PUKR的值会和下两个硬件密钥相比较:

● 第一个硬件密钥:0b0101 0110 (0x56)
● 第二个硬件密钥:0b1010 1110 (0xAE)

需要通过如下步骤来解除主程序存储器区域的写保护:


向FLASH_PUKR写入第一个8位密钥。在系统复位后,当这个寄存器被首次写入值时,数据总线上的值没有被直接锁存到这个寄存器中,而是和第一个硬件密钥值(0x56)相比较。 
如果密钥输入错误,FLASH_PUKR寄存器在下一次系统复位之前将一直被锁住。在下一次复位前,再向该寄存器进行的任何写操作都会被系统忽略掉。
如果第一个硬件密钥正确,当这个寄存器被第二次写入值时,数据总线上的值没有被直接锁存到这个寄存器中,而是和第二个硬件密钥值(0xAE)相比较。
如果密钥输入错误,FLASH_PUKR寄存器在下一次系统复位之前将一直被锁住。在下一次复位前,再向该寄存器进行的任何写操作都会被系统忽略掉。
如果第二个硬件密钥正确,主程序存储器写保护被解除,同时FLASH_IAPSR中的PUL位为1。

在开始编程之前,应用程序可以校验PUL位是否被有效地置1。应用程序可以在任意时刻通过清PUL位来重新禁止对FLASH程序区域的写操作。

对DATA区域的写操作

在STM8复位后,可以通过向FLASH_DUKR寄存器连续写入两个被叫作MASS密钥的值来解除DATA区域的写保护。这两个写入FLASH_DUKR的值会和以下两个硬件密钥值相比:

● 第一个硬件密钥:0b0101 0110 (0x56)
● 第二个硬件密钥:0b1010 1110 (0xAE)

需要通过如下步骤来解除数据区域的写保护:


向FLASH_DUKR写入第一个8位密钥。在系统复位后,当这个寄存器被首次写入值时,数据总线上的值没有被直接锁存到这个存储器中,而是和第一个硬件密钥值(0x56)相比较。
如果密钥输入错误,应用程序可以尝试重新输入这两个MASS密钥来对DATA区域进行解锁。
如果第一个硬件密钥正确,当这个寄存器被第二次写入值时,数据总线上的值没有被直接锁存到这个寄存器中,而是和第二个硬件密钥值(0xAE)相比较。
如果密钥输入错误,DATA EEPROM区域在下一次系统复位之前将一直保持写保护状态。在下一次复位前,再向该寄存器进行的任何写操作都会被系统忽略。
如果第二个硬件密钥正确,DATA区域的写保护被解除,同时FLASH_IAPSR中的DUL位为1。

在开始编程之前,应用程序可以通过校验DUL位是否被有效地置1来确认DATA区域已经将写保护解锁。应用程序可以在任意时刻通过清空DUL位来重新禁止对DATA区域的写操作。


对选项字节的写操作的步骤和对DATA EEPROM的操作大致相同。但是要注意到FLASH_CR2中的OPT位要位1以及FLASH_NCR中的NOPT位要为0,这样才可以对选项字节进行写操作。


关键字:STM8  FLASH  EEPROM  存储保护 引用地址:STM8 存储FLASH、EEPROM、存储保护

上一篇:STM8 读同时写RWW
下一篇:STM8 CPU寄存器描述

推荐阅读最新更新时间:2024-03-16 15:04

OK6410裸机简单的NAND FLASH驱动
OK6410裸机简单的NAND FLASH驱动,只写了个简单的函数,读取一页 img src= http://my.csdn.net/uploads/201207/20/1342795831_9865.JPG alt= /************************************************************************************************************* * 文件名: NandFlash.c * 功能: S3C6410 NandFlash底层驱动函数 * 作者: 陈鹏 * 创建时间: 2012年3
[单片机]
OK6410裸机简单的NAND <font color='red'>FLASH</font>驱动
w806 w25q128 spi flash 移植fatfs
一:spi初始化 hspi.Instance = SPI; hspi.Init.Mode = SPI_MODE_MASTER; hspi.Init.CLKPolarity = SPI_POLARITY_LOW; hspi.Init.CLKPhase = SPI_PHASE_1EDGE; hspi.Init.NSS = SPI_NSS_SOFT; hspi.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_4; hspi.Init.FirstByte = SPI_LITTLEENDIAN; 二:io初始化 __HAL_RCC_SPI_CLK_
[单片机]
w806 w25q128 spi <font color='red'>flash</font> 移植fatfs
STM8获取电压值
STM8获取电压值 (1)端口定义 static void ADC_POWER_Config() { /* Init GPIO for ADC1 */ GPIO_Init(GPIOB, GPIO_PIN_2, GPIO_MODE_IN_FL_NO_IT);//可变电阻 ADC1_DeInit(); ADC1_Init(ADC1_CONVERSIONMODE_SINGLE, ADC1_CHANNEL_2, ADC1_PRESSEL_FCPU_D2, ADC1_EXTTRIG_TIM, DISABLE, ADC1_ALIGN_RIGHT, ADC1_SCHMITTTRIG_CHANNEL0, ENABLE); ADC1_
[单片机]
写MSP430片内flash|FLASH 读写等操作 学习
【FLASH 操作】FLASH 读写等操作 学习 近似型号中文资料: IC型号:N25Q128 http://www.soiseek.cn/NUMONYX/N25Q128/2.htm 官方文档:F5438中文全集.pdf_免费高速下载|百度网盘-分享无限制 第60页 //****************************************************************************** // 参数: adr 为地址 , 范围 0x1000~0xFFFF void FlashRead(long adr,uint8 *bBuf,uint8 bLen) { while (bLen
[单片机]
stm32f4xx 加密
一、ID获取 34 设备电子签名 电子签名存储在 Flash 区。可以使用 JTAG/SWD 或 CPU 对其进行读取。它包含出厂前编程 的标识数据,这些标识数据允许用户固件或其它外部设备将其接口与 STM32F4xx 微控制器 的特性自动匹配。 34.1 唯一设备 ID 寄存器(96 位) 唯一设备标识符最适合: ● 用作序列号(例如 USB 字符串序列号或其它终端应用程序) ● 在对内部 Flash 进行编程前将唯一 ID 与软件加密原语和协议结合使用时用作安全密钥以 提高 Flash 中代码的安全性 ● 激活安全自举过程等 96 位的唯一设备标识符提供了一个对于任何设备和任何上下文都唯一的参考号码。用户永远 不能改变这些
[单片机]
stm32f4xx 加密
玩转STM32(9)下载程序到Flash
前面介绍了怎么样设置JLink调试器,这样就架起了一座开发电脑与开发板之间的桥梁,有了这个桥梁,就可以把程序下载到STM32的CPU里了。那么样在软件上怎么样操作呢?在说软件怎么样操作之前,先强调一下,硬件要按前面的文章那样连接好,也就是JLink的JTAG接口与开发板的JTAG接口相连接,开发板的电源接好,然后JLink的USB接口接到电脑上,这样就把硬件配置好了。当你插入JLink的USB接口之后,如果安装驱动正常,就可以在电脑设备管理器里查看到如下图那样: 在上图里发现JLink driver这个选项,说明就已经正常了。 接着下来,就是要在Keil开发环境里把程序写到开发板的CPU里,在开发环境里,可以看到下面的图标
[单片机]
玩转STM32(9)下载程序到<font color='red'>Flash</font>
东芝宣布兴建第7座NAND Flash工厂
  2017 年是  NAND  Flash 闪存厂商丰收的一年,零售价格的暴涨带动了厂商的营收,同时还对获利有了巨大贡献。 所以,当前全球的 4 大  NAND  Flash 厂商,包括三星、Intel/美光、 东芝 、SK 海力士也有了充足的资金来进行新一波的投资。 而根据外电的报导, 东芝 就最新宣布,将拿出 70 亿日圆的金额,准备兴建第 7 座闪存工厂(Fab7),地点就在日本的四日市(Yokkaichi)。下面就随手机便携小编一起来了解一下相关内容吧。   事实上,目前 东芝 的第 6 座工厂(Fab 6)正在建设当中,预计将于 2018 年第 4 季完工。 不过,面对市场的强烈需求,东芝扩产的步伐似乎还不打算停下来
[手机便携]
盛群推出32-bit通用型Flash微控制器HT32F125x系列
    为了因应市場上微處理器从8-bit与16-bit架构逐渐转移至32-bit的普遍趋势,盛群半导体推出了以ARM® Cortex™-M3为核心的第一款32-bit微控制器HT32系列产品。全新的32-bit通用型Flash 微控制器HT32F125x系列,最高运行速度可达72MHz (90 DMIPS),操作电压为2.7V~3.6V单一电源,并符合-40℃~85℃工业溫度范围,搭配盛群ISP (In-System Programming)及IAP (In-Application Programming)技术方案,可轻易升级韧体,提高生产效能与产品弹性。 HT32F125x系列的Flash容量为8K~32K Bytes,S
[工业控制]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved