OTP
OTP 是 One Time Programable, 一次性可编程,一种存储器类型。顾名思义,只允许一次编程,后面无法修改。
在嵌入式系统当中,所有的代码和系统数据都是存储在flash芯片内部的,flash芯片的特点是可多次擦写,而且掉电不会丢失。为了保护falsh中的数据,越来越多的flash厂商内部提供一种特殊的寄存器:OTP寄存器。OTP寄存器和falsh数据区域类似, 1 能被改写为 0, 但是 0 永远不能写成 1。 如果有一个32位的OTP寄存器,出产的值是 0xFFFFFFFF,如果用户通过编程,将OTP寄存器的值写为0xFFFFFFFE后,那OTP寄存器再也不能改写为0xFFFFFFFF了。当然,这个OTP寄存器的值还可以改写为0xFFFFFFFC或其他。
为了给OTP寄存器提供保护,一般这类FLASH芯片还会提供一个LOCK寄存器。LOCK寄存器也是ONE TIME PROGRAMMABLE的。LOCK寄存器的每一位对应于一个OTP寄存器。如果与OTP寄存器对应LOCK寄存器的位(BIT)被从1写为0,就意味着这个被锁住的OTP寄存器在也不能进行写操作了。即使OTP的当前值为0XFFFFFFFF,它的值也永远不可以被改写了。
通过OTP寄存器与LOCK寄存器,用户可以在OTP里保存一些特定的信息,例如软件版本号,硬件版本号,秘钥等信息。同时,这类FLASH芯片内部还会有另外一个OTP寄存器,这个寄存器在出产的时候就被厂家编程过了,写入特定的序列号,并LOCK住。如果有需要,FLASH厂商也可以根据客户的需要写入特定的序列号。这样,每个芯片都会有一个不一样的ID号,避免被复制。
OTP的更多相关文章
- [Erlang 0127] Term sharing in Erlang/OTP 上篇
之前,在 [Erlang 0126] 我们读过的Erlang论文 提到过下面这篇论文: On Preserving Term Sharing in the Erlang Virtual Machine ...
- [Erlang 0119] Erlang OTP 源码阅读指引
上周Erlang讨论群里面提到lists的++实现,争论大多基于猜测,其实打开代码看一下就都明了.贴出代码截图后有同学问这代码是哪里找的? "代码去哪里找?",关于Erla ...
- 动态令牌-(OTP,HOTP,TOTP)-基本原理
名词解释和基本介绍 OTP 是 One-Time Password的简写,表示一次性密码. HOTP 是HMAC-based One-Time Password的简写,表示基于HMAC算法加密的一次性 ...
- Erlang/OTP 17.0-rc1 新引入的"脏调度器"浅析
最近在做一些和 NIF 有关的事情,看到 OTP 团队发布的 17 rc1 引入了一个新的特性“脏调度器”,为的是解决 NIF 运行时间过长耗死调度器的问题.本文首先简单介绍脏调度器机制的用法,然后简 ...
- 利用OTP为odoo增强安全访问
两次验证是广泛应用于各大站点的验证机制,我们今天利用Google Authentication来实现Odoo的两次验证,防止撞库或密码泄露等引起的安全问题. 1. 二次验证的原理 参见 http:// ...
- Erlang 104 OTP
笔记系列 Erlang环境和顺序编程Erlang并发编程Erlang分布式编程YawsErlang/OTP 日期 变更说明 2014-12-21 A Outline, 1 A ...
- OTP【转】
转自:http://baike.baidu.com/link?url=58z3oZfEMvNRiDUmWrxtzfDhv--UZ1jaW4rBHg1d9kIWd6HQaYZ96DH8QAFopSZBK ...
- OTP语音芯片和掩模语音芯片(mask)的区别
OTP(One Time Programable)是MCU的一种存储器类型,意思是一次性可编程:程序烧入IC后,将不可再次更改和:因此OTP语音芯片就是指一次性烧录的语音IC. 从OTP定义上来看,只 ...
- CentOS 6.5安装Erlang/OTP 17.0
CentOS 6.5安装Erlang/OTP 17.0 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs Erlang眼下已经是Fedora和Debian/ ...
- Erlang OTP gen_event
转自:http://www.myexception.cn/program/1569725.html Erlang OTP gen_event (0) 原英文文档:http://www.erlang.o ...
随机推荐
- ajax请求出现400错误
ajax请求出现400错误,如题.百度了只有两种情况,一个参数错误,二是所谓的参数过长. 因为我传递的base64的图片参数,很长.刚开始以为是这个原因.后来发现不是,原因是参数错误.freemake ...
- HDU - 4578 Transformation(线段树区间修改)
https://cn.vjudge.net/problem/HDU-4578 题意 4种操作,区间加,区间乘,区间变为一个数,求区间的和.平方和以及立方和. 分析 明显线段树,不过很麻烦..看kuan ...
- ZOJ - 1610 Count the Colors(线段树区间更新)
https://cn.vjudge.net/problem/ZOJ-1610 题意 给一个n,代表n次操作,接下来每次操作表示把[l,r]区间的线段涂成k的颜色其中,l,r,k的范围都是0到8000. ...
- Spyder Crashed During Last Session
尝试一:Command: pyhton spyder --reset 尝试二:Command: spyder --show-console (突然就好了...)
- vue input添加回车触发
普通vue input @keyup.enter="onSubmit" element el-input @keyup.enter.native="onSubmit&qu ...
- Baidu地图Map api直接加https不起作用
这种情况一般出现在v1.1等老版本上,加s=1也不起作用,尽量使用新版本. https://api.map.baidu.com/api?v=2.0&ak=你的密钥&s=1:
- HDFS笔记(二)
fsimage : NameNode启动时,对文件系统的快照 eidt logs : NameNode启动后,对文件系统的改动序列 namenode在全局里就一个进程,所以存在单点问题 DataNod ...
- STL之partition学习
顺便存一下numeric函数的使用方法吧,感觉用处不大. https://blog.csdn.net/baishuo8/article/details/84073565 partition函数,将元素 ...
- zabbix系列 ~ 如何更好的利用mysql监控
一 简介:今天来聊聊一些关于mysql 监控需要关注的问题二 实现的原理 1 global status 2 variables 三 我们需要关注的zabbix性能图 1 事务类型 ...
- Create C++ Class
创建“目标物体”,是世界场景中的一个物体,当玩家经过时,可以将它拾起,并带至某处 选择Actor为父类,创建FPSObjectiveActor类 注:点击公有按钮就会把头文件放入Public文件夹 ...