doc: misc and BootControl

for/win
cfig 4 years ago
parent 5f9f17601d
commit 2665fd0098
No known key found for this signature in database
GPG Key ID: B104C307F0FDABB7

@ -0,0 +1,63 @@
@startuml
package services {
class android_hardware_boot_1_1_service {
*cc_binary
}
class android_hardware_boot_1_0_service {
*cc_binary
}
}
package impls {
class android_hardware_boot_1_0_impl {
*cc_library
}
class android_hardware_boot_1_1_impl {
*cc_library
}
}
package hidl_interface {
class android_hardware_boot_1_0 {
*hidl_interface
}
class android_hardware_boot_1_1 {
*hidl_interface
}
}
android_hardware_boot_1_0_impl --> android_hardware_boot_1_0
android_hardware_boot_1_0_service --> android_hardware_boot_1_0
android_hardware_boot_1_1_impl --> android_hardware_boot_1_0
android_hardware_boot_1_1_impl --> android_hardware_boot_1_1
android_hardware_boot_1_1_impl --> libboot_control
android_hardware_boot_1_1_impl ..> libboot_control_defaults
android_hardware_boot_1_1_service --> android_hardware_boot_1_0
android_hardware_boot_1_1_service --> android_hardware_boot_1_1
class libboot_control_defaults {
*cc_defaults
}
libboot_control_defaults --> android_hardware_boot_1_1
libboot_control_defaults --> libbootloader_message_vendor
class libboot_control {
*cc_library_static
}
libboot_control ..> libboot_control_defaults
class bootctrl_default {
*cc_library
}
bootctrl_default --> libboot_control
bootctrl_default ..> libboot_control_defaults
@enduml

@ -1,20 +1,94 @@
# /misc partition layout
| - | - | - | size | description |
| :---- | :------ | :---- | :---- | :---- |
| bootloader_message_ab | | | 4096 | |
| | bootloader_message | | 2048 | |
| | |command | 32 |updated by linux/bootloader |
| | |status | 32 |deprecated |
| | |recovery |768 |talking channel between normal/recovery modes |
| | |stage | 32 |format "#/#", eg, "1/3" |
| | |reserved | 1184| |
| |slot_suffix | | 32| |
| |update_channel | |128 | |
| |reserved | | 1888| |
| | | | | |
| vendor bootloader msg | | | 12 KB | offset 4kB |
| wipe_package info | | | 48K | offset 16KB, Used by uncrypt and recovery to store wipe_package for A/B devices |
|- |- |- |- |- |
| | | | | |
| - | - | - | Offset | Size | description |
| :---- | :------ | :---- | :---- | :---- | ----- |
| Legacy | bootloader_message | | 0 | (2K) | |
| | |command | | 32 |updated by linux/bootloader |
| | |status | | 32 |deprecated |
| | |recovery | |768 |talking channel between normal/recovery modes |
| | |stage | | 32 |format "#/#", eg, "1/3" |
| | |reserved | | 1184| |
| - | - |- | - | - | - |
| Vendor Area | vendor bootloader msg | N/A | 2K | 2K | Vendor Area |
| | vendor bootloader msg | N/A | 4K | 12K | pure Vendor area |
| - | - | - | - | - | - |
| Wipe | wipe_package info | | 16K | 16K | offset 16KB, Used by uncrypt and recovery to store wipe_package for A/B devices |
| - | - | - | - | - | - |
| System | system_space -> 1<br>misc_virtual_ab_message | | | (64) | |
| | | version | | 1 | |
| | | magic | | 4 | |
| | | merge_status | | 1 | |
| | | source_slot | | 1 | |
| | | reserved | | 57 | |
| | | | | | |
| | | | | | |
### vendor area implementation example from Google:
#### bootctrl.default.so (link libboot_control.a)貌似没人用
使用legacy_boot_control.cpp, 把libboot_control.a的实现的类android::bootable::BootControl包装进去
### android.hardware.boot@1.1-impl
使用BootControl.cpp
```
android::hardware::boot::V1_1::implementation::BootControl
```
直接使用"android::bootable::BootControl"的实现
#### libboot_control.a
code location:
```hardware/interfaces/boot/1.1/default/boot_control```
https://android.googlesource.com/platform/hardware/interfaces/+/refs/heads/master/boot/1.1/default/boot_control/
| - | - | - | Offset | Size | description |
| :---- | :------ | :---- | :---- | :---- | ----- |
| Vendor Area | bootloader_message_ab | | 2K | (2K) | Vendor Area |
| | | slot_suffix | | 32| |
| | | update_channel | |128 | |
| | | reserved | | 1888| |
### 32 BYTES "slot_suffix" part details:
| - | - | - | Offset | Size | description |
| :---- | :------ | :---- | :---- | :---- | ----- |
| | bootloader_control | | | (32) | |
| | | slot_suffix | | 4 | |
| | | magic | | 4 | |
| | | version | | 1 | |
| | | nb_slot | | 3bits | number slots |
| | | recovery_tries_remaining | | 3bits | |
| | | merge_status | | 3bits | |
| | | reserved0 | | 1 | |
| | | slot_info | | 8 | slot_metadata * 4 |
| | | reverved1 | | 8 | |
| | | crc32_le | | 4 | |
| | | | | | |
| | slot_metadata | | | (2) | |
| | | priority | | 4bits | |
| | | tries_remaining | | 3bits | |
| | | successful_boot | | 1bit | |
| | | verity_corrupted | | 1bit | |
| | | reserved | | 7bits | |
| | | | | | |

Loading…
Cancel
Save