From b016e4ba1bcfd9fd1ab6a32ff119ad3e75c2a9af Mon Sep 17 00:00:00 2001 From: chengjinsong2 Date: Mon, 26 Dec 2022 17:18:25 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0deviceInfo=E7=9A=84=E9=80=82?= =?UTF-8?q?=E9=85=8D=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: chengjinsong2 --- .../subsystems/subsys-boot-init-deviceInfo.md | 158 ++++++++++++++++++ 1 file changed, 158 insertions(+) create mode 100644 zh-cn/device-dev/subsystems/subsys-boot-init-deviceInfo.md diff --git a/zh-cn/device-dev/subsystems/subsys-boot-init-deviceInfo.md b/zh-cn/device-dev/subsystems/subsys-boot-init-deviceInfo.md new file mode 100644 index 0000000000..8fbaac350e --- /dev/null +++ b/zh-cn/device-dev/subsystems/subsys-boot-init-deviceInfo.md @@ -0,0 +1,158 @@ +# DeviceInfo适配说明 + +## 启动子系统设备信息说明 + +| 系统参数 | 接口名 | 描述 | +|----------|------- |------| +| const.product.devicetype | const char\* GetDeviceType(void) | 返回当前设备类型 | +| const.product.manufacturer | const char\* GetManufacture(void) | 返回当前设备生产厂家信息 | +| const.product.brand | const char\* GetBrand(void) | 返回当前设备品牌信息 | +| const.product.name | const char\* GetMarketName(void) | 返回当前设备传播名 | +| const.build.product | const char\* GetProductSeries(void) | 返回当前设备产品系列名 | +| const.product.model | const char\* GetProductModel(void) | 返回当前设备认证型号 | +| const.software.model | const char\* GetSoftwareModel(void) | 返回当前设备内部软件子型号 | +| const.product.hardwareversion | const char\* GetHardwareModel(void) | 返回当前设备硬件版本号 | +| const.product.hardwareprofile | const char\* GetHardwareProfile(void) | 返回当前设备硬件profile | +| ohos.boot.sn | const char\* GetSerial(void) | 返回当前设备序列号(SN号)| +| const.product.software.version | const char\* GetDisplayVersion(void) | 返回当前设备用户可见的软件版本号 | +| const.product.bootloader.version | const char\* GetBootloaderVersion(void) | 返回当前设备Bootloader版本号 | +| const.product.udid | int GetDevUdid(char \*udid, int size) | 获取设备udid(先通过参数获取,获取失败通过计算获取) | +| | const char *AclGetSerial(void); | 返回当前设备序列号(SN号)(带访问权限检查) | +| | int AclGetDevUdid(char *udid, int size); | 获取设备udid(带访问权限检查) | + +## 设备信息来源 + +### OHOS 固定值参数的适配 + +- OHOS 固定值参数: + + ``` + const.ohos.version.security_patch + const.ohos.releasetype + const.ohos.apiversion + const.ohos.fullname + ``` + +- 适配说明: + + OHOS 固定值参数由OHOS系统填充,厂商不能也不需适配,目前这部分参数主要定义在/base/startup/init/services/etc/param/ohos_const/ohos.para文件中。 + +### 厂商固定值参数的适配: + +- 厂商固定值参数: + + ``` + const.product.devicetype + const.product.manufacturer + const.product.brand + const.product.name + const.build.product + const.product.model + const.software.model + const.product.hardwareversion + const.product.hardwareprofile + const.product.software.version + const.product.bootloader.version + const.build.characteristics + ... ... + + ``` + + +- 适配说明: + + 由各产品根据自身情况在vendor目录下适配。 + + (1)L2以RK3568为例,在/vendor/hihope/rk3568/etc/para/hardware_rk3568.para中适配,并安装到指定目录。 + + ``` + ohos_prebuilt_etc("para_for_chip_prod") { + source = "./para/hardware_rk3568.para" + install_images = [ chip_prod_base_dir ] + relative_install_dir = "para" + part_name = "product_rk3568" + } + ``` + + (2)L0与L1 在产品对应的 hals/utils/sys_param/vendor.para文件中配置。例如: + + ``` + const.product.manufacturer=Talkweb + + const.product.brand=Talkweb + + const.product.name=Niobe + + const.build.product=Niobe + + const.product.model=Niobe407 + + const.software.model="2.0.0" + + const.product.hardwareversion="1.0.0" + + const.product.hardwareprofile="RAM:192K,ROM:1M,ETH:true" + ... ... + ``` + +### 厂商动态参数的适配 + +- 厂商动态值参数,目前有三种获取形式:cmdline 读取,编译宏定义,在BUILD.gn中定义。 + + 1、cmdline 中读取的值有:ohos.boot.hardware, ohos.boot.bootslots, ohos.boot.sn等,其中ohos.boot.sn的获取略有不同,具体如下: + + (1)L2 Serial从参数ohos.boot.sn读取,ohos.boot.sn 参数值的获取方式:首先从cmdline (由uboot生成)获取,如果获取到的是sn值则直接读取,若获取的是文件路径,则从文件中读取;当获取不到时从默认的Sn文件读取,默认文件为:/sys/block/mmcblk0/device/cid;/proc/bootdevice/cid。 + + (2)L0 和 L1的 Serial各产品在实现过程中可能有自己特殊的算法,因此我们支持在hals/utils/sys_param目录下hal_sys_param.c文件中通过HalGetSerial()接口自定算法来获取Serial。 + + 2、编译宏定义的形式获取参数,目前主要在L0 和 L1中用到,例如: + + ``` + defines = [ + "INCREMENTAL_VERSION=\"${ohos_version}\"", + "BUILD_TYPE=\"${ohos_build_type}\"", + "BUILD_USER=\"${ohos_build_user}\"", + "BUILD_TIME=\"${ohos_build_time}\"", + "BUILD_HOST=\"${ohos_build_host}\"", + "BUILD_ROOTHASH=\"${ohos_build_roothash}\"", + ] + ``` + + 3、在BUILD.gn中定义,可参考文件/base/startup/init/services/etc/BUILD.gn,例如: + + ``` + if (target_cpu == "arm64") { + extra_paras += [ "const.product.cpu.abilist=arm64-v8a" ] + } + if (build_variant == "user") { + extra_paras += [ + "const.secure=1", + "const.debuggable=0", + ] + } else if (build_variant == "root") { + extra_paras += [ + "const.secure=0", + "const.debuggable=1", + ] + } + if (device_type != "default") { + extra_paras += [ + "const.product.devicetype=${device_type}", + "const.build.characteristics=${device_type}", + ] + } + module_install_dir = "etc/param" + } + ``` +#### 特别说明: + + (1) L1的产品需要在hals/utils/sys_param/BUILD.gn中添加vendor.para的编译,具体如下: + + ``` + copy("vendor.para") { + sources = [ "./vendor.para" ] + outputs = [ "$root_out_dir/vendor/etc/param/vendor.para" ] + } + ``` + + (2) L0的由于没有文件系统,在编译时会把hal_sys_param.c和vendor.para文件转化为头文件,编译时直接编译到系统中。 \ No newline at end of file -- GitLab