修改记录:v1.0,完成于2020-2-9

1 NOR FLASH (mx25u12835f) lock/unlock功能介绍

Lock/unlock功能表示对FLASH某些区域或全部进行数据保护,即在数据保护区域不允许进行Program/Erase操作。根据数据手册介绍,NOR FLASH(mx25u12835f)有两种模式的数据保护模式:BP保护模式和单块保护模式。这两种方式由Secure Register中WPSEL位决定。

  1. 1 单块保护模式

当Secure Register中WPSEL=1时表示单块保护模式。在此模式下FLASH内存分为256个64KB块,其中第0个块和第255个块中每4KB由SRAM中一个bit保护,其它每个64KB块由一个bit保护。如下图所示:

每个块(无论4KB块还是64KB块)可通过SBLK/SBULK命令进行lock/unlock。当设置为1时为保护状态,不允许此块进行Program/Erase操作。当设置为0时可以正常进行Program/Erase操作。

命令GBLK/GBULK可以对整个FLASH区域进行保护。

  1. 2 BP保护模式

当Secure Register中WPSEL=0时表示BP保护模式。在该模式下由Status Register中BP0~3决定被保护区域范围。整个FLASH同样也分成256个64KB块,BP0~3=[0000]表示不进行任何保护,BP0~3=[0001]表示第0块被保护,BP0~3=[0010] 表示第0-1块被保护,BP0~3=[0011] 表示第0-3块被保护…BP0~3=[0111] 表示第0-63块被保护,BP0~3=[1000] 表示第0-255块被保护,BP0~3=[1XXX]表示整个255块被保护。其中Configuration Register中TB位表示是从上到下还是从下到上进行保护。

当TB=0时,保护区域如下所示:

当TB=1时,保护区域如下所示:

2 Linux对lock/unlock功能的支持分析

当前Linux代码(5.2-rc3)中SPI-NOR代码框架并不支持对单块保护模式,而对BP模式的支持仅支持3BIT模式即BP0~2。同时对于3BIT BP模式仅部分厂商的FLASH支持。

2.1 SPI-NOR代码中支持lock/unlock的FLASH类型

对于每种类型的FLASH支持的属性由flash_info->flags决定,相关属性定义如下所示:

其中lock/unlock功能由SPI_NOR_HAS_LOCK决定,如下图所示表示型号s25fl512s支持lock/unlock功能。

2.2 SPI-NOR代码lock/unlock分析

SPI-NOR代码框架中有三个与之相关的API接口:spi_nor_lock()/spi_nor_unlock()/spi_nor_is_locked()。Spi_nor_lock()用于对某区域进行保护操作;spi_nor_unlock()用于对某区域进行解保护操作;spi_nor_is_locked()用于查询某区域是否已保护。

2.2.1函数spi_nor_lock()

对于在FLASH属性中设置了SPI_NOR_HAS_LOCK标志位的FLASH,支持LOCK功能,它最终会调用函数spi_nor_lock()。流程如下所示:

其中关键步骤为:

  1. 读取Status Register确定当前保护的BP值;
  2. 确定新的BP值;
  3. 重新设置Status Register进行新的区域保护;

2.2.2函数spi_nor_unlock()

对于在FLASH属性中设置了SPI_NOR_HAS_LOCK标志位的FLASH,支持UNLOCK功能,它最终会调用函数spi_nor_unlock()。流程如下所示:

其中关键步骤为:

  1. 读取Status Register确定当前保护的BP值;
  2. 确定新的BP值;
  3. 重新设置Status Register进行新的区域保护;

2.2.3函数spi_nor_is_locked()

对于在FLASH属性中设置了SPI_NOR_HAS_LOCK标志位的FLASH,支持查询lock状态的功能,它最终会调用函数spi_nor_is_locked()。流程如下所示:

其中关键步骤为:

  1. 读取Status Register确定当前保护的BP值;
  2. 检查查询的区域是否在BP值保护范围内;

2.3 macronix类型FLASH支持lock/unlock遗留问题

虽然SPI-NOR代码框架对部分FLASH支持lock/unlock功能,但对于型号mx25u12835f的FLASH,SPI-NOR代码仍存在问题。从代码分析上来看,当前存在三个问题:

  1. 当前SPI-NOR代码仅支持3BIT BP,而型号mx25u12835f的FLASH上则是支持4BIT BP;
  2. 当前SPI-NOR代码中对查询Program/Erase完成状态在FSR寄存器中确定,而型号mx25u12835f的FLASH并没有FSR寄存器,而是在Configuration Register中定义,因此若要支持mx25u12835f,需要查询CR寄存器来确定是否完成;
  3. 另外TB状态,一般都定义在SR寄存器中,而号mx25u12835f的FLASH上则定义在CR寄存器;

NOR FLASH (mx25u12835f) lock/unlock功能及linux对其支持相关推荐

  1. Lock/Unlock Account - Active Directory

    根据IsAccountLocked属性来判断Account是否Lock/Unlock,因为LDAP provider不支持IsAccountLocked属性,这里采用WinNT Provider:(注 ...

  2. 为什么await()后会执行lock.unlock,await()时不就释放锁了吗

    为什么await()后会执行lock.unlock,await()时不就释放锁了吗 1 是的,释放锁是为了别的线程获得,是为了线程间的通信,是临时释放的,真正满足继续向下执行条件后,被唤醒后获得了锁, ...

  3. uboot通过u盘烧写linux内核,向Flash中烧写uboot和linux操作系统

    向Flash中烧写uboot和linux操作系统 2011年03月28日 向Flash中烧写uboot和linux操作系统 ====================================== ...

  4. linux flash文件读取,一种基于Linux的flash文件系统存储策略

    摘要:随着嵌入式系统的广泛应用,嵌入式系统中的数据存储和数据管理显得日益重要.本文主要介绍flash存储器的存储特点,Linux文件系统的两类存储策略:块式存储和线性存储,并在此基础上提出了一种改进的 ...

  5. dx9 lock unlock效率太低_synchronized的缺陷,Lock的诞生

    一.前言 二.synchronized局限性 + Lock锁机制的引入 2.1 synchronized局限性 第一,使用synchronized,其他线程只能等待直到持有锁的线程执行完释放锁(syn ...

  6. linux 加速播放软件,VirtualBox 6.1首次推出Linux 5.4支持,加速的视频播放及更多功能...

    VirtualBox 6.1首次推出Linux 5.4支持,加速的视频播放及更多功能 Mark Do 2019年12月14日 暂无评论 阅读 7,329 次 现在可以下载VirtualBox的主要更新 ...

  7. 痞子衡嵌入式:深扒i.MXRTxxx系列ROM中集成的串行NOR Flash启动SW Reset功能及其应用场合...

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRTxxx系列ROM中集成的串行NOR Flash启动SW Reset功能及其应用场合. 在串行 NOR Flash 热启动过程 ...

  8. PDPS软件虚拟仿真:Lock TCPF功能介绍与使用方法

    目录 概述 使用方法 操作展示 本文已经首发在个人微信公众号:工业机器人仿真与编程(微信号:IndRobSim),欢迎关注! 概述 在使用PDPS软件进行虚拟仿真时,最重要的步骤就是对机器人位置和姿态 ...

  9. oracle 查询unlock,oracle account lock/unlock

    oracle account lock/unlock 2016-02-01 密码错误时候仍然不断的尝试登陆oracle,在登陆10次时会被告知test用户被锁. 1.用dba角色的用户登陆,进行解锁, ...

最新文章

  1. Object类的用法(三)
  2. JS如何捆绑TypeScript声明文件
  3. oracle13c迁移,Oracle数据库迁移
  4. 驰为hi10u盘启动linux,驰为Hi10 Plus二合一平板电脑:双系统更有玩头
  5. [转]Java中Set的深入研究
  6. 前端学习(902):this指向问题
  7. 浅谈Normalize.css
  8. 图解 CSS (2): border - 边框
  9. rsyslog官方文档
  10. Centos7搭建coreseek
  11. Solidity 教程
  12. 软著的代码怎么写?软件著作权提交源代码文件有什么要求?
  13. 安卓电视盒子上 安装 Ubuntu 20.04 并安装 certbot 获取证书
  14. 一卡通管理系统需求分析
  15. 铺铜需要把agnd和dgnd分开_AGNDDGND 分析
  16. html浏览器pc端禁止缩放,如何禁止pc端浏览器缩放
  17. 复杂 Excel 表格导入导出的最简方法
  18. Win10 卸载 Cortana
  19. 设计模式(二):设计原则
  20. Nebula Graph|信息图谱在携程酒店的应用

热门文章

  1. java实现单链表就地逆置,20. 微软面试题:单链表就地逆放
  2. Broadcasts详解
  3. 通常所说的微型计算机主机是指,通常所说的微型主机是指
  4. 浏览器安装公众号编辑器
  5. Google域名解析的游戏?
  6. 智能控制导论 # 模糊控制 - 理论基础:模糊数学 2 模糊关系和模糊推理
  7. Macbook Pro上装Linux的牢骚
  8. 卡牌游戏源代码(原创)(控制台)
  9. 数据库范式(normalization)
  10. 30岁IT人裸辞,悔断肠!