以旺宏NorFlash芯片MX25l12835F为例。

通过写寄存器B1h进入OTP模式,写C1h退出OTP模式

命令集:
06h - Write Enable

04h - Write Disable

05h - Read Status Register

01h - Write Status Register

03h - Read Data Bytes

0Bh - Data Fast Read

02h - Page Program(Page Write)

D8h - Block Erase

C7h - Chip Erase

2Bh- Read Security Register

2Fh- Write Security Register

Step1

先通过写B1h进入OTP模式,并写06h打开写使能

Step2

由于OTP是个独立的空间,所以4K bit的空间地址还是从 000000h~ 0001FFh

(1)读操作

(a)以1Byte为单位,可以读小于512Byte(4Kbit == 512Byte)的任意长度。
(b)以读取整个OTP空间为例,起始地址为000000h,读的地址数据格式如下:
__u8 sdata[4] ;

                   sdata[0] = 0x03; //读指令sdata[1] = 0x00; //地址的16~23位sdata[2] = 0x00;//地址的8~15位sdata[3] = 0x00;//地址的0~7位再用你读RDID的那个接口下读spi_xfer.tx_addr = sdata;spi_xfer.tx_count = 4;spi_xfer.rx_addr = rDataBuff;spi_xfer.rx_count = 512;
(2)写操作

(a)写是以一个page即256Byte为单位,所以4K的空间要分2次写才能写完;
(b)假设加密数据存在enBuffer[512]中,要将enBuffer的数据写到OTP中,要分2次写,操作如下:
__u8 sdata[260] ; //这里的数组大小是260 = 4字节地址+256字节数据;

                   sdata[0] = 0x02; //页写指令sdata[1] = 0x00; //地址的16~23位sdata[2] = 0x00;//地址的8~15位sdata[3] = 0x00;//地址的0~7位    eLIBs_memcpy((void*)(sdata+4), enBuffer, 256);//4为地址长度的偏移量,256是一次写的最大值,也可以根据实际数据的大小来填,但不能超过256;       spi_xfer.tx_addr = sdata;spi_xfer.tx_count = 4+256;spi_xfer.rx_addr = 0;spi_xfer.rx_count = 0;

Step3

通过写C1h退出OTP模式;进入OTP后,一定要退出,不然正常的数据区不能操作

Step4

通过写2Fh寄存器可以锁死OTP

注意,这个操作是不可逆的; 一但写了2F后,OTP区域将只能读,不能再对其进行写操作。



通过读2Bh寄存器的bit0位,若bit0为1说明厂商出厂时已经锁死Security OTP,则Flash的电子串号ESN是默认写在OTP的前16字节, 直接进入OTP模式,从000000h读取16Byte长度即可得到;bit0为0说明厂商没有锁死Security OTP,由用户自行操作。如下图:

旺宏norFlash Security Register OTP空间读写相关推荐

  1. 7.PCIE配置空间读写软件

    软件-7.PCIE配置空间读写 软件-7.PCIE配置空间读写 软件-7.PCIE配置空间读写 软件读写配置空间 驱动层接口 原理分析 驱动层代码接口 驱动层接口与原理 相关参考 基础知识 raw_p ...

  2. 创建表空间以及用户,授予权限,查看表空间名称及大小,物理文件的名称及大小,数据库的创建日期和归档方式,数据库的版本,数据库库对象,表空间的使用情况,表空间读写

    需求: 数据库机器:            数据库类型:oracle            数据库用户名密码:mnp/mnp            表空间:tbs_mnp_data           ...

  3. 旺宏指控东芝闪存专利侵权 或影响东芝出售半导体事业

    据时事通信社4月7日报导,美国国际贸易委员会(nited States International Trade Commission,ITC) 本月6日宣布,将针对东芝制造的半导体产品可能侵犯台湾半导 ...

  4. linux 写pci配置空间,[转载]应用程序中pci配置空间读写

    应用程序中pci配置空间读写 ~~~~~~~~~~~~~~~~~~~~~~~ 1. 概述 主要讲述在linux操作系统中应用程序如何读写pci配置空间. 2. 基本原理 对于pci设备,由cpu通过一 ...

  5. 梳理:WPS JS宏之WPS表格单元格读写值

    文章目录 单元格写入数据 读取单元格的值 似乎找到了答案 其实是XML而非HTML Range.Value 方法可用参数: 是否可逆 出租屋的床太硬,我躺不平,所以我只能希望码字看看自己能不能卷一卷- ...

  6. CAT24C01/02/04/08/16 和CAT24C512 设备地址差异 ;大容量空间读写还要在设备地址后面加寄存器地址

    ATMEL  EEPROM       AT24CXXX 安森美 ON EEPROM  CAT24CXXX EEPROM 设备地址 1.1,CAT24C01/02/04/08/16 设备地址  规格书 ...

  7. btc 挖矿奖励 机制

    在比特币的生命周期中,将会有21,000,000个比特币被发行.所有的比特币均来自创建新区块时对矿工的奖励. 第一个创世区块的奖励设定为50个比特币,此后每新建210,000个区块,奖励减半. 区块所 ...

  8. 《STM32从零开始学习历程》——SPI物理层及FLASH芯片介绍

    <STM32从零开始学习历程>@EnzoReventon SPI物理层及FLASH芯片介绍 相关链接: SPI协议层 SPI特性及架构 SPI固件库 参考资料: [野火EmbedFire] ...

  9. Spring Security 5.0.x 参考手册 【翻译自官方GIT-2018.06.12】

    源码请移步至: https://github.com/aquariuspj/spring-security/tree/translator/docs/manual/src/docs/asciidoc ...

最新文章

  1. 汉诺塔python递归函数_关于python递归函数实现汉诺塔
  2. CVE-2015-8966/AndroidID-31435731
  3. C语言之 scanf() 函数的用法
  4. 实现一个压缩Remoting传输数据的Sink:CompressionSink
  5. 从零开始写一个武侠冒险游戏-6-用GPU提升性能(1)
  6. 接软件开发项目,你需要知道这些!
  7. Semantic-UI的React实现(二):CSS类构造模块 1
  8. java dateformat hh_SimpleDateFormat上的Java HH:mm和hh:mm之间的区别
  9. php基本语法实验总结,PHP总结(一)基本语法内容
  10. shell学习笔记(五)
  11. 文本生成系列之transformer结构扩展(三)
  12. 微信小程序公众平台如何生成小程序码
  13. ViewStub你肯定听过,但是这些细节了解吗?
  14. Hung-yi Li Machine Learning 2019 Task1
  15. iOS app跳转微信小程序失败 报bad_param
  16. python爬取酷狗音乐url_python-从酷狗下载爬取自己想要的音乐-可以直接拿来体验哟...
  17. html方法介绍,html中noframes标签的使用方法介绍
  18. jwt的token要存mysql吗_认证的token不存到数据库
  19. ZOOM:1的原理和作用
  20. 做个乐意为别人撑伞的人

热门文章

  1. 华为手机--中断备份后---清除手机中备份产生的缓存
  2. 南理文字RPG Four
  3. oracle 窗口函数查询条件,62.Oracle数据库SQL开发之 高级查询——使用分析函数之窗口函数...
  4. CSS3 - 使用弹性盒子(Flex Box)实现完美居中、栅格系统及响应式布局
  5. 卖车只是敲门砖,从“硬件升级”到“主动召回”,李想并不理想
  6. SQL注入之联合查询(MySQL)
  7. RFID技术在固定资产管理中的作用
  8. sql server link服务器
  9. 项目冲刺 Sixth
  10. app解析不会执行js代码_JS解析和执行时间