UFS 11 - UFS RPMB分区功能验证

  • 1 ufs-utils下载和编译
    • 1.1 ufs-utils开源代码下载
    • 1.2 编译
  • 2 ufs-utils工具使用
    • 2.1 ufs-utils --help
    • 2.2 ufs-utils rpmb --help
    • 2.3 UFS RPMB lun验证

验证UFS的RPMB分区的功能可以借助于ufs-utils去验证,ufs-utils也可以去验证UFS其他lun的功能。

UFS 1-UFS架构简介1
UFS 2 -UFS架构简介2
UFS 3 - UFS RPMB
UFS 4 - UFS Boot
UFS 5 - UFS UIC Layer: MIPI M-PHY
UFS 6 - UAP – SCSI Commands(1)
UFS 7 - UAP – SCSI Commands(2)
UFS 8 - UAP – SCSI Commands(3)
UFS 9 - UAP – SCSI Commands(4)
UFS 10 - UAP – SCSI Commands(5)

1 ufs-utils下载和编译

1.1 ufs-utils开源代码下载

ufs-utils的github库链接:https://github.com/westerndigitalcorporation/ufs-utils

可以通过git clone git@github.com:westerndigitalcorporation/ufs-utils.git下载该代码

1.2 编译

需要在linux环境下去编译该开源工具

Set CROSS_COMPILE variable(e.g.):

export CROSS_COMPILE=/XXX/aarch64-linux-gnu-

如果本地没有安装编译工具,则需要安装aarch64-linux-gnu-gcc
在ubuntu上使用sudo apt-get install aarch64-linux-gnu-gcc安装一下即可,交叉编译工具可以指定为:export CROSS_COMPILE=/usr/bin/aarch64-linux-gnu-

Build:

"make"

Clean:

"make clean"

2 ufs-utils工具使用

2.1 ufs-utils --help

  • 显示帮助信息:ufs-utils help|–help|-h
  • 显示版本信息:ufs-utils -v
  • 显示特定命令的详细帮助信息:ufs-utils <desc | attr | fl | err_hist | uic | ffu | vendor | rpmb | hmr | spec_version | list_bsg> --help|-h
    注意:请注意,<desc | attr | fl | err_hist | uic | ffu | vendor | rpmb | hmr | spec_version | list_bsg> 是可替换的命令,您可以在其中选择一个来查看其详细帮助信息。
# ./ufs-utils --helpUsage:ufs-utils help|--help|-hShow the help.ufs-utils -vShow the version.ufs-utils <desc | attr | fl | err_hist | uic | ffu | vendor | rpmb | hmr | spec_version | list_bsg> --help|-hShow detailed help for a command
#

2.2 ufs-utils rpmb --help

# ./ufs-utils rpmb --helpRPMB command usage:ufs-utils rpmb [-t] <rpmb cmd idn> [-p] <path to device>??-k <path to device> -l <lun> -d <output/input file.-t       RPMB cmd type idn0:      Key provision1:      Read Write counter2:      Read RPMB data3:      Write RPMB data4:      Secure Write Protect Configuration Block Write5:      Secure Write Protect Configuration Block Read-s       RPMB start address (default value is 0)-n       number of RPMB read/write blocks (default value is 1)-p       device path (RPMB LUN)-k       path to RPMB key, the key path must pass to the tool in case of writing to RPMB,in case of reading from RPMB ,the key may pass, in case we want to validate the MACin case we want to validate the hash value-l       lun number(byte) using as parameter for Secure Write Config Read-w       path to data file-m       RPMB region.-g       sg struct ver - 0: SG_IO_VER4 (default), 1: SG_IO_VER3Example - Read 16MB of data from RPMB LUN started from address 0 to output fileufs-utils rpmb -t 2 -p /dev/0:0:0:49476 -s 0 -n 65536 -w output_fileExample - Write RPMB keyufs-utils rpmb -t 0 -p /dev/0:0:0:49476 -k key_fileExample - Write RPMB key to region 2ufs-utils rpmb -t 0 -m 2 -p /dev/0:0:0:49476 -k key_fileExample - Write Secure Write Config blockThe input file is Secure Write Config block filled according to the specufs-utils rpmb -t 4 -p /dev/0:0:0:49476  -w input_fileExample - Read Secure Write Config blockAfter the command successfully finished , the output file will containsSecure Write Config block of lun 1ufs-utils rpmb -t 5 -p /dev/0:0:0:49476  -l 1 -d output_file
#

对应命令的解释如下所示:

ufs-utils rpmb [-t] <rpmb cmd idn> [-p] <path to device>??-k <path to device> -l <lun> -d <output/input file.-t       RPMB cmd type idn0:      密钥配置 (Key provision)1:      读写计数器 (Read Write counter)2:      读取 RPMB 数据 (Read RPMB data)3:      写入 RPMB 数据 (Write RPMB data)4:      安全写保护配置块写入 (Secure Write Protect Configuration Block Write)5:      安全写保护配置块读取 (Secure Write Protect Configuration Block Read)-s       RPMB 起始地址 (默认值为 0)-n       RPMB 读/写的块数 (默认值为 1)-p       设备路径 (RPMB LUN)-k       RPMB 密钥文件路径,在写入 RPMB 时必须传递密钥路径,在从 RPMB 读取时可以选择性传递密钥路径,以验证 MAC 或哈希值。-l       用作 Secure Write Config 读取参数的 LUN 号 (以字节为单位)-w       数据文件路径-m       RPMB 区域。-g       sg 结构版本 - 0: SG_IO_VER4 (默认值), 1: SG_IO_VER3示例 - 从 RPMB LUN 以起始地址 0 读取 16MB 数据到输出文件:ufs-utils rpmb -t 2 -p /dev/0:0:0:49476 -s 0 -n 65536 -w output_file示例 - 写入 RPMB 密钥:ufs-utils rpmb -t 0 -p /dev/0:0:0:49476 -k key_file示例 - 将 RPMB 密钥写入区域 2:ufs-utils rpmb -t 0 -m 2 -p /dev/0:0:0:49476 -k key_file示例 - 写入 Secure Write Config 块:输入文件是根据规范填充的 Secure Write Config 块ufs-utils rpmb -t 4 -p /dev/0:0:0:49476 -w input_file示例 - 读取 Secure Write Config 块:命令成功完成后,输出文件将包含 LUN 1 的 Secure Write Config 块ufs-utils rpmb -t 5 -p /dev/0:0:0:49476 -l 1 -d output_file

2.3 UFS RPMB lun验证

  • key可以通过openssh去生成,也可以自己随意写一个特地的32位字符
  • input是包含要写入RPMB数据的文件
  • output是存放从RPMB读出数据的文件。
  • 比对Input和output文件内容在linux上可以使用meld去比对。
# ./ufs-utils rpmb -t 0 -m 0 -p /dev/bsg/0:0:0:49476 -k key
RPMB key is programmed
# ./ufs-utils rpmb -t 2 -p /dev/bsg/0:0:0:49476 -s 0 -n 16 -w output -m 0 -k key
Finish to read RPMB data
# ./ufs-utils rpmb -t 3 -p /dev/bsg/0:0:0:49476 -s 0 -n 16 -w input -m 0 -k key
Finish to write RPMB data
# ./ufs-utils rpmb -t 2 -p /dev/bsg/0:0:0:49476 -s 0 -n 16 -w output -m 0 -k key
Finish to read RPMB data
# ./ufs-utils --help

UFS 11 - UFS RPMB分区功能验证相关推荐

  1. UFS 3 - UFS RPMB

    UFS 1-UFS RPMB 1 RPMB介绍 2 RPMB Well Known Logical Unit Description 3 Requirements 3.1 RPMB Resources ...

  2. android 11鼠标右键返回功能(已验证)

    android 11鼠标右键返回功能 android 11 鼠标右键返回功能的修改位置和android10,android9不一致,修改如下. 基于RK3568 官方SDK验证. frameworks ...

  3. UFS 5 - UFS UIC Layer: MIPI M-PHY

    UFS 5 - UFS UIC Layer: MIPI M-PHY 1 Termination 2 Drive Levels 3 PHY State machine 4 HS Burst 4.1 HS ...

  4. mf怎么使mysql信息分区_细聊MySQL的分区功能

    此篇主要介绍下MySQL的分区功能.我们分别从分区的概念.分区对于MySQL应用的优点.分区的类别及设置来和大家一起探讨下MySQL的分区. 什么是分区? MySQL在未启用分区功能时,数据库的单个表 ...

  5. mysql分区功能详细介绍,以及实例

    转载:http://blog.csdn.net/yongchao940/article/details/55266603 一,什么是数据库分区 前段时间写过一篇关于mysql分表的的文章,下面来说一下 ...

  6. MTK 驱动(62)---eMMC RPMB分区介绍

    eMMC RPMB分区介绍 Partitions Overview eMMC标准中,将内部的 Flash Memory 划分为 4 类区域,最多可以支持 8 个硬件分区,如下图所示: 一般情况下,Bo ...

  7. Oracle11新特性:分区功能增强-Oracle新增复合分区 (转载)

    Oracle11g在分区方面做了很大的提高,不但新增了4种复合分区类型,还增加了虚拟列分区.系统分区.INTERVAL分区等功能. 9i开始,Oracle就包括了2种复合分区,RANGE-HASH和R ...

  8. MySQL数据库表分区功能详解

    1.什么是表分区? mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下面(可以通过my.cnf中的datadir来查看),一张表主要对应着三个文件,一个是frm存放表 ...

  9. sql server 分区_SQL Server:锁定设置以用于增强分区功能

    sql server 分区 When talking about performance and scalability inside SQL Server, I don't see anyone m ...

最新文章

  1. scala学习笔记-过程、lazy值和异常(6)
  2. DNS反射放大攻击分析——DNS反射放大攻击主要是利用DNS回复包比请求包大的特点,放大流量,伪造请求包的源IP地址为受害者IP,将应答包的流量引入受害的服务器...
  3. 第三次作业——(涂江凤、邓洪虹)
  4. 区块链组织-超级账本(Hyperledger)的简介
  5. JS报错:require is not defined
  6. Windows进程与线程学习笔记(五)—— 模拟线程切换
  7. LaTeX——双栏论文插入图片
  8. 这7个web前端开发写代码软件,你过用几个?
  9. 介质天线的设计原理_以水为媒介的介质天线的制作方法
  10. 教你七招记单词快又准
  11. Linux修改文件编码格式的三种方式
  12. 电子商务和国际贸易创新
  13. 2021年6月四六级成绩查询时间!
  14. [PHP]md5加密
  15. dbind-WARNING **: Error retrieving accessibility bus address
  16. Java+Jsp+MySQL高校选课系统设计与实现(附源码下载地址)
  17. 解读 2022 诺贝尔生理学或医学奖 | MedChemExpress
  18. 连续两次入围Gartner魔力象限的Quick BI到底有何魔力?
  19. render createElement JSX
  20. 如何深入理解时间序列分析中的平稳性?

热门文章

  1. 微信公众号缓存的问题
  2. 最新!2022软科世界大学学术排名发布:中国内地163所大学上榜!
  3. 客户端接收WIFI发送的数据
  4. Python之pip download 命令用法-下载指定平台和python版本的依赖包
  5. android拦截请求数据库,拦截所有App的网络请求并将需要的数据上传到属于你自己的服务器...
  6. sqlite表更新添加字段——sqlite3
  7. Realsense T265双目+IMU传感器追踪相机的环境配置指南(Ubuntu+Windows)
  8. 无名之辈-视觉脚本编译器开发
  9. Linux远程工具日志记录功能
  10. Algebra:Chapter 0 - 等价关系,划分,商