1e41f4b71Sopenharmony_ci# DeviceInfo适配说明 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ci## 启动子系统设备信息说明 4e41f4b71Sopenharmony_ci 5e41f4b71Sopenharmony_ci| 系统参数 | 接口名 | 描述 | 6e41f4b71Sopenharmony_ci|----------|------- |------| 7e41f4b71Sopenharmony_ci| const.product.devicetype | const char\* GetDeviceType(void) | 返回当前设备类型 | 8e41f4b71Sopenharmony_ci| const.product.manufacturer | const char\* GetManufacture(void) | 返回当前设备生产厂家信息 | 9e41f4b71Sopenharmony_ci| const.product.brand | const char\* GetBrand(void) | 返回当前设备品牌信息 | 10e41f4b71Sopenharmony_ci| const.product.name | const char\* GetMarketName(void) | 返回当前设备传播名 | 11e41f4b71Sopenharmony_ci| const.build.product | const char\* GetProductSeries(void) | 返回当前设备产品系列名 | 12e41f4b71Sopenharmony_ci| const.product.model | const char\* GetProductModel(void) | 返回当前设备认证型号 | 13e41f4b71Sopenharmony_ci| const.software.model | const char\* GetSoftwareModel(void) | 返回当前设备内部软件子型号 | 14e41f4b71Sopenharmony_ci| const.product.hardwareversion | const char\* GetHardwareModel(void) | 返回当前设备硬件版本号 | 15e41f4b71Sopenharmony_ci| const.product.hardwareprofile | const char\* GetHardwareProfile(void) | 返回当前设备硬件profile | 16e41f4b71Sopenharmony_ci| ohos.boot.sn | const char\* GetSerial(void) | 返回当前设备序列号(SN号)| 17e41f4b71Sopenharmony_ci| const.product.software.version | const char\* GetDisplayVersion(void) | 返回当前设备用户可见的软件版本号 | 18e41f4b71Sopenharmony_ci| const.product.bootloader.version | const char\* GetBootloaderVersion(void) | 返回当前设备Bootloader版本号 | 19e41f4b71Sopenharmony_ci| const.product.udid | int GetDevUdid(char \*udid, int size) | 获取设备udid(先通过参数获取,获取失败通过计算获取) | 20e41f4b71Sopenharmony_ci| | const char *AclGetSerial(void); | 返回当前设备序列号(SN号)(带访问权限检查) | 21e41f4b71Sopenharmony_ci| | int AclGetDevUdid(char *udid, int size); | 获取设备udid(带访问权限检查) | 22e41f4b71Sopenharmony_ci 23e41f4b71Sopenharmony_ci## 设备信息来源 24e41f4b71Sopenharmony_ci 25e41f4b71Sopenharmony_ci### OHOS 固定值参数的适配 26e41f4b71Sopenharmony_ci 27e41f4b71Sopenharmony_ci- OHOS 固定值参数: 28e41f4b71Sopenharmony_ci 29e41f4b71Sopenharmony_ci ``` 30e41f4b71Sopenharmony_ci const.ohos.version.security_patch 31e41f4b71Sopenharmony_ci const.ohos.releasetype 32e41f4b71Sopenharmony_ci const.ohos.apiversion 33e41f4b71Sopenharmony_ci const.ohos.fullname 34e41f4b71Sopenharmony_ci ``` 35e41f4b71Sopenharmony_ci 36e41f4b71Sopenharmony_ci- 适配说明: 37e41f4b71Sopenharmony_ci 38e41f4b71Sopenharmony_ci OHOS 固定值参数由OHOS系统填充,厂商不能也不需适配,目前这部分参数主要定义在`/base/startup/init/services/etc/param/ohos_const/ohos.para`文件中。 39e41f4b71Sopenharmony_ci 40e41f4b71Sopenharmony_ci### 厂商固定值参数的适配: 41e41f4b71Sopenharmony_ci 42e41f4b71Sopenharmony_ci- 厂商固定值参数: 43e41f4b71Sopenharmony_ci 44e41f4b71Sopenharmony_ci ``` 45e41f4b71Sopenharmony_ci const.product.devicetype 46e41f4b71Sopenharmony_ci const.product.manufacturer 47e41f4b71Sopenharmony_ci const.product.brand 48e41f4b71Sopenharmony_ci const.product.name 49e41f4b71Sopenharmony_ci const.build.product 50e41f4b71Sopenharmony_ci const.product.model 51e41f4b71Sopenharmony_ci const.software.model 52e41f4b71Sopenharmony_ci const.product.hardwareversion 53e41f4b71Sopenharmony_ci const.product.hardwareprofile 54e41f4b71Sopenharmony_ci const.product.software.version 55e41f4b71Sopenharmony_ci const.product.bootloader.version 56e41f4b71Sopenharmony_ci const.build.characteristics 57e41f4b71Sopenharmony_ci ... ... 58e41f4b71Sopenharmony_ci 59e41f4b71Sopenharmony_ci ``` 60e41f4b71Sopenharmony_ci 61e41f4b71Sopenharmony_ci 62e41f4b71Sopenharmony_ci- 适配说明: 63e41f4b71Sopenharmony_ci 64e41f4b71Sopenharmony_ci 由各产品根据自身情况在vendor目录下适配。 65e41f4b71Sopenharmony_ci 66e41f4b71Sopenharmony_ci - 标准系统以RK3568为例,在`/vendor/hihope/rk3568/etc/para/hardware_rk3568.para`中适配,并安装到指定目录。 67e41f4b71Sopenharmony_ci 68e41f4b71Sopenharmony_ci ``` 69e41f4b71Sopenharmony_ci ohos_prebuilt_etc("para_for_chip_prod") { 70e41f4b71Sopenharmony_ci source = "./para/hardware_rk3568.para" 71e41f4b71Sopenharmony_ci install_images = [ chip_prod_base_dir ] 72e41f4b71Sopenharmony_ci relative_install_dir = "para" 73e41f4b71Sopenharmony_ci part_name = "product_rk3568" 74e41f4b71Sopenharmony_ci } 75e41f4b71Sopenharmony_ci ``` 76e41f4b71Sopenharmony_ci 77e41f4b71Sopenharmony_ci - 轻量系统与小型系统在产品对应的`hals/utils/sys_param/vendor.para`文件中配置。例如: 78e41f4b71Sopenharmony_ci 79e41f4b71Sopenharmony_ci ``` 80e41f4b71Sopenharmony_ci const.product.manufacturer=Talkweb 81e41f4b71Sopenharmony_ci 82e41f4b71Sopenharmony_ci const.product.brand=Talkweb 83e41f4b71Sopenharmony_ci 84e41f4b71Sopenharmony_ci const.product.name=Niobe 85e41f4b71Sopenharmony_ci 86e41f4b71Sopenharmony_ci const.build.product=Niobe 87e41f4b71Sopenharmony_ci 88e41f4b71Sopenharmony_ci const.product.model=Niobe407 89e41f4b71Sopenharmony_ci 90e41f4b71Sopenharmony_ci const.software.model="2.0.0" 91e41f4b71Sopenharmony_ci 92e41f4b71Sopenharmony_ci const.product.hardwareversion="1.0.0" 93e41f4b71Sopenharmony_ci 94e41f4b71Sopenharmony_ci const.product.hardwareprofile="RAM:192K,ROM:1M,ETH:true" 95e41f4b71Sopenharmony_ci ... ... 96e41f4b71Sopenharmony_ci ``` 97e41f4b71Sopenharmony_ci 98e41f4b71Sopenharmony_ci### 厂商动态参数的适配 99e41f4b71Sopenharmony_ci 100e41f4b71Sopenharmony_ci厂商动态值参数,目前有三种获取形式:cmdline读取,编译宏定义,在BUILD.gn中定义。 101e41f4b71Sopenharmony_ci 102e41f4b71Sopenharmony_ci1. cmdline中读取的值有:ohos.boot.hardware、ohos.boot.bootslots、ohos.boot.sn等,其中ohos.boot.sn的获取略有不同,具体如下: 103e41f4b71Sopenharmony_ci 104e41f4b71Sopenharmony_ci - 标准系统的Serial从参数ohos.boot.sn读取。 105e41f4b71Sopenharmony_ci 106e41f4b71Sopenharmony_ci ohos.boot.sn参数值的获取方式:首先从cmdline(由uboot生成)获取,如果获取到的是sn值则直接读取,若获取的是文件路径,则从文件中读取;当获取不到时从默认的Sn文件读取,默认文件为:`/sys/block/mmcblk0/device/cid;/proc/bootdevice/cid`。 107e41f4b71Sopenharmony_ci 108e41f4b71Sopenharmony_ci - 轻量系统与小型系统的Serial各产品在实现过程中可能有自己特殊的算法,因此OpenHarmony支持在`hals/utils/sys_param`目录下hal_sys_param.c文件中通过HalGetSerial()接口自定算法来获取Serial。 109e41f4b71Sopenharmony_ci 110e41f4b71Sopenharmony_ci2. 编译宏定义的形式获取参数,目前主要在轻量系统与小型系统中用到,例如: 111e41f4b71Sopenharmony_ci 112e41f4b71Sopenharmony_ci ``` 113e41f4b71Sopenharmony_ci defines = [ 114e41f4b71Sopenharmony_ci "INCREMENTAL_VERSION=\"${ohos_version}\"", 115e41f4b71Sopenharmony_ci "BUILD_TYPE=\"${ohos_build_type}\"", 116e41f4b71Sopenharmony_ci "BUILD_USER=\"${ohos_build_user}\"", 117e41f4b71Sopenharmony_ci "BUILD_TIME=\"${ohos_build_time}\"", 118e41f4b71Sopenharmony_ci "BUILD_HOST=\"${ohos_build_host}\"", 119e41f4b71Sopenharmony_ci "BUILD_ROOTHASH=\"${ohos_build_roothash}\"", 120e41f4b71Sopenharmony_ci ] 121e41f4b71Sopenharmony_ci ``` 122e41f4b71Sopenharmony_ci3. 在BUILD.gn中定义,可参考文件`/base/startup/init/services/etc/BUILD.gn`,例如: 123e41f4b71Sopenharmony_ci 124e41f4b71Sopenharmony_ci ``` 125e41f4b71Sopenharmony_ci if (target_cpu == "arm64") { 126e41f4b71Sopenharmony_ci extra_paras += [ "const.product.cpu.abilist=arm64-v8a" ] 127e41f4b71Sopenharmony_ci } 128e41f4b71Sopenharmony_ci if (build_variant == "user") { 129e41f4b71Sopenharmony_ci extra_paras += [ 130e41f4b71Sopenharmony_ci "const.secure=1", 131e41f4b71Sopenharmony_ci "const.debuggable=0", 132e41f4b71Sopenharmony_ci ] 133e41f4b71Sopenharmony_ci } else if (build_variant == "root") { 134e41f4b71Sopenharmony_ci extra_paras += [ 135e41f4b71Sopenharmony_ci "const.secure=0", 136e41f4b71Sopenharmony_ci "const.debuggable=1", 137e41f4b71Sopenharmony_ci ] 138e41f4b71Sopenharmony_ci } 139e41f4b71Sopenharmony_ci if (device_type != "default") { 140e41f4b71Sopenharmony_ci extra_paras += [ 141e41f4b71Sopenharmony_ci "const.product.devicetype=${device_type}", 142e41f4b71Sopenharmony_ci "const.build.characteristics=${device_type}", 143e41f4b71Sopenharmony_ci ] 144e41f4b71Sopenharmony_ci } 145e41f4b71Sopenharmony_ci module_install_dir = "etc/param" 146e41f4b71Sopenharmony_ci 147e41f4b71Sopenharmony_ci ``` 148e41f4b71Sopenharmony_ci#### 特别说明: 149e41f4b71Sopenharmony_ci 150e41f4b71Sopenharmony_ci1. 小型系统的产品需要在`hals/utils/sys_param/BUILD.gn`中添加vendor.para的编译,具体如下: 151e41f4b71Sopenharmony_ci 152e41f4b71Sopenharmony_ci ``` 153e41f4b71Sopenharmony_ci copy("vendor.para") { 154e41f4b71Sopenharmony_ci sources = [ "./vendor.para" ] 155e41f4b71Sopenharmony_ci outputs = [ "$root_out_dir/vendor/etc/param/vendor.para" ] 156e41f4b71Sopenharmony_ci } 157e41f4b71Sopenharmony_ci ``` 158e41f4b71Sopenharmony_ci 159e41f4b71Sopenharmony_ci2. 轻量系统的产品由于没有文件系统,在编译时会把hal_sys_param.c和vendor.para文件转化为头文件,编译时直接编译到系统中。