使用RPMB时的过程查询



我正在研究树莓派3B模型中的RPMB。我配置的开发环境如下所示。作为参考,我测试了两个eMMC模块。

  • 目标:树莓派3B存储
  • 存储
    • 由hardkernel制作的eMMC模块
      • eMMC: https://www.hardkernel.com/shop/8gb-emmc-module-xu4-linux/
      • eMMC Reader: https://www.hardkernel.com/shop/emmc-module-reader-board-for-os-upgrade/
    • ugear制作的eMMC模块
      • https://www.uugear.com/product/raspikey-plug-and-play-emmc-module-for-raspberry-pi/
  • 固件:2021 - 05 - 07 - raspios克星- armhf lite.zip

以上配置完成后,进行如下工作:

In ubuntu pc
1. Initialize the partition using fdisk
2. Write firmware image to eMMC.
- unzip -p 2021-05-07-raspios-buster-armhf-lite.zip | sudo dd of=/dev/sdd bs=4M conv=fsync

写成功后,通过fdisk检查的分区配置如下所示。

Command (m for help): p
Disk /dev/sdd: 7.3 GiB, 7818182656 bytes, 15269888 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xb6b2958f
Device     Boot  Start      End  Sectors  Size Id Type
/dev/sdd1         8192   532479   524288  256M  c W95 FAT32 (LBA)
/dev/sdd2       532480 15269887 14737408    7G 83 Linux

之后,我将eMMC模块插入树莓pi3插槽中的sd卡并成功启动。查看引导过程中的日志,可以识别出512KB的mmcblk0rpmb chardev,如下所示。

[    4.853413] mmc0: new high speed MMC card at address 0001
[    4.865921] mmcblk0: mmc0:0001 8GTF4R 7.28 GiB
[    4.876187] mmcblk0boot0: mmc0:0001 8GTF4R partition 1 4.00 MiB
[    4.888825] mmcblk0boot1: mmc0:0001 8GTF4R partition 2 4.00 MiB
[    4.901321] mmcblk0rpmb: mmc0:0001 8GTF4R partition 3 512 KiB, chardev (245:0)
[    4.918023]  mmcblk0: p1 p2
[    4.943312] EXT4-fs (mmcblk0p2): INFO: recovery required on readonly filesystem
[    4.957735] EXT4-fs (mmcblk0p2): write access will be enabled during recovery

在我启动后,当我检查设备时,在lsblk中没有找到它,但是当我搜索/dev目录时,也找到了rpmb dev。

pi@raspberrypi:~ $ lsblk
NAME         MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
mmcblk0      179:0    0  7.3G  0 disk
├─mmcblk0p1  179:1    0  256M  0 part /boot
└─mmcblk0p2  179:2    0    7G  0 part /
mmcblk0boot0 179:32   0    4M  1 disk
mmcblk0boot1 179:64   0    4M  1 disk
pi@raspberrypi:~ $ ls -l /dev/mmcblk0*
brw-rw---- 1 root disk 179,  0 May  7 16:00 /dev/mmcblk0
brw-rw---- 1 root disk 179, 32 May  7 16:00 /dev/mmcblk0boot0
brw-rw---- 1 root disk 179, 64 May  7 16:00 /dev/mmcblk0boot1
brw-rw---- 1 root disk 179,  1 May  7 16:00 /dev/mmcblk0p1
brw-rw---- 1 root disk 179,  2 May  7 16:00 /dev/mmcblk0p2
crw------- 1 root root 245,  0 May  7 16:00 /dev/mmcblk0rpmb

我安装mmc-utils RPMB测试,首先检查extcsd信息。

pi@raspberrypi:~ $ sudo mmc extcsd read /dev/mmcblk0
=============================================
Extended CSD rev 1.8 (MMC 5.1)
=============================================
Card Supported Command sets [S_CMD_SET: 0x01]
HPI Features [HPI_FEATURE: 0x01]: implementation based on CMD13
Background operations support [BKOPS_SUPPORT: 0x01]
Max Packet Read Cmd [MAX_PACKED_READS: 0x3f]
Max Packet Write Cmd [MAX_PACKED_WRITES: 0x3f]
Data TAG support [DATA_TAG_SUPPORT: 0x01]
Data TAG Unit Size [TAG_UNIT_SIZE: 0x02]
Tag Resources Size [TAG_RES_SIZE: 0x00]
Context Management Capabilities [CONTEXT_CAPABILITIES: 0x05]
Large Unit Size [LARGE_UNIT_SIZE_M1: 0x07]
Extended partition attribute support [EXT_SUPPORT: 0x03]
Generic CMD6 Timer [GENERIC_CMD6_TIME: 0x0a]
Power off notification [POWER_OFF_LONG_TIME: 0x3c]
Cache Size [CACHE_SIZE] is 65536 KiB
Background operations status [BKOPS_STATUS: 0x00]
1st Initialisation Time after programmed sector [INI_TIMEOUT_AP: 0x1e]
Power class for 52MHz, DDR at 3.6V [PWR_CL_DDR_52_360: 0x00]
Power class for 52MHz, DDR at 1.95V [PWR_CL_DDR_52_195: 0x00]
Power class for 200MHz at 3.6V [PWR_CL_200_360: 0x00]
Power class for 200MHz, at 1.95V [PWR_CL_200_195: 0x00]
Minimum Performance for 8bit at 52MHz in DDR mode:
[MIN_PERF_DDR_W_8_52: 0x00]
[MIN_PERF_DDR_R_8_52: 0x00]
TRIM Multiplier [TRIM_MULT: 0x02]
Secure Feature support [SEC_FEATURE_SUPPORT: 0x55]
Boot Information [BOOT_INFO: 0x07]
Device supports alternative boot method
Device supports dual data rate during boot
Device supports high speed timing during boot
Boot partition size [BOOT_SIZE_MULTI: 0x20]
Access size [ACC_SIZE: 0x07]
High-capacity erase unit size [HC_ERASE_GRP_SIZE: 0x01]
i.e. 512 KiB
High-capacity erase timeout [ERASE_TIMEOUT_MULT: 0x01]
Reliable write sector count [REL_WR_SEC_C: 0x01]
High-capacity W protect group size [HC_WP_GRP_SIZE: 0x10]
i.e. 8192 KiB
Sleep current (VCC) [S_C_VCC: 0x07]
Sleep current (VCCQ) [S_C_VCCQ: 0x07]
Sleep/awake timeout [S_A_TIMEOUT: 0x11]
Sector Count [SEC_COUNT: 0x00e90000]
Device is block-addressed
Minimum Write Performance for 8bit:
[MIN_PERF_W_8_52: 0x00]
[MIN_PERF_R_8_52: 0x00]
[MIN_PERF_W_8_26_4_52: 0x00]
[MIN_PERF_R_8_26_4_52: 0x00]
Minimum Write Performance for 4bit:
[MIN_PERF_W_4_26: 0x00]
[MIN_PERF_R_4_26: 0x00]
Power classes registers:
[PWR_CL_26_360: 0x00]
[PWR_CL_52_360: 0x00]
[PWR_CL_26_195: 0x00]
[PWR_CL_52_195: 0x00]
Partition switching timing [PARTITION_SWITCH_TIME: 0x02]
Out-of-interrupt busy timing [OUT_OF_INTERRUPT_TIME: 0x0a]
I/O Driver Strength [DRIVER_STRENGTH: 0x1f]
Card Type [CARD_TYPE: 0x57]
HS200 Single Data Rate eMMC @200MHz 1.8VI/O
HS Dual Data Rate eMMC @52MHz 1.8V or 3VI/O
HS eMMC @52MHz - at rated device voltage(s)
HS eMMC @26MHz - at rated device voltage(s)
CSD structure version [CSD_STRUCTURE: 0x02]
Command set [CMD_SET: 0x00]
Command set revision [CMD_SET_REV: 0x00]
Power class [POWER_CLASS: 0x00]
High-speed interface timing [HS_TIMING: 0x01]
Erased memory content [ERASED_MEM_CONT: 0x00]
Boot configuration bytes [PARTITION_CONFIG: 0x48]
Boot Partition 1 enabled
No access to boot partition
Boot config protection [BOOT_CONFIG_PROT: 0x00]
Boot bus Conditions [BOOT_BUS_CONDITIONS: 0x01]
High-density erase group definition [ERASE_GROUP_DEF: 0x01]
Boot write protection status registers [BOOT_WP_STATUS]: 0x00
Boot Area Write protection [BOOT_WP]: 0x00
Power ro locking: possible
Permanent ro locking: possible
ro lock status: not locked
User area write protection register [USER_WP]: 0x00
FW configuration [FW_CONFIG]: 0x00
RPMB Size [RPMB_SIZE_MULT]: 0x04
Write reliability setting register [WR_REL_SET]: 0x1f
user area: the device protects existing data if a power failure occurs during a write operation
partition 1: the device protects existing data if a power failure occurs during a write operation
partition 2: the device protects existing data if a power failure occurs during a write operation
partition 3: the device protects existing data if a power failure occurs during a write operation
partition 4: the device protects existing data if a power failure occurs during a write operation
Write reliability parameter register [WR_REL_PARAM]: 0x14
Device supports the enhanced def. of reliable write
Enable background operations handshake [BKOPS_EN]: 0x00
H/W reset function [RST_N_FUNCTION]: 0x01
HPI management [HPI_MGMT]: 0x01
Partitioning Support [PARTITIONING_SUPPORT]: 0x07
Device support partitioning feature
Device can have enhanced tech.
Max Enhanced Area Size [MAX_ENH_SIZE_MULT]: 0x0001d2
i.e. 3817472 KiB
Partitions attribute [PARTITIONS_ATTRIBUTE]: 0x00
Partitioning Setting [PARTITION_SETTING_COMPLETED]: 0x00
Device partition setting NOT complete
General Purpose Partition Size
[GP_SIZE_MULT_4]: 0x000000
[GP_SIZE_MULT_3]: 0x000000
[GP_SIZE_MULT_2]: 0x000000
[GP_SIZE_MULT_1]: 0x000000
Enhanced User Data Area Size [ENH_SIZE_MULT]: 0x000000
i.e. 0 KiB
Enhanced User Data Start Address [ENH_START_ADDR]: 0x00000000
i.e. 0 bytes offset
Bad Block Management mode [SEC_BAD_BLK_MGMNT]: 0x00
Periodic Wake-up [PERIODIC_WAKEUP]: 0x00
Program CID/CSD in DDR mode support [PROGRAM_CID_CSD_DDR_SUPPORT]: 0x01
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[127]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[126]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[125]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[124]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[123]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[122]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[121]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[120]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[119]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[118]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[117]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[116]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[115]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[114]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[113]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[112]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[111]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[110]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[109]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[108]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[107]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[106]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[105]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[104]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[103]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[102]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[101]]: 0x05
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[100]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[99]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[98]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[97]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[96]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[95]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[94]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[93]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[92]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[91]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[90]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[89]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[88]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[87]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[86]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[85]]: 0x01
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[84]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[83]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[82]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[81]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[80]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[79]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[78]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[77]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[76]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[75]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[74]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[73]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[72]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[71]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[70]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[69]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[68]]: 0xc8
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[67]]: 0xc8
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[66]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[65]]: 0x00
Vendor Specific Fields [VENDOR_SPECIFIC_FIELD[64]]: 0x0f
Native sector size [NATIVE_SECTOR_SIZE]: 0x00
Sector size emulation [USE_NATIVE_SECTOR]: 0x00
Sector size [DATA_SECTOR_SIZE]: 0x00
1st initialization after disabling sector size emulation [INI_TIMEOUT_EMU]: 0x00
Class 6 commands control [CLASS_6_CTRL]: 0x00
Number of addressed group to be Released[DYNCAP_NEEDED]: 0x00
Exception events control [EXCEPTION_EVENTS_CTRL]: 0x0000
Exception events status[EXCEPTION_EVENTS_STATUS]: 0x0000
Extended Partitions Attribute [EXT_PARTITIONS_ATTRIBUTE]: 0x0000
Context configuration [CONTEXT_CONF[51]]: 0x00
Context configuration [CONTEXT_CONF[50]]: 0x00
Context configuration [CONTEXT_CONF[49]]: 0x00
Context configuration [CONTEXT_CONF[48]]: 0x00
Context configuration [CONTEXT_CONF[47]]: 0x00
Context configuration [CONTEXT_CONF[46]]: 0x00
Context configuration [CONTEXT_CONF[45]]: 0x00
Context configuration [CONTEXT_CONF[44]]: 0x00
Context configuration [CONTEXT_CONF[43]]: 0x00
Context configuration [CONTEXT_CONF[42]]: 0x00
Context configuration [CONTEXT_CONF[41]]: 0x00
Context configuration [CONTEXT_CONF[40]]: 0x00
Context configuration [CONTEXT_CONF[39]]: 0x00
Context configuration [CONTEXT_CONF[38]]: 0x00
Context configuration [CONTEXT_CONF[37]]: 0x00
Packed command status [PACKED_COMMAND_STATUS]: 0x00
Packed command failure index [PACKED_FAILURE_INDEX]: 0x00
Power Off Notification [POWER_OFF_NOTIFICATION]: 0x01
Control to turn the Cache ON/OFF [CACHE_CTRL]: 0x01
eMMC Firmware Version: 
eMMC Life Time Estimation A [EXT_CSD_DEVICE_LIFE_TIME_EST_TYP_A]: 0x01
eMMC Life Time Estimation B [EXT_CSD_DEVICE_LIFE_TIME_EST_TYP_B]: 0x01
eMMC Pre EOL information [EXT_CSD_PRE_EOL_INFO]: 0x01
Command Queue Support [CMDQ_SUPPORT]: 0x01
Command Queue Depth [CMDQ_DEPTH]: 16
Command Enabled [CMDQ_MODE_EN]: 0x00

之后,我输入了下面的命令来检查读取计数器,但是出现的问题如下:

pi@raspberrypi:~ $ sudo mmc rpmb read-counter /dev/mmcblk0rpmb
RPMB ioctl failed: Connection timed out

此时的dmesg信息如下。(由于字数限制,中间部分略)

[ 1547.320372] sdhost-bcm2835 3f202000.mmc: Card stuck in wrong state! card_busy_detect status: 0xd00
[ 1547.320398] sdhost_busy_irq: intmask 440, data 00000000
[ 1557.600386] mmc0: timeout waiting for hardware interrupt.
[ 1557.600403] [5c86e95a] FCM> 81791b70 0
[ 1557.600414] [5c86e95a] CMD  d 0
[ 1557.600424] [5c86e95a] REQ> 81791b70 0
[ 1557.600433] [5c86e967] TSK< 81791b70 0
[ 1557.600443] [5c86e96e] TSK> 81791b70 0
[ 1557.600452] [5c86e975] REQ< 81791b70 10801
[ 1557.600463] [5c86e976] CMD< d 10000
[ 1557.600473] [5c86e977] FCM< 81791b70 81791bdc
[ 1557.600482] [5c86e979] RSP  d00 0
[ 1557.600491] [5c86e979] FCM> 81791b70 0
[ 1557.600501] [5c86e97a] CMD  d 0
[ 1557.600510] [5c86e97a] REQ> 81791b70 0
[ 1557.600519] [5c86e987] TSK< 81791b70 0
[ 1557.600529] [5c86e98e] TSK> 81791b70 0
[ 1557.600538] [5c86e996] REQ< 81791b70 10801
[ 1557.600547] [5c86e996] CMD< d 10000
[ 1557.600557] [5c86e997] FCM< 81791b70 81791bdc
[ 1557.600566] [5c86e999] RSP  d00 0
[ 1557.600575] [5c86e999] FCM> 81791b70 0
[ 1557.600584] [5c86e99a] CMD  d 0
[ 1557.600594] [5c86e99a] REQ> 81791b70 0
[ 1557.600604] [5c86e9a7] TSK< 81791b70 0
[ 1557.600613] [5c86e9ae] TSK> 81791b70 0
[ 1557.600622] [5c86e9bd] REQ< 81791b70 10801
[ 1557.600632] [5c86e9be] CMD< d 10000
[ 1557.600641] [5c86e9be] FCM< 81791b70 81791bdc
[ 1557.600650] [5c86e9c1] RSP  d00 0
[ 1557.600660] [5c86e9c1] FCM> 81791b70 0
[ 1557.600669] [5c86e9c1] CMD  d 0
[ 1557.600678] [5c86e9c2] REQ> 81791b70 0
[ 1557.600688] [5c86e9d0] TSK< 81791b70 0
[ 1557.600697] [5c86e9d7] TSK> 81791b70 0
[ 1557.600706] [5c86e9de] REQ< 81791b70 10801
[ 1557.600716] [5c86e9de] CMD< d 10000
[ 1557.600726] [5c86e9df] FCM< 81791b70 81791bdc
[ 1557.600735] [5c86e9e1] RSP  d00 0
[ 1557.600745] [5c86e9e2] FCM> 81791b70 0
[ 1557.600754] [5c86e9e2] CMD  d 0
[ 1557.600763] [5c86e9e2] REQ> 81791b70 0
[ 1557.600772] [5c86e9f0] TSK< 81791b70 0
[ 1557.600782] [5c86e9f7] TSK> 81791b70 0
[ 1557.600791] [5c86ea05] REQ< 81791b70 10801
[ 1557.600801] [5c86ea06] CMD< d 10000
[ 1557.600810] [5c86ea06] FCM< 81791b70 81791bdc
[ 1557.600819] [5c86ea09] RSP  d00 0
[ 1557.600828] [5c86ea09] FCM> 81791b70 0
[ 1557.600837] [5c86ea0a] CMD  d 0
[ 1557.600846] [5c86ea0a] REQ> 81791b70 0
[ 1557.600857] [5c86ea17] TSK< 81791b70 0
[ 1557.600866] [5c86ea1e] TSK> 81791b70 0
[ 1557.600875] [5c86ea25] REQ< 81791b70 10801
[ 1557.600885] [5c86ea26] CMD< d 10000
[ 1557.600894] [5c86ea26] FCM< 81791b70 81791bdc
[ 1557.600903] [5c86ea29] RSP  d00 0
[ 1557.600913] [5c86ea29] FCM> 81791b70 0
[ 1557.600922] [5c86ea29] CMD  d 0
[ 1557.600931] [5c86ea2a] REQ> 81791b70 0
[ 1557.600940] [5c86ea37] TSK< 81791b70 0
[ 1557.600949] [5c86ea3e] TSK> 81791b70 0
[ 1557.600958] [5c86ea4e] REQ< 81791b70 10801
[ 1557.600968] [5c86ea4e] CMD< d 10000
[ 1557.600978] [5c86ea4f] FCM< 81791b70 81791bdc
[ 1557.600987] [5c86ea51] RSP  d00 0
[ 1557.600996] [5c86ea52] FCM> 81791b70 0
[ 1557.601005] [5c86ea52] CMD  d 0
[ 1557.601014] [5c86ea52] REQ> 81791b70 0
[ 1557.601023] [5c86ea5f] TSK< 81791b70 0
[ 1557.601032] [5c86ea67] TSK> 81791b70 0
[ 1557.601042] [5c86ea6e] REQ< 81791b70 10801
[ 1557.601051] [5c86ea6e] CMD< d 10000
[ 1557.601061] [5c86ea6f] FCM< 81791b70 81791bdc
[ 1557.601070] [5c86ea71] RSP  d00 0
[ 1557.601079] [5c86ea72] FCM> 81791b70 0
[ 1557.601088] [5c86ea72] CMD  d 0
[ 1557.601098] [5c86ea72] REQ> 81791b70 0
[ 1557.601107] [5c86ea80] TSK< 81791b70 0
[ 1557.601117] [5c86ea87] TSK> 81791b70 0
[ 1557.601126] [5c86ea95] REQ< 81791b70 10801
[ 1557.601135] [5c86ea96] CMD< d 10000
[ 1557.601145] [5c86ea97] FCM< 81791b70 81791bdc
[ 1557.601154] [5c86ea99] RSP  d00 0
[ 1557.601163] [5c86ea99] FCM> 81791b70 0
[ 1557.601172] [5c86ea9a] CMD  d 0
[ 1557.601181] [5c86ea9a] REQ> 81791b70 0
[ 1557.601191] [5c86eaa7] TSK< 81791b70 0
[ 1557.601200] [5c86eaae] TSK> 81791b70 0
[ 1557.601209] [5c86eab5] REQ< 81791b70 10801
[ 1557.601218] [5c86eab6] CMD< d 10000
[ 1557.601228] [5c86eab7] FCM< 81791b70 81791bdc
[ 1557.601238] [5c86eab9] RSP  d00 0
[ 1557.601247] [5c86eab9] FCM> 81791b70 0
[ 1557.601256] [5c86eaba] CMD  d 0
[ 1557.601265] [5c86eaba] REQ> 81791b70 0
[ 1557.601274] [5c86eac8] TSK< 81791b70 0
[ 1557.601283] [5c86eacf] TSK> 81791b70 0
[ 1557.601293] [5c86eade] REQ< 81791b70 10801
[ 1557.601302] [5c86eade] CMD< d 10000
[ 1557.601311] [5c86eadf] FCM< 81791b70 81791bdc
[ 1557.601320] [5c86eae1] RSP  d00 0
[ 1557.601330] [5c86eae2] FCM> 81791b70 0
[ 1557.601339] [5c86eae2] CMD  d 0
[ 1557.601349] [5c86eae2] REQ> 81791b70 0
[ 1557.601358] [5c86eaf0] TSK< 81791b70 0
[ 1557.601367] [5c86eaf7] TSK> 81791b70 0
[ 1557.601377] [5c86eafe] REQ< 81791b70 10801
[ 1557.601386] [5c86eafe] CMD< d 10000
[ 1557.601395] [5c86eaff] FCM< 81791b70 81791bdc
[ 1557.601404] [5c86eb02] RSP  d00 0
[ 1557.601414] [5c86eb02] FCM> 81791b70 0
[ 1557.601423] [5c86eb02] CMD  d 0
[ 1557.601432] [5c86eb02] REQ> 81791b70 0
[ 1557.601441] [5c86eb10] TSK< 81791b70 0
[ 1557.601450] [5c86eb17] TSK> 81791b70 0
[ 1557.601460] [5c86eb1e] REQ< 81791b70 10801
[ 1557.601469] [5c86eb1e] CMD< d 10000
[ 1557.601479] [5c86eb1f] FCM< 81791b70 81791bdc
[ 1557.601489] [5c86eb22] RSP  d00 0
[ 1557.601498] [5c86eb22] FCM> 81791b70 0
[ 1557.601507] [5c86eb22] CMD  d 0
[ 1557.601516] [5c86eb22] REQ> 81791b70 0
[ 1557.601525] [5c86eb30] TSK< 81791b70 0
[ 1557.601534] [5c86eb37] TSK> 81791b70 0
[ 1557.601543] [5c86eb46] REQ< 81791b70 10801
[ 1557.601553] [5c86eb47] CMD< d 10000
[ 1557.601562] [5c86eb48] FCM< 81791b70 81791bdc
[ 1557.601571] [5c86eb4a] RSP  d00 0
[ 1557.601580] [5c86eb4a] FCM> 81791b70 0
[ 1557.601589] [5c86eb4b] CMD  d 0
[ 1557.601600] [5c86eb4b] REQ> 81791b70 0
[ 1557.601609] [5c86eb58] TSK< 81791b70 0
[ 1557.601618] [5c86eb5f] TSK> 81791b70 0
[ 1557.601627] [5c86eb66] REQ< 81791b70 10801
[ 1557.601637] [5c86eb67] CMD< d 10000
[ 1557.601646] [5c86eb67] FCM< 81791b70 81791bdc
[ 1557.601655] [5c86eb6a] RSP  d00 0
[ 1557.601665] [5c86eb6a] FCM> 81791b70 0
[ 1557.601674] [5c86eb6b] CMD  d 0
[ 1557.601683] [5c86eb6b] REQ> 81791b70 0
[ 1557.601692] [5c86eb78] TSK< 81791b70 0
[ 1557.601701] [5c86eb7f] TSK> 81791b70 0
[ 1557.601710] [5c86eb8e] REQ< 81791b70 10801
[ 1557.601720] [5c86eb8e] CMD< d 10000
[ 1557.601730] [5c86eb8f] FCM< 81791b70 81791bdc
[ 1557.601739] [5c86eb91] RSP  d00 0
[ 1557.601748] [5c86eb92] FCM> 81791b70 0
[ 1557.601757] [5c86eb92] CMD  d 0
[ 1557.601766] [5c86eb92] REQ> 81791b70 0
[ 1557.601775] [5c86eba0] TSK< 81791b70 0
[ 1557.601785] [5c86eba7] TSK> 81791b70 0
[ 1557.601794] [5c86ebae] REQ< 81791b70 10801
[ 1557.601803] [5c86ebae] CMD< d 10000
[ 1557.601813] [5c86ebaf] FCM< 81791b70 81791bdc
[ 1557.601822] [5c86ebb1] RSP  d00 0
[ 1557.601831] [5c86ebb2] FCM> 81791b70 0
[ 1557.601840] [5c86ebb2] CMD  d 0
[ 1557.601850] [5c86ebb2] REQ> 81791b70 0
[ 1557.601859] [5c86ebc0] TSK< 81791b70 0
[ 1557.601868] [5c86ebc8] TSK> 81791b70 0
[ 1557.601877] [5c86ebd7] REQ< 81791b70 10801
[ 1557.601887] [5c86ebd7] CMD< d 10000
[ 1557.601896] [5c86ebd8] FCM< 81791b70 81791bdc
[ 1557.601905] [5c86ebdb] RSP  d00 0
[ 1557.601914] [5c86ebdb] FCM> 81791b70 0
[ 1557.601923] [5c86ebdb] CMD  d 0
[ 1557.601932] [5c86ebdc] REQ> 81791b70 0
[ 1557.601942] [5c86ebe9] TSK< 81791b70 0
[ 1557.601951] [5c86ebf0] TSK> 81791b70 0
[ 1557.601960] [5c86ebf8] REQ< 81791b70 10801
[ 1557.601969] [5c86ebf8] CMD< d 10000
[ 1557.601979] [5c86ebf9] FCM< 81791b70 81791bdc
[ 1557.601988] [5c86ebfb] RSP  d00 0
[ 1557.601998] [5c86ebfb] FCM> 81791b70 0
[ 1557.602007] [5c86ebfc] CMD  d 0
[ 1557.602016] [5c86ebfc] REQ> 81791b70 0
[ 1557.602025] [5c86ec09] TSK< 81791b70 0
[ 1557.602034] [5c86ec11] TSK> 81791b70 0
[ 1557.602044] [5c86ec1f] REQ< 81791b70 10801
[ 1557.602053] [5c86ec20] CMD< d 10000
[ 1557.602062] [5c86ec20] FCM< 81791b70 81791bdc
[ 1557.602071] [5c86ec23] RSP  d00 0
[ 1557.602081] [5c86ec23] FCM> 81791b70 0
[ 1557.602090] [5c86ec23] CMD  d 0
[ 1557.602100] [5c86ec24] REQ> 81791b70 0
[ 1557.602109] [5c86ec31] TSK< 81791b70 0
[ 1557.602118] [5c86ec38] TSK> 81791b70 0
[ 1557.602127] [5c86ec40] REQ< 81791b70 10801
[ 1557.602136] [5c86ec40] CMD< d 10000
[ 1557.602146] [5c86ec41] FCM< 81791b70 81791bdc
[ 1557.602155] [5c86ec43] RSP  d00 0
[ 1557.602164] [5c86ec44] FCM> 81791b70 0
[ 1557.602173] [5c86ec44] CMD  d 0
[ 1557.602182] [5c86ec44] REQ> 81791b70 0
[ 1557.602191] [5c86ec52] TSK< 81791b70 0
[ 1557.602201] [5c86ec59] TSK> 81791b70 0
[ 1557.602210] [5c86ec68] REQ< 81791b70 10801
[ 1557.602219] [5c86ec68] CMD< d 10000
[ 1557.602230] [5c86ec69] FCM< 81791b70 81791bdc
[ 1557.602239] [5c86ec6b] RSP  d00 0
[ 1557.602248] [5c86ec6c] FCM> 81791b70 0
[ 1557.602257] [5c86ec6c] CMD  d 0
[ 1557.602266] [5c86ec6c] REQ> 81791b70 0
[ 1557.602276] [5c86ec79] TSK< 81791b70 0
[ 1557.602285] [5c86ec80] TSK> 81791b70 0
[ 1557.602294] [5c86ec88] REQ< 81791b70 10801
[ 1557.602304] [5c86ec88] CMD< d 10000
[ 1557.602313] [5c86ec89] FCM< 81791b70 81791bdc
[ 1557.602322] [5c86ec8b] RSP  d00 0
[ 1557.602332] [5c86ec8b] FCM> 81791b70 0
[ 1557.602341] [5c86ec8c] CMD  d 0
[ 1557.602351] [5c86ec8c] REQ> 81791b70 0
[ 1557.602360] [5c86ec9a] TSK< 81791b70 0
[ 1557.602369] [5c86eca1] TSK> 81791b70 0
[ 1557.602379] [5c86eca8] REQ< 81791b70 10801
[ 1557.602388] [5c86eca8] CMD< d 10000
[ 1557.602397] [5c86eca9] FCM< 81791b70 81791bdc
[ 1557.602406] [5c86ecab] RSP  d00 0
[ 1557.602415] [5c86ecac] FCM> 81791b70 0
[ 1557.602424] [5c86ecac] CMD  d 0
[ 1557.602433] [5c86ecac] REQ> 81791b70 0
[ 1557.602442] [5c86ecba] TSK< 81791b70 0
[ 1557.602452] [5c86ecc1] TSK> 81791b70 0
[ 1557.602461] [5c86ecd0] REQ< 81791b70 10801
[ 1557.602470] [5c86ecd0] CMD< d 10000
[ 1557.602480] [5c86ecd1] FCM< 81791b70 81791bdc
[ 1557.602489] [5c86ecd3] RSP  d00 0
[ 1557.602499] [5c86ecd4] FCM> 81791b70 0
[ 1557.602508] [5c86ecd4] CMD  d 0
[ 1557.602517] [5c86ecd4] REQ> 81791b70 0
[ 1557.602526] [5c86ece2] TSK< 81791b70 0
[ 1557.602536] [5c86ece9] TSK> 81791b70 0
[ 1557.602545] [5c86ecf0] REQ< 81791b70 10801
[ 1557.602554] [5c86ecf0] CMD< d 10000
[ 1557.602563] [5c86ecf1] FCM< 81791b70 81791bdc
[ 1557.602572] [5c86ecf4] RSP  d00 0
[ 1557.602581] [5c86ecf4] FCM> 81791b70 0
[ 1557.602590] [5c86ecf4] CMD  d 0
[ 1557.602600] [5c86ecf4] REQ> 81791b70 0
[ 1557.602610] [5c86ed02] TSK< 81791b70 0
[ 1557.602619] [5c86ed09] TSK> 81791b70 0
[ 1557.602628] [5c86ed20] REQ< 81791b70 10801
[ 1557.602637] [5c86ed21] CMD< d 10000
[ 1557.602647] [5c86ed21] FCM< 81791b70 81791bdc
[ 1557.602656] [5c86ed24] RSP  d00 0
[ 1557.602665] [5c86ed24] FCM> 81791b70 0
[ 1557.602674] [5c86ed25] CMD  d 0
[ 1557.602685] [5c86ed25] REQ> 81791b70 0
[ 1557.602694] [5c86ed32] TSK< 81791b70 0
[ 1557.602703] [5c86ed3a] TSK> 81791b70 0
[ 1557.602712] [5c86ed59] REQ< 81791c80 10801
[ 1557.602721] [5c86ed59] CMD< 6 3b34801
[ 1557.602731] [5c86ed5a] CMD  6 0
[ 1557.602741] [5c86ed5a] REQ> 81791c80 0
[ 1557.602750] [1c86ed63] IRQ< 440 0
[ 1557.602759] [1c86ed64] IRQB 81791d04 440
[ 1557.602768] [1c86ed6c] IRQ> 40 0
[ 1557.602777] [5d23c9ab] TIM< 0 0
[ 1557.602793] mmc0:>cmd op 6 arg 0x3b34801 flags 0x49d - resp 00000000 00000000 00000000 00000000, err -110
[ 1557.602801] mmc0: =========== REGISTER DUMP ===========
[ 1557.602809] mmc0: SDCMD  0x00004806
[ 1557.602816] mmc0: SDARG  0x03b34801
[ 1557.602824] mmc0: SDTOUT 0x017d7840
[ 1557.602832] mmc0: SDCDIV 0x00000006
[ 1557.602839] mmc0: SDRSP0 0xffffffff
[ 1557.602846] mmc0: SDRSP1 0x0000ff7f
[ 1557.602855] mmc0: SDRSP2 0xc3400003
[ 1557.602862] mmc0: SDRSP3 0xffffffff
[ 1557.602870] mmc0: SDHSTS 0x00000040
[ 1557.602877] mmc0: SDVDD  0x00000001
[ 1557.602884] mmc0: SDEDM  0x00010801
[ 1557.602892] mmc0: SDHCFG 0x0000040e
[ 1557.602899] mmc0: SDHBCT 0x00000200
[ 1557.602906] mmc0: SDHBLC 0x00000001
[ 1557.602913] mmc0: ===========================================
[ 1557.604758] sdhost_busy_irq: intmask 440, data 00000000
[ 1567.840437] mmc0: timeout waiting for hardware interrupt.

我知道RPMB运行在trustzone区域。我在分析选项。通过检查optee中与rpmb相关的代码,我了解到即使没有将HMAC键注入eMMC中,也应该执行读取写入计数器值。(HMAC键是一次性可编程的,所以我小心翼翼地接近它。)

作为参考,目前在raspbian中使用的内核版本如下。

pi@raspberrypi:~ $ uname -a
Linux raspberrypi 5.10.63-v7+ #1457 SMP Tue Sep 28 11:25:31 BST 2021 armv7l GNU/Linux

除以上工作外,我没有做任何修改或补充。我购买的所有eMMC模块(hardkernel、uugear)都遇到了同样的问题。如果有人知道如何解决这个问题,请帮助我。

这很可能是因为该区域尚未被使用-密钥尚未写入。尝试在使用'mmc rpmb write-key'命令设置键后读取计数器(是的,这是一次性操作)。

最新更新