Adaptive Partitioning

news2024/9/21 17:42:47

qnx开源代码

GitHub - vocho/openqnx: mirror of git://git.code.sf.net/p/monartis/openqnx

http://www.qnx.com/developers/docs/7.0.0/#com.qnx.doc.adaptivepartitioning.userguide/topic/about_howtouseguide_.html


ap是对进程和线程集合分配最小的系统资源,目前是对cpu控制,通过thread scheduler
1、能动态配置
2、在系统满载,可以保证对应partion 最小的系统资源;保证最小中断延迟
3、系统空闲时,可以将空闲partion的cpu 给到繁忙的partion
4、能保证重要任务服务,避免不重要任务服务一直占用系统

aps show 可以查看系统是否运行ap

在QNX中镜像的编译是以build_file_tmpl(也就是以.build.tmpl为后缀的文件)为单元来实现的,且每个镜像对应一个img_name.build.tmpl。

一,QNX镜像编译

QNX的编译同样是由make来执行的,那么make的执行就离不开Makefile。在QNX中,镜像的编译还是从qnx/hlos_dev_qnx/app/qnx_ap/target/hypervisor/host/Makefile开始的,在Makefile中通过“bash create_variant_images.sh",调用执行create_variant_images.sh的执行过程中,会通过下面的语句来build各个镜像。

编译除system分区外的其他所有分区

create_variant_images.sh-> create_images.sh

. ${BSP_ROOT}/tools/build/image-builder.sh     [BSP_ROOT=qnx/hlos_dev_qnx/apps/qnx_ap]


. ${BSP_ROOT}/tools/build/image-builder.sh

VARIANT_NAME=`basename ${SOC_VARIANT} | sed "s/\..*//"`
build_ifs2()
{
    LIST="ifs_coreservices\
          ifs_audio_camera \
          ifs_display\
          ifs_graphics\
          ifs_ethernet\
          ifs_video\
          ifs_camera\
          ifs_disk"
    # build the host component images
    for build_file_tmpl in ${LIST}; do
        build_aifs ${build_file_tmpl} "-qvmhost" "" "${SOC_VARIANT}" "" "${BSP_ROOT}/target/hypervisor/host"
    done
    calc_size "__HOSTIFS2_RUNTIME_SIZE__" "131072" ${LIST}
    MKIFS_PATH=$MKIFS_PATH:./${OUT_DIR}
    build_aifs ifs_startup "" "" "${SOC_VARIANT}" "" "${BSP_ROOT}/target/hypervisor/host"
    build_aifs ifs2 "" "" "${SOC_VARIANT}" "${ext_name}" "${BSP_ROOT}/target/hypervisor/host"
}

build_mifs()
{

 ...

}

${BSP_ROOT}/tools/build/image-builder.sh
build_aifs()
{
    img_name=$1
    vm_variant=$2 # -qvmhost or -qvmguest
    mifs_ext=$3 # base image name extension 
    variant_config=$4 # file which has the multi guest config/single guest config file *_la.txt , *_lv.tx , _multi, etc
    guest_variant=$5 # _la , _lv 
    build_file_path=$6 #customer path , generic reference path

    img_ext=${mifs_ext}${guest_variant}
    build_file_tmpl=${img_name}.build.tmpl
    out_build_file=${img_name}${img_ext}.build;
    imgfile=${img_name}${img_ext}.img

    filepp -imacros ${SOC_CONFIG}  -imacros ${variant_config} -D__IMAGEFS__ -D__VARIANT_hyp__="${vm_variant}" -DVARIANT_${vm_variant:1} -D__SECURE_BOOT_SECPOL__=${SECURE_BOOT_SECPOL} -D__SECURE_BOOT_QTD__=${SECURE_BOOT_QTD} -D__SECURE_BOOT_QVB__=${SECURE_BOOT_QVB} -D__PERF_ENABLE__=${PERF_ENABLE} -D__MERKLE_ENABLE__=${MERKLE_ENABLE} -I${FILESETS} -I${FILESETS_CUST} -I${FILESETS_CUST_COMMON} -I${INSTALL_ROOT_nto}/usr/include -I${BSP_ROOT}/target/hypervisor/host  ${build_file_path}/build_files/${build_file_tmpl} > ./${OUT_DIR}/${out_build_file}
    if [ $? -ne 0 ]; then
        echo "filepp failed for $out_build_file"
        exit 1;
    fi

    mkifs -nn -v ./${OUT_DIR}/${out_build_file} ./${OUT_DIR}/${imgfile} -a "${vm_variant:1}${img_ext}" -o ./${OUT_DIR}
    if [ $? -ne 0 ]; then
        echo "mkifs failed for $out_build_file"
        exit 1;
    fi

    if [ ! -z ${HASHFILE+x} ]; then
        #Inject ifs2 hash into the startup manager application.
        hash=`sha256sum ${OUT_DIR}/${imgfile} | awk '{ print $1}'`
        echo "#define __${img_name}${mifs_ext}__hash__ \"${hash}\"" >> ${HASHFILE}
    fi

}

build_aifs_recovery()
{
    img_name=$1

mifs.build.tmpl

利用QNX的模块性和和可裁剪性,其嵌入过程一般是:

构建Buildfile -> 编译buildfile生成系统映象文件 -> 启动目标系统 ->嵌入式系统软件设计。

其中的关键是构建Buildfile[19]。通常一个嵌入式系统需要一个可启动的操作系统映象文件(OS Image)。对于基于QNX的嵌入式一个应用系统,就是根据所选择的CPU类型以及应用程序所需要的操作系统模块来定制嵌入式系统。构建Buildfile的过程就是配置操作系统映象的过程。简单来说Buildfile是一个产生映象文件所需遵守的一组规则、准则。Buildfile由三部分组成,其结构如下:

l        bootstrap script(启动引导脚本)

l        startup script(启动脚本)

l        file list(文件列表)

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

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

相关文章

基于nodejs+vue宿舍管理系统python-flask-django-php

随着信息时代的来临,过去的传统管理方式缺点逐渐暴露,对过去的传统管理方式的缺点进行分析,采取计算机方式构建宿舍管理系统。本文通过课题背景、课题目的及意义相关技术,提出了一种楼宇信息、宿舍信息、宿舍安排、缺勤信息等于一…

OceanBase中NOT EXISTS是否需要被改写

作者简介 张瑞远,曾经从事银行、证券数仓设计、开发、优化类工作,现主要从事电信级IT系统及数据库的规划设计、架构设计、运维实施、运维服务、故障处理、性能优化等工作。 持有Orale OCM,MySQL OCP及国产代表数据库认证。 获得的专业技能与认证包括 Oce…

直播预告丨困气排气解决新方案--毅速金属3D打印随形透气钢

您是否也遇到过这些问题 模具困气造成产品出现注塑瑕疵,但复杂的产品形状导致无法开排气槽 常规透气钢需要拆镶件导致工件强度下降 某些工件部分不接受分模线区域无法拆镶件无法使用常规透气钢 面对越来越复杂的产品和结构,越来越多需要透气、保压、…

全网最新网络安全自学路线,最详细没有之一!!!

在各大平台搜的网安学习路线都太粗略了。。。。看不下去了! 我把自己整理的系统学习路线,拿出来跟大家分享了! 建议的学习顺序: 一、网络安全学习普法(心里有个数,要进去坐几年!) 1…

Spring 面试——restcontroller/requestmapping

RestController Controller ResponseBody Controller:包含Component,把当前类声明成为一个 bean ResponseBody:表示方法返回的结果直接作为 HTTP 响应的内容,不是返回视图 3.RequestMapping注解的基本用法_哔哩哔哩_bilibili

Linux文件系列:磁盘,文件系统,软硬链接

Linux文件系列:磁盘,文件系统,软硬链接 一.磁盘相关知识1.磁盘机械构成2.磁盘物理存储3.磁盘逻辑存储1.LBA地址2.磁盘的分区和分组 二.文件系统和inode1.inode结构体2.文件系统1.Super Block(超级块)2.Group Descriptor Table(块组描述表GDT)3.inode Table4.Data Blocks5.Block…

如何本地部署Imagewheel并实现无公网IP远程连接打造个人云图床

文章目录 1.前言2. Imagewheel网站搭建2.1. Imagewheel下载和安装2.2. Imagewheel网页测试2.3.cpolar的安装和注册 3.本地网页发布3.1.Cpolar临时数据隧道3.2.Cpolar稳定隧道(云端设置)3.3.Cpolar稳定隧道(本地设置) 4.公网访问测…

域名SSL证书怎么获取?

获取域名证书的步骤如下: 选择认证机构:域名证书必须从受信任的认证机构(CA)中申请,如JoySSL、GeoTrust、、Thawte等。收集信息:在申请域名证书之前,需要准备一些证明信息,如域名认证等。创建CSR&#xff…

【ARXIV2402】MambaIR

这个工作首次将 Mamba 引入到图像修复任务,关于为什么 Mamba 可以用于图像修复,作者有非常详细的解释:一路向北:性能超越SwinIR!MambaIR: 基于Mamba的图像复原基准模型 作者认为Mamba可以理解为RNN和CNN的结合&#xf…

实战 | 微调训练TrOCR识别弯曲文本

导 读 本文主要介绍如何通过微调训练TrOCR实现弯曲文本识别。 背景介绍 TrOCR(基于 Transformer 的光学字符识别)模型是性能最佳的 OCR 模型之一。在我们之前的文章中,我们分析了它们在单行打印和手写文本上的表现。 TrOCR—基于Transforme…

基于ARM 的Linux系统的交叉编译

返回:OpenCV系列文章目录(持续更新中......) 上一篇:在 MacOS 中安装 下一篇:MultiArch与Ubuntu/Debian 的交叉编译 警告 本教程可以包含过时的信息。 此步骤已在 Ubuntu Linux 12.04 上进行了测试,但应…

跳蚱蜢(蓝桥杯)

文章目录 跳蚱蜢题目描述答案:20bfs 跳蚱蜢 题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 如下图所示: 有 9 只盘子,排成 1 个圆圈。 其中 8 只盘子内装着 8 只蚱蜢&#xff…

JVM 基础知识

JAVA code加载执行顺序: *.java --->*.class->类装载子系统、字节码执行引擎 JVM虚拟机组成: 堆、方法区(元空间)、栈(线程)、本地方法栈、程序计数器 栈帧组成: 栈帧:局部…

管理类联考–复试–管理类知识–计划

决策是管理的核心,决策是计划的前提,计划是管理的首要职能,战略是一种计划。 #mermaid-svg-kwa82umCx6PXrp8x {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-kwa82umCx6PXrp8x .e…

Linux操作系统及进程(三)进程优先级及特性

目录 一、优先级概念 二、查看系统进程 三、进程切换 一、优先级概念 1.cpu资源分配的先后顺序,就是指进程的优先权(priority)。 2.优先权高的进程有优先执行权利。配置进程优先权对多任务环境的linux很有用,可以改善系统性能。…

在面对API的安全风险,WAAP全站防护能做到哪些?

随着数字化转型的加速,API(应用程序接口)已经成为企业间和企业内部系统交互的核心组件。在应用程序开发过程中,API能够在不引起用户注意的情况下,无缝、流畅地完成各种任务。例如从一个应用程序中提取所需数据并传递给…

Web漏洞-SQL注入之二次、加密、DNS加密注入

实例1:sqli-labs21 输入admin,admin 测试: 可以看到注入点在cookie处,发送到decoder(解密) 所以如果要注入,需要将注入语句加密 Eg:admin’ and 11加密后:YWRtaW4ZIGFu…

95% 的公司面临 API 安全问题

API 对企业安全发挥着关键作用,但绝大多数企业都为此遭受日益严重的安全风险。据安全公司 Fastly最近做的一项调查显示,84% 的受访企业缺乏足够的API安全措施,95%的企业在过去1年中遇到过 API 安全问题。 此外,79%的受访企业出于A…

Java基于微信小程序的校园请假系统

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇&#…

【Java程序设计】【C00366】基于(JavaWeb)Springboot的纹理生产图片系统(有论文)

TOC 博主介绍:java高级开发,从事互联网行业六年,已经做了六年的毕业设计程序开发,开发过上千套毕业设计程序,博客中有上百套程序可供参考,欢迎共同交流学习。 项目简介 项目获取 🍅文末点击卡片…