Adaptive Partitioning

2024-03-25 22:28
文章标签 adaptive partitioning

本文主要是介绍Adaptive Partitioning,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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(文件列表)

这篇关于Adaptive Partitioning的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/846428

相关文章

PostgreSQL分区表(partitioning)应用实例详解

https://www.jb51.net/article/97937.htm   PostgreSQL分区表(partitioning)应用实例详解  更新时间:2016年11月22日 10:25:58   作者:小灯光环    我要评论   这篇文章主要为大家详细介绍了PostgreSQL分区表(partitioning)应用实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

【UVA】11584-Partitioning by Palindromes(动态规划)

动态规划。 如果 j + 1 ~ i是回文,那么 dp[i] = min=(dp[j] + 1);  判断j + 1~ i是不是回文可以进行预处理,方法是枚举中心,之后向两边伸张,(需要枚举2次,一次是偶数回文,一次是奇数回文) 13993253 11584 Partitioning by Palindromes Accepted C++ 0.132 2014-08-05 08:2

COD论文笔记 Adaptive Guidance Learning for Camouflaged Object Detection

论文的主要动机、现有方法的不足、拟解决的问题、主要贡献和创新点如下: 动机: 论文的核心动机是解决伪装目标检测(COD)中的挑战性任务。伪装目标检测旨在识别和分割那些在视觉上与周围环境高度相似的目标,这对于计算机视觉来说是非常困难的任务。尽管深度学习方法在该领域取得了一定进展,但现有方法仍面临有效分离目标和背景的难题,尤其是在伪装目标与背景特征高度相似的情况下。 现有方法的不足之处: 过于

AUTOSAR Adaptive与智能汽车E/E架构发展趋势

AUTOSAR Adaptive是一个面向现代汽车应用需求的标准,特别适用于那些需要高计算能力和灵活性的应用。以下是AUTOSAR Adaptive的典型特性: 高计算能力:AUTOSAR Adaptive支持使用MPU(微处理器),这些处理器的性能与PC或智能手机中的处理器相当。这样的高计算能力是实现半自动驾驶和其他复杂功能所必需的。动态更新和管理:AUTOSAR Adaptive的架构允

Learning Policies for Adaptive Tracking with Deep Feature Cascades

Learning Policies for Adaptive Tracking with Deep Feature Cascades ICCV17 shotlight 作者:Chen Huang, CMU postdoctor,导师 Deva Ramanan summary 文章主要贡献在于速度与精度的权衡(AUC 0.638,fps 23),通过强化学习策略,来控制网络的深度,使得精度和

多场景建模: STAR(Star Topology Adaptive Recommender)

之前,分享了一篇关于多任务学习的文章:多任务学习MTL模型:MMoE、PLE,同样的还有关于多任务学习中的多目标loss优化策略。 这篇文章则开始一个与多任务学习有着紧密联系的系列:多场景建模学习。 前言 首先,讲一下多任务学习和多场景建模的区别: 多任务学习通常是聚焦于单独一个domain(场景、领域)内的不同任务的处理,即不同任务的label空间是不同的;而多场景建模则是关注于多个do

Apache Doris 采用了自适应查询执行(Adaptive Query Execution)技术

Apache Doris 通过自适应查询执行(AQE)和 Runtime Filter 技术,极大地增强了查询优化的灵活性和效率。AQE 能够根据实时的运行时信息动态调整查询计划,适应复杂多变的数据场景。而 Runtime Filter 则通过在查询执行过程中动态生成和应用过滤条件,显著减少了数据处理量和 I/O 开销,提升了查询性能。结合这两者,Apache Doris 能够在大规模数据分析中提

ATSS论文要点总结(Adaptive Training Sample Selection)

“ATSS” 全称为 “Adaptive Training Sample Selection”,意为自适应训练样本选择,相关论文的主要内容如下: 核心观点:在目标检测中,anchor-based 和 anchor-free 检测器性能差异的关键在于正负样本的定义方式。如果训练过程中使用相同的正负样本定义,两者性能将无明显差异。基于此,作者提出 ATSS 方法,根据目标的统计特征自动选择正负样本,

【LeetCode】Palindrome Partitioning III

leetcode DP 深搜 回文串 1 Palindrome Partitioning 问题来源:Palindrome Partitioning 该问题简单来说就是给定一个字符串,将字符串分成多个部分,满足每一部分都是回文串,请输出所有可能的情况。        该问题的难度比较大,很可能第一次遇到没有思路,这很正常。下面我们一点点分析,逐步理清思路。先不考虑所有的情况,针对一个

lightoj 1044 Palindrome Partitioning(dp)

题意:给定字符串S,问可以划分的最小回文串数量 思路:定义dp[i]为以i开头的字符串中回文串的最小划分数. dp[i] = min(dp[j] + 1 | i <= j < n && S[i...j]是回文串) 边界,dp[i] = n-i+1. /************************************************ Author: fisty* Crea