OpenHarmony-2.DeviceInfo适配

  • DeviceInfo适配说明

1.启动子系统设备信息说明
在这里插入图片描述

2.OHOS

2.1.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:13 const.ohos.version.security_patch=2024/08/0114 const.ohos.releasetype=Release15 const.ohos.apiversion=1116 const.ohos.fullname=OpenHarmony-4.1.7.8

2.2.厂商固定值参数适配:

  • 厂商固定值参数:
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目录下适配。

  • 标准系统以RK3568为例,在/vendor/hihope/rk3568/etc/para/hardware_rk3568.para中适配,并安装到指定目录。
vendor/hihope/rk3568/etc/param/hardware_rk3568.para :
const.product.hardwareversion=defaultvendor/hihope/rk3568/etc/BUILD.gn:16 ohos_prebuilt_etc("para_for_chip_prod") {17   source = "./param/hardware_rk3568.para"18   install_images = [ chip_prod_base_dir ]19   relative_install_dir = "param"20   part_name = "product_rk3568"21 }

3.厂商动态参数适配

  厂商动态值参数,目前有三种获取形式:cmdline读取,编译宏定义,在BUILD.gn中定义。

  • cmdline中读取的值有:ohos.boot.hardware、ohos.boot.bootslots、ohos.boot.sn等,其中ohos.boot.sn的获取略有不同,具体如下:

    • 标准系统 Serial从参数ohos.boot.sn读取。
      ohos.boot.sn参数值的获取方式:首先从cmdline(由uboot生成)获取,如果获取到的是sn值则直接读取,若获取的是文件路径,则从文件中读取;当获取不到时从默认的Sn文件读取,默认文件为:/sys/block/mmcblk0/device/cid;/proc/bootdevice/cid。

    • 轻量系统与小型系统的Serial各产品在实现过程中可能有自己特殊的算法,因此OpenHarmony支持在hals/utils/sys_param目录下hal_sys_param.c文件中通过HalGetSerial()接口自定算法来获取Serial。

  • 在BUILD.gn中定义,参考文件/base/startup/init/services/etc/BUILD.gn

4.代码分析

startup/init/services/init/standard/init.c :

SystemConfig->LoadSpecialParam

429 void LoadSpecialParam(void)
430 {
431     // read param area size from cfg and save to dac
432     LoadParamAreaSize();
433     // read selinux label
434     LoadSelinuxLabel("init");
435     // from cmdline
436     LoadParamFromCmdLine();
437     // from build
438     LoadParamFromBuild();
439 }
  • LoadParamAreaSize
startup/init/services/etc/param/ohos.para.size:14 default_param=409615 hilog_param=4096016 const_product_param=409617 startup_param=4096018 persist_param=4096019 const_param=4096020 persist_sys_param=409621 devinfo_public_param=4096022 sys_param=409623 bootevent_param=409624 startup_init_param=8192025 hiviewdfx_profiler_param=204826 ohos_boot_param = 819227 bluetooth_param = 819228 hiviewdfx_hiview_param = 204829 telephony_param = 2048030 vendor_camera_param=614431 edm_writable_param = 4096
  • LoadParamFromCmdLine
startup/init/services/param/manager/param_server.c:
230 INIT_LOCAL_API int LoadParamFromCmdLine(void)
231 {
232     CmdLineIteratorCtx ctx;
233
234     ctx.gotSn = false;
235     ctx.cmdline = ReadFileData(BOOT_CMD_LINE);
236     PARAM_CHECK(ctx.cmdline != NULL, return -1, "Failed to read file %s", BOOT_CMD_LINE);
237
238     IterateNameValuePairs(ctx.cmdline, CmdlineIterator, (void *)(&ctx));
239
240     // sn is critical, it must be specified
241     if (!ctx.gotSn) {
242         PARAM_LOGE("Generate default sn now ...");
243         GenerateSnByDefault();
244     }
245
246     free(ctx.cmdline);
247     return 0;
248 }215 static void GenerateSnByDefault(void)
216 {
217     const char *snFileList [] = {
218         "/sys/block/mmcblk0/device/cid",
219         "/proc/bootdevice/cid"
220     };
221
222     for (size_t i = 0; i < ARRAY_LENGTH(snFileList); i++) {
223         int ret = ReadSnFromFile(OHOS_CMDLINE_PARA_PREFIX "sn", snFileList[i]);
224         if (ret == 0) {
225             break;
226         }
227     }
228 }

refer to

  • docs/en/device-dev/subsystems/subsys-boot-init-deviceInfo.md
  • https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/subsystems/subsys-boot-init-deviceInfo.md

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/19219.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【电机控制】数学——微分

【电机控制】数学——微分 文章目录 [TOC](文章目录) 前言一、导数二、梯度三、▽算子四、散度四、旋度五、积规则a.函数求导1、函数之和求导2、函数与常数求导3、两个函数乘积求导4、一个函数除以一个函数求导 b.矢量函数求导1.构造标量2.构造矢量 c.梯度求导d.散度求导e.旋度…

day04(单片机高级)硬件基础

目录 硬件基础 初级硬件工程师 中级硬件工程师 高级硬件工程师 需要学习的知识点 硬件基础 初级硬件工程师 了解数字电路、模拟电路知识&#xff0c;熟悉常用电子元器件的性能原理&#xff1b; 熟悉PCB设计流程和规范&#xff08;华为&#xff09;&#xff0c;熟悉Altium Desig…

Nginx 使用入门介绍

大家好&#xff0c;我是G探险者&#xff01; 今天聊一聊nginx. Nginx 是一款高性能的 Web 服务器、反向代理服务器以及负载均衡器。它因其轻量级、稳定性和高并发处理能力&#xff0c;在全球范围内得到了广泛应用。许多大型网站&#xff08;如 Netflix、Dropbox 和 WordPress…

停车场空位引导系统

随着城市化进程的加速和汽车保有量的持续增长&#xff0c;传统停车场面临着前所未有的压力。在这些停车场中&#xff0c;停车困难与寻找自己的停车位麻烦复杂已成为许多驾驶者日常出行的一大痛点。 一.传统停车场痛点 在传统停车场中&#xff0c;车位难找&#xff0c;停车场缺…

([LeetCode仓颉解题报告] 661. 图片平滑器

[LeetCode仓颉解题报告] 661. 图片平滑器 一、 题目1. 题目描述2. 原题链接 二、 解题报告1. 思路分析2. 复杂度分析3. 代码实现 三、 本题小结四、 参考链接 一、 题目 1. 题目描述 2. 原题链接 链接: 661. 图片平滑器 二、 解题报告 1. 思路分析 由于只需要3*39个格子&am…

SpringCloud多机部署,负载均衡-LoadBalance

一.负载均衡 1.1问题描述 //根据应用名称获取服务列表 List<ServiceInstance> instancesdiscoveryClient.getInstances("product-service"); //一个微服务可能有多个实例&#xff0c;获取第一个 EurekaServiceInstance instance(EurekaServiceInstance)insta…

基于Java Springboot甘肃旅游管理系统

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术&#xff1a;Html、Css、Js、Vue、Element-ui 数据库&#xff1a;MySQL 后端技术&#xff1a;Java、Spring Boot、MyBatis 三、运行环境 开发工具&#xff1a;IDEA/eclipse 数据…

软考-信息安全-网络安全体系与网络安全模型

4.1 网络安全体系概述 网络安全保障是一项复杂的系统工程&#xff0c;是安全策略&#xff0c;多种技术&#xff0c;管理方法和人员安全素质的综合。 4.1.1 网络安全体系概念 现代的网络安全问题变化莫测&#xff0c;要保障网络系统的安全&#xff0c;应当把相应的安全策略&a…

CSS基础选择器与div布局

基础选择器一 全局选择器 可以与任何元素匹配&#xff0c;优先级最低&#xff0c;不推荐使用 *{margin: 0;padding: 0;}元素选择器 HTML文档中的元素&#xff0c;p、b、div、a、img、body等。 标签选择器&#xff0c;选择的是页面上所有这种类型的标签&#xff0c;所以经常…

Python毕业设计选题:基于Spark的国漫推荐系统的设计与实现-django+spider

开发语言&#xff1a;Python框架&#xff1a;djangoPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 系统登录 管理员功能界面 漫画数据管理 看板界面 系统管理 摘要 系统的设计主要包括…

Linux 链式与层级中断控制器讲解:原理与驱动开发

往期内容 本专栏往期内容&#xff0c;interrtupr子系统&#xff1a; 深入解析Linux内核中断管理&#xff1a;从IRQ描述符到irq domain的设计与实现Linux内核中IRQ Domain的结构、操作及映射机制详解中断描述符irq_desc成员详解Linux 内核中断描述符 (irq_desc) 的初始化与动态分…

“数字化”让党建更“智慧”:帆软塑造党建发展新动能

智慧党建是新时代党的建设的重要创新&#xff0c;它通过互联网、大数据、云计算和人工智能等现代信息技术&#xff0c;实现了党建工作的数字化、智能化。帆软公司的Fine产品线&#xff0c;包括FineDataLink、FineReport、FineVis和FineBI&#xff0c;提供了一个全面的大数据分析…

利用c语言详细介绍下冒泡排序

软件开发过程中&#xff0c;排序算法是常规且使用众多的方法之一&#xff0c;而冒泡算法又是排序算法中最常规且基本的算法。今天我们利用c语言&#xff0c;图文详细介绍下冒泡算法。 一、图文介绍 我们输入一个数组&#xff0c;数组为【10&#xff0c;5&#xff0c;3&#xf…

小程序-基于java+SpringBoot+Vue的实习生管理系统设计与实现

项目运行 1.运行环境&#xff1a;最好是java jdk 1.8&#xff0c;我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境&#xff1a;IDEA&#xff0c;Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境&#xff1a;Tomcat 7.x,8.x,9.x版本均可 4.硬件环境&#xff1a…

全新升级抗性宏基因组,直击病毒和毒力因子分析!

基于宏基因组测序的抗性基因分析是目前抗性基因分析的重要手段。为了协助研究工作者对抗性基因开展更深入且全面的探研&#xff0c;凌恩生物技术团队致力于技术研发&#xff0c;推出了全新升级版的宏基因组抗性基因分析流程。此流程采用五大数据库进行详尽的注释分析&#xff0…

算法--“汽车加油”问题.

def greedy():n 100 # 汽车满油后可行驶的最大距离d [50, 80, 39, 60, 40, 32] # 加油站的距离k len(d) # 加油站的数量# 检查是否有加油站距离超过汽车的最大行驶距离for dist in d:if dist > n:print(no solution)returnnum 0 # 加油次数current_position 0 # 当…

细说STM32单片机DMA中断收发RTC实时时间并改善其鲁棒性的方法

目录 一、DMA基础知识 1、DMA简介 (1)DMA控制器 (2)DMA流 (3)DMA请求 (4)仲裁器 (5)DMA传输属性 2、源地址和目标地址 3、DMA传输模式 4、传输数据量的大小 5、数据宽度 6、地址指针递增 7、DMA工作模式 8、DMA流的优先级别 9、FIFO或直接模式 10、单次传输或突…

HTTP 缓存策略

文章目录 一、HTTP的缓存的过程是怎样的&#xff1f;二、什么时候触发强缓存或协商缓存强缓存ExpiresCache-Control 协商缓存 三、服务器如何判断资源是否新鲜Last-Modified/If-Modified-SinceETag/If-None-Match 四、整体缓存过程 一、HTTP的缓存的过程是怎样的&#xff1f; …

Leetcode234.回文链表(HOT100)

链接 代码&#xff1a; class Solution { public:bool isPalindrome(ListNode* head) {ListNode* slow head;ListNode* fast head;// while(slow&&fast){// slow slow->next;// fast fast->next;// if(fast)// {// fast fast->…

【Unity Dots之Ecs原理分析(无入门代码示例)】

Unity Ecs原理分析 前言一、ECS是什么&#xff1f;Entity是什么&#xff1f;Component是什么&#xff1f;System是什么&#xff1f;不得不提的Archetype为什么时16kb&#xff1f; 什么是Structural Change&#xff1f;ASpect有关ECS使用时的安全性Conversion World & Shado…