# 实时 (RT) 内核概述

实时系统是一种确定性系统，该系统会在设定的时间内对事件做出响应。

足以下条件的系统可归类为与实时兼容：

- 它没有无限制的延迟。
- 最长响应时间计算地非常精确。
- 满足设置的任务调度标准（延迟和截止时间）。

Linux 可配置为实时操作系统 (RTOS)，其中实时任务具有明确定义的周期性执行周期（周期时间），并在指定限制（抖动）内满足执行标准。

当考虑将 Linux 作为 RTOS 时，应用 `PREEMPT_RT` 修补程序并启用完全可抢占内核的配置。

针对每个发布的内核版本，RT 内核维护者维护树外 `PREEMPT_RT` 补丁。

<!--?xml version="1.0" encoding="UTF-8" standalone="no"?-->

<!-- Generated by Microsoft Visio, SVG Export rt-kernel-q-1.svg rt-kernel-q-1 -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="4.7907in" height="2.55661in" viewbox="0 0 344.93 184.076" xml:space="preserve" color-interpolation-filters="sRGB" class="st8" aria-label="../_images/rt-kernel-q-1.svg"><v:documentproperties v:langid="1033"></v:documentproperties>
<style>.svg-1 .st1 { fill: none; stroke: none; stroke-linecap: butt; stroke-width: 0.749999 }
.svg-1 .st2 { fill: #000000; fill-opacity: 0.6; stroke: none; stroke-linecap: butt; stroke-width: 1.25 }
.svg-1 .st3 { fill: #f3f3f2; stroke: none; stroke-linecap: butt; stroke-width: 1.25 }
.svg-1 .st4 { fill: #3253dc; stroke: #5d6e43; stroke-linecap: butt; stroke-width: 1.25 }
.svg-1 .st5 { fill: none; stroke: none; stroke-linecap: butt; stroke-width: 1.25 }
.svg-1 .st6 { fill: #ffffff; font-family: SimHei; font-size: 0.833336em; font-weight: bold }
.svg-1 .st7 { font-family: Arial; font-size: 1em }
.svg-1 .st8 { fill: none; fill-rule: evenodd; font-size: 12px; overflow: visible; stroke-linecap: square; stroke-miterlimit: 3 }</style>
<g v:mid="0" v:index="1" v:groupcontext="foregroundPage">	<title>rt-kernel-q-1</title>	<v:pageproperties v:drawingscale="1" v:pagescale="1" v:drawingunits="19" v:shadowoffsetx="8.99998" v:shadowoffsety="-8.99998"></v:pageproperties>	<v:layer v:name="Flowchart" v:index="0"></v:layer>	<v:layer v:name="Connector" v:index="1"></v:layer>	<g id="group1-1" transform="translate(1.25,-1.25011)" v:mid="1" v:groupcontext="group">		<title>group7-1</title>		<a xlink:href="https://players.brightcove.net/1414329538001/4JiZQnWhg_default/index.html?videoId=6362756330112">			<g id="group2-2" v:mid="2" v:groupcontext="group">				<title>Sheet.2</title>				<g id="shape3-3" v:mid="3" v:groupcontext="shape">					<title>shape1-2</title>					<rect v:rectcontext="foreign" x="0" y="1.62524" width="342.43" height="182.451" class="st1"></rect>					<image x="0" y="1.62524" width="342.43" height="182.451" preserveaspectratio="none" xlink:href="data:image/png;base64,								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								0gAAAABJRU5ErkJggg=="></image>					<rect v:rectcontext="foreign" x="0" y="1.62524" width="342.43" height="182.451" class="st1"></rect>				</g>			</g>		</a>		<a xlink:href="https://players.brightcove.net/1414329538001/4JiZQnWhg_default/index.html?videoId=6362756330112">			<g id="group4-7" transform="translate(0,-0.00021)" v:mid="4" v:groupcontext="group">				<title>Sheet.4</title>				<g id="group5-8" v:mid="5" v:groupcontext="group">					<title>group6-6</title>					<g id="shape6-9" v:mid="6" v:groupcontext="shape" v:layermember="0">						<title>shape2-7</title>						<v:custprops>							<v:cp v:nameu="Cost" v:lbl="Cost" v:prompt="" v:type="7" v:format="@" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0"></v:cp>							<v:cp v:nameu="ProcessNumber" v:lbl="Process Number" v:prompt="" v:type="2" v:format="" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0"></v:cp>							<v:cp v:nameu="Owner" v:lbl="Owner" v:prompt="" v:type="0" v:format="" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0"></v:cp>							<v:cp v:nameu="Function" v:lbl="Function" v:prompt="" v:type="0" v:format="" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0" v:val="VT4()"></v:cp>							<v:cp v:nameu="StartDate" v:lbl="Start Date" v:prompt="" v:type="5" v:format="" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0"></v:cp>							<v:cp v:nameu="EndDate" v:lbl="End Date" v:prompt="" v:type="5" v:format="" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0"></v:cp>							<v:cp v:nameu="Status" v:lbl="Status" v:prompt="" v:type="4" v:format=";Not Started;In Progress;Completed;Deferred;Waiting on Input" v:sortkey="" v:invis="false" v:ask="false" v:langid="1033" v:cal="0" v:val="VT4()"></v:cp>						</v:custprops>						<v:userdefs>							<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>							<v:ud v:nameu="DefaultWidth" v:prompt="" v:val="VT0(1):0"></v:ud>							<v:ud v:nameu="DefaultHeight" v:prompt="" v:val="VT0(0.75):0"></v:ud>							<v:ud v:nameu="ResizeTxtHeight" v:prompt="" v:val="VT0(0.75):0"></v:ud>						</v:userdefs>						<rect x="0" y="140.778" width="342.43" height="43.2977" class="st2"></rect>					</g>					<g id="shape7-11" v:mid="7" v:groupcontext="shape" v:layermember="1;0" transform="translate(13.7155,-11.2315)">						<title>shape3-9</title>						<v:userdefs>							<v:ud v:nameu="visVersion" v:prompt="" v:val="VT0(15):26"></v:ud>						</v:userdefs>						<path d="M0 173.62 A10.46 10.46 0 0 1 20.92 173.62 A10.46 10.46 0 1 1 -0 173.62 Z" class="st3"></path>					</g>					<g id="shape8-13" v:mid="8" v:groupcontext="shape" transform="translate(28.579,342.597) rotate(180)">						<title>shape4-11</title>						<v:userdefs>							<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>						</v:userdefs>						<path d="M6.55 176 L0 180.41 L6.55 184.08 L6.55 176 Z" class="st4"></path>					</g>					<g id="shape9-15" v:mid="9" v:groupcontext="shape" transform="translate(38.7789,-8.34861)">						<title>shape5-13</title>						<desc>Video: Explore Real-time Linux®</desc>						<v:userdefs></v:userdefs>						<v:textblock v:margins="rect(3.99999,3.99999,3.99999,3.99999)" v:verticalalign="0"></v:textblock>						<v:textrect cx="134.642" cy="172.11" width="269.29" height="23.9318"></v:textrect>						<rect x="0" y="160.144" width="269.284" height="23.9318" class="st5"></rect>						<text x="4" y="173.9" class="st6" v:langid="1033"><v:paragraph></v:paragraph><v:tablist></v:tablist>视频：探索实时<tspan class="st7"> </tspan><tspan class="st7">Linux®</tspan></text>						</g>				</g>			</g>		</a>	</g></g>
</svg>

如需安装补丁，参见 [Versions of PREEMPT_RT patches](https://wiki.linuxfoundation.org/realtime/start)。

Note

实时支持是为了实现内核空间进程，而非用户空间进程。

<!--?xml version="1.0" encoding="UTF-8" standalone="no"?-->

<!-- Generated by Microsoft Visio, SVG Export RT-kernel-build-sequence.svg Page-1 -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="11.0625in" height="1.68056in" viewbox="0 0 796.5 121" xml:space="preserve" color-interpolation-filters="sRGB" class="st8" aria-label="RT 内核编译序列的表示。"><v:documentproperties v:langid="1033">	<v:userdefs>		<v:ud v:nameu="msvSubprocessMaster" v:prompt="" v:val="VT4(Rectangle)"></v:ud>		<v:ud v:nameu="msvNoAutoConnect" v:val="VT0(1):26"></v:ud>	</v:userdefs></v:documentproperties>
<style>.svg-2 .st1 { fill: #fafafa; stroke: #d2d7e1; stroke-width: 1.5 }
.svg-2 .st2 { marker-end: url("#mrkr4-8"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.5 }
.svg-2 .st3 { fill: #000000; fill-opacity: 1; stroke: #000000; stroke-opacity: 1; stroke-width: 0.37313432835821 }
.svg-2 .st4 { fill: #6280cc; stroke: #6280cc; stroke-opacity: 0; stroke-width: 2.5 }
.svg-2 .st5 { fill: none; stroke: none; stroke-width: 2.5 }
.svg-2 .st6 { fill: #ffffff; font-family: SimHei; font-size: 1.16666em }
.svg-2 .st7 { font-family: Roboto; font-size: 1em }
.svg-2 .st8 { fill: none; fill-rule: evenodd; font-size: 12px; overflow: visible; stroke-linecap: square; stroke-miterlimit: 3 }</style>
<defs id="Markers">	<g id="lend4">		<path d="M 2 1 L 0 0 L 2 -1 L 2 1 " style="stroke:none"></path>	</g>	<marker id="mrkr4-8" class="st3" v:arrowtype="4" v:arrowsize="2" v:setback="5.12" refx="-5.12" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend4" transform="scale(-2.68,-2.68) "></use>	</marker></defs><g v:mid="0" v:index="1" v:groupcontext="foregroundPage">	<v:userdefs>		<v:ud v:nameu="msvThemeOrder" v:val="VT0(0):26"></v:ud>	</v:userdefs>	<title>Page-1</title>	<v:pageproperties v:drawingscale="1" v:pagescale="1" v:drawingunits="0" v:shadowoffsetx="9" v:shadowoffsety="-9"></v:pageproperties>	<g id="shape1-1" v:mid="1" v:groupcontext="shape" transform="translate(19.5,-19.5002)">		<title>Rectangle</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<path d="M0 117 A4.00009 4.00009 -180 0 0 4 121 L753.5 121 A4.00009 4.00009 -180 0 0 757.5 117 L757.5 43 A4.00009 4.00009					 -180 0 0 753.5 39 L4 39 A4.00009 4.00009 -180 0 0 -0 43 L0 117 Z" class="st1"></path>	</g>	<g id="shape2-3" v:mid="2" v:groupcontext="shape" transform="translate(177.472,-60.4977) rotate(-0.00602379)">		<title>Sheet.2</title>		<path d="M0 121 L39.2 121 L39.2 121 L39.56 121" class="st2"></path>	</g>	<g id="shape3-9" v:mid="3" v:groupcontext="shape" transform="translate(29.4085,-29.902) rotate(0.3)">		<title>Rectangle.12</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<path d="M0 118 A3.00007 3.00007 -180 0 0 3 121 L148.26 121 A3.00007 3.00007 -180 0 0 151.26 118 L151.26 62.01 A3.00007					 3.00007 -180 0 0 148.26 59.01 L3 59.01 A3.00007 3.00007 -180 0 0 0 62.01 L0 118 Z" class="st4"></path>	</g>	<g id="shape4-11" v:mid="4" v:groupcontext="shape" transform="translate(63.7851,-41.4926)">		<title>Sheet.4</title>		<desc>Set up workspace</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="40.7827" cy="101.992" width="81.57" height="38.0152"></v:textrect>		<rect x="0" y="82.9851" width="81.5655" height="38.0152" class="st5"></rect>		<text x="5.78" y="106.19" class="st6" v:langid="2052"><v:paragraph v:horizalign="1" v:bulletsize="0.166667"></v:paragraph><v:tablist></v:tablist>搭建工作区</text>		</g>	<g id="shape5-14" v:mid="5" v:groupcontext="shape" transform="translate(225.2,-30.2469) rotate(0.3)">		<title>Rectangle.1004</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<path d="M-0 118 A3.00007 3.00007 -180 0 0 3 121 L148.26 121 A3.00007 3.00007 -180 0 0 151.26 118 L151.26 62.7 A3.00007					 3.00007 -180 0 0 148.26 59.7 L3 59.7 A3.00007 3.00007 -180 0 0 -0 62.7 L0 118 Z" class="st4"></path>	</g>	<g id="shape6-16" v:mid="6" v:groupcontext="shape" transform="translate(226.557,-42.9926)">		<title>Sheet.6</title>		<desc>Enable RT kernel</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="73.8001" cy="103.492" width="147.62" height="35.0152"></v:textrect>		<rect x="0" y="85.9851" width="147.6" height="35.0152" class="st5"></rect>		<text x="33.85" y="108.15" class="st6" v:langid="2052"><v:paragraph v:horizalign="1" v:bulletsize="0.166667"></v:paragraph><v:tablist></v:tablist>启用<tspan class="st7"> </tspan><tspan class="st7" v:langid="1033">RT </tspan>内核</text>		</g>	<g id="shape7-21" v:mid="7" v:groupcontext="shape" transform="translate(420.988,-30.2469) rotate(0.3)">		<title>Rectangle.1005</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<path d="M-0 118 A3.00007 3.00007 -180 0 0 3 121 L148.26 121 A3.00007 3.00007 -180 0 0 151.26 118 L151.26 62.7 A3.00007					 3.00007 -180 0 0 148.26 59.7 L3 59.7 A3.00007 3.00007 -180 0 0 -0 62.7 L0 118 Z" class="st4"></path>	</g>	<g id="shape8-23" v:mid="8" v:groupcontext="shape" transform="translate(422.345,-42.5747)">		<title>Sheet.8</title>		<desc>Configure RT kernel</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="73.7999" cy="103.075" width="147.62" height="35.851"></v:textrect>		<rect x="0" y="85.1493" width="147.6" height="35.851" class="st5"></rect>		<text x="33.85" y="107.73" class="st6" v:langid="2052"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>配置<tspan class="st7"> </tspan><tspan class="st7" v:langid="1033">RT </tspan>内核</text>		</g>	<g id="shape9-28" v:mid="9" v:groupcontext="shape" transform="translate(616.776,-30.2469) rotate(0.3)">		<title>Rectangle.1006</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<path d="M-0 118 A3.00007 3.00007 -180 0 0 3 121 L148.26 121 A3.00007 3.00007 -180 0 0 151.26 118 L151.26 62.7 A3.00007					 3.00007 -180 0 0 148.26 59.7 L3 59.7 A3.00007 3.00007 -180 0 0 -0 62.7 L0 118 Z" class="st4"></path>	</g>	<g id="shape10-30" v:mid="10" v:groupcontext="shape" transform="translate(643.537,-40.1279)">		<title>Sheet.10</title>		<desc>Verify kernel configurations</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(4,4,4,4)"></v:textblock>		<v:textrect cx="49.2313" cy="100.628" width="98.48" height="40.7446"></v:textrect>		<rect x="0" y="80.2557" width="98.4627" height="40.7446" class="st5"></rect>		<text x="7.23" y="104.83" class="st6" v:langid="2052"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>验证内核配置</text>		</g>	<g id="shape11-33" v:mid="11" v:groupcontext="shape" transform="translate(373.836,-60.0851) rotate(-1.01902)">		<title>Sheet.11</title>		<path d="M0 121 L36.49 121 L36.49 121 L36.85 121" class="st2"></path>	</g>	<g id="shape12-38" v:mid="12" v:groupcontext="shape" transform="translate(569.625,-60.0851) rotate(-1.01902)">		<title>Sheet.12</title>		<path d="M0 121 L36.49 121 L36.49 121 L36.85 121" class="st2"></path>	</g></g>
</svg>

**图：编译顺序**

## 设置工作区

Qualcomm Linux 内核支持 LTS RT 内核 (6.6.x)，该内核通过 `recipes-kernel/linux/linux-kernel-qcom-rt_6.6.bb` 文件中 `meta-qcom-realtime` 层的 Yocto 配方维护。

Qualcomm Linux 中的 Linux RT 内核配方称为 `linux-qcom-base-rt`。

有关克隆工作区和获取所有 Qualcomm Linux meta 层以使用 Qualcomm RT Linux 的更多信息，请参阅[通过实时 Linux 进行同步和编译](https://docs.qualcomm.com/bundle/publicresource/topics/80-70022-254/how_to.html#sync-and-build-with-real-time-linux)。

## 启用 RT 内核

Qualcomm Linux `meta-qcom-realtime` 层支持 `linux-qcom-base-rt` 配方，该配方默认为受支持的机器获取并编译 Qualcomm Linux 内核。

`meta-qcom-realtime` 层在现有层之上应用更改。在内核编译期间，`meta-qcom-realtime` 层根据内核版本附加上游 `PREEMPT_RT` 补丁，并允许实时配置。

Note

- 定制 BSP 使用 [linux-qcom-custom-rt_6.6.bb](https://github.com/quic-yocto/meta-qcom-realtime/blob/kirkstone/recipes-kernel/linux/linux-qcom-custom-rt_6.6.bb)。
- 基本 BSP 使用 [linux-qcom-base-rt_6.6.bb](https://github.com/quic-yocto/meta-qcom-realtime/blob/kirkstone/recipes-kernel/linux/linux-qcom-base-rt_6.6.bb)。

以下是 RT 基本参考文件的示例代码：

require recipes-kernel/linux/linux-qcom-base-rt_6.6.bb
    
    SECTION = "RT kernel"
    SUMMARY = "Linux Real time kernel for QCOM devices"
    DESCRIPTION = "Recipe to build real time Linux kernel"
    
    SRC_URI:append = "https://cdn.kernel.org/pub/linux/kernel/projects/rt/6.6/older/patch-6.6.14-rt21.patch.gz;md5sum=91969a704a73aa918c89d3027bdd3634 \
                   file://qcom_rt.cfg \
                   file://0001-arch-Kconfig-Add-RT-kernel-support.patch \
    
    S = "${WORKDIR}/kernel"
    KERNEL_CONFIG_FRAGMENTS:append = " ${WORKDIR}/qcom_rt.cfg"
    Copy to clipboard

有关受支持机器的更多信息，请参阅[确定支持的 Qualcomm 主机](https://docs.qualcomm.com/doc/80-70022-3SC/topic/getting_started_chapter2.html#supported-machines)。

## 配置 RT 内核

- 按照以下步骤配置 RT 内核：

SRC_URI:append = "https://cdn.kernel.org/pub/linux/kernel/projects/rt/6.6/older/patch-6.6.14-rt21.patch.gz;md5sum=91969a704a73aa918c89d3027bdd3634 \
                   file://qcom_rt.cfg \
                   file://0001-arch-Kconfig-Add-RT-kernel-support.patch \
    Copy to clipboard

- 在 RT 内核上应用外部配置：

    - 维护 `meta-qcom-realtime/recipes-kernel/linux/linux-qcom-base-rt/configs/qcom_rt.cfg` 配方的配置文件。
    - 将配置文件附加到 `meta-qcom-realtime/recipes-kernel/linux/linux-qcom-base-rt_6.6.bb` 文件中的 `KERNEL_CONFIG_FRAGMENTS`。
- 要向 RT 内核添加配置片段，请进行以下更改：

KERNEL_CONFIG_FRAGMENTS:append = " ${WORKDIR}/qcom_rt.cfg"
        Copy to clipboard
- 要修改内核命令行，请将命令行参数添加到 `meta-qcom-realtime/conf/layer.conf` 文件中。
- 以下示例展示了如何修改命令行：

KERNEL_CMDLINE_EXTRA = "root=/dev/disk/by-partlabel/system rw rootwait console=ttyMSM0,115200n8 pcie_pme=nomsi earlycon idle=poll skew_tick=1 rcu_nocbs=1-3 rcu_nocb_poll nohz_full=1-3 irqaffinity=4-7 isolcpus=1-3"
        Copy to clipboard

## RT 内核的内核配置

RT 内核中使用了可选和必选内核配置。

若要在 RT 内核中启用完全抢占，使用 `CONFIG_PREEMPT_RT`。

`CONFIG_PREEMPT_RT` 标志默认为启用状态，作为 `linux-qcom-base-rt_6.6.bb` 配方的一部分。

以下示例展示了内核配置：

# CONFIG_PREEMPT_RT
      zcat proc/config.gz | grep CONFIG_PREEMPT
    # CONFIG_PREEMPT_NONE is not set
    # CONFIG_PREEMPT_VOLUNTARY is not set
    # CONFIG_PREEMPT is not set
    CONFIG_PREEMPT_RT=y
    Copy to clipboard

使用以下配置优化 RT 内核响应：

# CONFIG_NO_HZ
      zcat proc/config.gz | grep NO_HZ
    CONFIG_NO_HZ_COMMON=y
    # CONFIG_NO_HZ_IDLE is not set
    CONFIG_NO_HZ_FULL=y
    # CONFIG_NO_HZ is not set
    
    #CONFIG_CPUSETS
     zcat proc/config.gz | grep CPUSETS
    CONFIG_CPUSETS=y
    Copy to clipboard

在绑定 RT 任务时设置以下内核配置选项：

- `CONFIG_NO_HZ_FULL` - 启用后，它会配置内核以避免向具有单个可运行任务的 CPU 发送调度时钟中断信号。
- `CONFIG_CPUSETS` - 使用 `CONFIG_CPUSETS` 配置选项以启用 `cpuset`，其中 CPU 被分组形成一个集合。

将 RT 任务绑定到一组 CPU 时，使用 `CONFIG_CPUSETS` 配置选项：

<!--?xml version="1.0" encoding="UTF-8" standalone="no"?-->

<!-- Generated by Microsoft Visio, SVG Export compile-RT-kernel.svg Page-1 -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="11.0278in" height="2.04638in" viewbox="0 0 794.002 147.339" xml:space="preserve" color-interpolation-filters="sRGB" class="st8" aria-label="RT 内核验证的表示。"><v:documentproperties v:langid="1033">	<v:userdefs>		<v:ud v:nameu="msvSubprocessMaster" v:prompt="" v:val="VT4(Rectangle)"></v:ud>		<v:ud v:nameu="msvNoAutoConnect" v:val="VT0(1):26"></v:ud>	</v:userdefs></v:documentproperties>
<style>.svg-3 .st1 { fill: #fafafa; stroke: #d2d7e1; stroke-width: 1.5 }
.svg-3 .st2 { fill: #6280cc; stroke: #6280cc; stroke-width: 0.750002 }
.svg-3 .st3 { fill: none; stroke: none; stroke-width: 2.50001 }
.svg-3 .st4 { fill: #ffffff; font-family: SimHei; font-size: 1.16666em }
.svg-3 .st5 { font-family: Arial; font-size: 1em }
.svg-3 .st6 { marker-end: url("#mrkr4-29"); stroke: #000000; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.75 }
.svg-3 .st7 { fill: #000000; fill-opacity: 1; stroke: #000000; stroke-opacity: 1; stroke-width: 0.40983655296977 }
.svg-3 .st8 { fill: none; fill-rule: evenodd; font-size: 12px; overflow: visible; stroke-linecap: square; stroke-miterlimit: 3 }</style>
<defs id="Markers">	<g id="lend4">		<path d="M 2 1 L 0 0 L 2 -1 L 2 1 " style="stroke:none"></path>	</g>	<marker id="mrkr4-29" class="st7" v:arrowtype="4" v:arrowsize="2" v:setback="4.87999" refx="-4.8799941964852" orient="auto" markerunits="strokeWidth" overflow="visible">		<use xlink:href="#lend4" transform="scale(-2.4399970982426,-2.4399970982426) "></use>	</marker></defs><g v:mid="0" v:index="1" v:groupcontext="foregroundPage">	<v:userdefs>		<v:ud v:nameu="msvThemeOrder" v:val="VT0(0):26"></v:ud>	</v:userdefs>	<title>Page-1</title>	<v:pageproperties v:drawingscale="1" v:pagescale="1" v:drawingunits="0" v:shadowoffsetx="9.00002" v:shadowoffsety="-9.00002"></v:pageproperties>	<g id="shape1-1" v:mid="1" v:groupcontext="shape" transform="translate(19.5,-25.7966)">		<title>Rectangle.1012</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<path d="M0 143.34 A4.0001 4.0001 -180 0 0 4 147.34 L751 147.34 A4.0001 4.0001 -180 0 0 755 143.34 L755 51.19 A4.0001					 4.0001 -180 0 0 751 47.19 L4 47.19 A4.0001 4.0001 -180 0 0 -0 51.19 L0 143.34 Z" class="st1"></path>	</g>	<g id="shape2-3" v:mid="2" v:groupcontext="shape" transform="translate(607.143,-39.1556) rotate(0.3)">		<title>Rectangle.1006</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<path d="M0 144.46 A2.88007 2.88007 -180 0 0 2.88 147.34 L149.87 147.34 A2.88007 2.88007 -180 0 0 152.75 144.46 L152.75					 79.02 A2.88007 2.88007 -180 0 0 149.87 76.14 L2.88 76.14 A2.88007 2.88007 -180 0 0 0 79.02 L0 144.46 Z" class="st2"></path>	</g>	<g id="shape3-5" v:mid="3" v:groupcontext="shape" transform="translate(416.205,-40.185) rotate(0.3)">		<title>Rectangle.1005</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<path d="M0 144.46 A2.88007 2.88007 -180 0 0 2.88 147.34 L149.87 147.34 A2.88007 2.88007 -180 0 0 152.75 144.46 L152.75					 79.02 A2.88007 2.88007 -180 0 0 149.87 76.14 L2.88 76.14 A2.88007 2.88007 -180 0 0 0 79.02 L0 144.46 Z" class="st2"></path>	</g>	<g id="shape4-7" v:mid="4" v:groupcontext="shape" transform="translate(225.265,-41.2143) rotate(0.3)">		<title>Rectangle.1004</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<path d="M0 144.46 A2.88007 2.88007 -180 0 0 2.88 147.34 L149.87 147.34 A2.88007 2.88007 -180 0 0 152.75 144.46 L152.75					 79.02 A2.88007 2.88007 -180 0 0 149.87 76.14 L2.88 76.14 A2.88007 2.88007 -180 0 0 0 79.02 L0 144.46 Z" class="st2"></path>	</g>	<g id="shape5-9" v:mid="5" v:groupcontext="shape" transform="translate(606.61,-30.1402)">		<title>Sheet.5</title>		<desc>Tune RT kernel</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(4.00001,4.00001,4.00001,4.00001)"></v:textblock>		<v:textrect cx="76.3767" cy="100.816" width="152.77" height="93.0469"></v:textrect>		<rect x="0" y="54.2925" width="152.753" height="93.0469" class="st3"></rect>		<text x="35.16" y="105.37" class="st4" v:langid="2052"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>调整<tspan class="st5"> </tspan><tspan class="st5" v:langid="1033">RT </tspan>内核</text>		</g>	<g id="shape6-14" v:mid="6" v:groupcontext="shape" transform="translate(421.975,-23.494)">		<title>Sheet.6</title>		<desc>Debug RT kernel</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(4.00001,4.00001,4.00001,4.00001)"></v:textblock>		<v:textrect cx="70.0119" cy="94.1698" width="140.04" height="106.339"></v:textrect>		<rect x="0" y="41.0001" width="140.024" height="106.339" class="st3"></rect>		<text x="28.79" y="98.72" class="st4" v:langid="2052"><v:paragraph v:horizalign="1"></v:paragraph><v:tablist></v:tablist>调试<tspan class="st5"> </tspan><tspan class="st5" v:langid="1033">RT </tspan>内核</text>		</g>	<g id="shape7-19" v:mid="7" v:groupcontext="shape" transform="translate(224.719,-39.2787)">		<title>Sheet.7</title>		<desc>Test RT kernel</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(4.00001,4.00001,4.00001,4.00001)"></v:textblock>		<v:textrect cx="76.3767" cy="109.954" width="152.77" height="74.7699"></v:textrect>		<rect x="0" y="72.5695" width="152.753" height="74.7699" class="st3"></rect>		<text x="35.16" y="114.51" class="st4" v:langid="2052"><v:paragraph v:horizalign="1" v:bulletsize="0.166667"></v:paragraph><v:tablist></v:tablist>测试<tspan class="st5"> </tspan><tspan class="st5" v:langid="1033">RT </tspan>内核</text>		</g>	<g id="shape8-24" v:mid="8" v:groupcontext="shape" transform="translate(378.23,-76.7658) rotate(0.313268)">		<title>Sheet.8</title>		<path d="M0 147.34 L29.65 147.34 L29.65 147.34" class="st6"></path>	</g>	<g id="shape9-30" v:mid="9" v:groupcontext="shape" transform="translate(569.168,-76.7658) rotate(0.313268)">		<title>Sheet.9</title>		<path d="M0 147.34 L29.65 147.34 L29.65 147.34" class="st6"></path>	</g>	<g id="shape10-35" v:mid="10" v:groupcontext="shape" transform="translate(34.3127,-41.1897) rotate(0.3)">		<title>Rectangle.12</title>		<v:userdefs>			<v:ud v:nameu="visVersion" v:val="VT0(15):26"></v:ud>		</v:userdefs>		<path d="M0 144.46 A2.88007 2.88007 -180 0 0 2.88 147.34 L149.87 147.34 A2.88007 2.88007 -180 0 0 152.75 144.46 L152.75					 78.16 A2.88007 2.88007 -180 0 0 149.87 75.28 L2.88 75.28 A2.88007 2.88007 -180 0 0 -0 78.16 L0 144.46 Z" class="st2"></path>	</g>	<g id="shape11-37" v:mid="11" v:groupcontext="shape" transform="translate(33.7707,-39.2787)">		<title>Sheet.11</title>		<desc>Build RT kernel</desc>		<v:userdefs></v:userdefs>		<v:textblock v:margins="rect(4.00001,4.00001,4.00001,4.00001)"></v:textblock>		<v:textrect cx="76.3767" cy="109.954" width="152.77" height="74.7699"></v:textrect>		<rect x="0" y="72.5695" width="152.753" height="74.7699" class="st3"></rect>		<text x="35.16" y="114.51" class="st4" v:langid="2052"><v:paragraph v:horizalign="1" v:bulletsize="0.166667"></v:paragraph><v:tablist></v:tablist>编译<tspan class="st5"> </tspan><tspan class="st5" v:langid="1033">RT </tspan>内核</text>		</g>	<g id="shape12-42" v:mid="12" v:groupcontext="shape" transform="translate(187.329,-76.7658) rotate(0.313268)">		<title>Sheet.12</title>		<path d="M0 147.34 L29.65 147.34 L29.65 147.34" class="st6"></path>	</g></g>
</svg>

**图：RT 内核验证**

## 编译 RT 内核

要编译 RT 内核，请运行以下命令：

MACHINE=<SoC>-<board>-<variant> DISTRO=qcom-wayland QCOM_SELECTED_BSP=base source setup-environment
    
    #verify realtime layer is present
    
    bitbake-layers show-layers | grep realtime
       meta-qcom-realtime    /layers/meta-qcom-realtime  12
    
    # compile
      bitbake qcom-console-image
    Copy to clipboard

## 测试 RT 内核

Linux 基金会 RT 测试套件中提供了一组测试。

cyclic 测试可确定 RT 应用在最好和最坏情况下的延迟。

1. 如需获取 RT 测试套件源代码，可访问 [rt-tests/rt-tests.git](https://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git/)。
2. 若要将 RT 测试套件包括在镜像中，可更改标准 Yocto 编译版本中的 `layer.conf` 文件：

IMAGE_INSTALL:append = "rt-tests numactl"
        Copy to clipboard
3. 运行以下 cyclic 测试：

cgexec -g cpuset:core1-3 cyclictest -a 1-3 -t 3 -m -l 100000000 -i 1000 -p 99 -h 800
        Copy to clipboard

有关更多信息，请参见 [RT-Tests](https://wiki.linuxfoundation.org/realtime/documentation/howto/tools/rt-tests)。

## 调整 RT 内核

调整 RT 内核，以为设备中的 RT 任务实现确定性延迟。

将运行 RT 任务的 CPU 内核设置为以最高工作频率运行，同时防止 CPU 频率的温升调节。例如，在空闲休眠场景中，RT 任务会因 CPU 唤醒存在时间延迟而面临调度延迟。

对于具有 8 个 CPU 核心的系统，使用以下系统配置：

- 以下示例中所述的 RT 任务绑定至核心 1-3。
- CPU 核心 1-3 以隔离模式运行，所有读-写-更新 (RCU) 操作都绑定至核心 4-7。
- IRQ 在内核命令行参数中绑定至核心 4-7。
- CPU 核心 1-3 禁用系统休眠，并设置为以最高频率运行。

# Disable low power mode and sleep for CPU 1-3
          echo 1 > /sys/devices/system/cpu/cpu1/cpuidle/state2/disable
          echo 1 > /sys/devices/system/cpu/cpu1/cpuidle/state1/disable
          echo 1 > /sys/devices/system/cpu/cpu1/cpuidle/state0/disable
          echo 1 > /sys/devices/system/cpu/cpu2/cpuidle/state0/disable
          echo 1 > /sys/devices/system/cpu/cpu2/cpuidle/state1/disable
          echo 1 > /sys/devices/system/cpu/cpu2/cpuidle/state2/disable
          echo 1 > /sys/devices/system/cpu/cpu3/cpuidle/state2/disable
          echo 1 > /sys/devices/system/cpu/cpu3/cpuidle/state1/disable
          echo 1 > /sys/devices/system/cpu/cpu3/cpuidle/state0/disable
        
        # Enable max freq for cpu group 0-3
          echo 1958400 > /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq
        
          echo performance > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
        
        # form cgroup for core 0-3
          mkdir /sys/fs/cgroup/cpuset/core0/
          mkdir /sys/fs/cgroup/cpuset/core1/
          mkdir /sys/fs/cgroup/cpuset/core2/
          mkdir /sys/fs/cgroup/cpuset/core3/
        
          echo 0 > /sys/fs/cgroup/cpuset/core0/cpuset.mems
          echo 0 > /sys/fs/cgroup/cpuset/core1/cpuset.mems
          echo 0 > /sys/fs/cgroup/cpuset/core2/cpuset.mems
          echo 0 > /sys/fs/cgroup/cpuset/core3/cpuset.mems
        
          echo 0 > /sys/fs/cgroup/cpuset/core0/cpuset.cpus
          echo 1 > /sys/fs/cgroup/cpuset/core1/cpuset.cpus
          echo 2 > /sys/fs/cgroup/cpuset/core2/cpuset.cpus
          echo 3 > /sys/fs/cgroup/cpuset/core3/cpuset.cpus
        
          mkdir /sys/fs/cgroup/cpuset/core1-3/
          echo 0 > /sys/fs/cgroup/cpuset/core1-3/cpuset.mems
          echo 1-3 > /sys/fs/cgroup/cpuset/core1-3/cpuset.cpus
        Copy to clipboard

以下示例展示了如何在 `meta-qcom-realtime/conf/layer.conf` 中添加内核命令行参数以禁用 RCU 回调 (**rcu\_nocbs**)。

- CPU 核心 1-3
- IRQ 绑定至核心 4-7
- 隔离 CPU 1-3

KERNEL_CMDLINE_EXTRA = "root=/dev/disk/by-partlabel/system rw rootwait console=ttyMSM0,115200n8 pcie_pme=nomsi earlycon skew_tick=1 **rcu\_nocbs**=1-3 rcu_nocb_poll nohz_full=1-3 irqaffinity=4-7 isolcpus=1-3"
    Copy to clipboard

Last Published: Nov 04, 2025

[Previous Topic
配置 pinctrl 驱动程序](https://docs.qualcomm.com/bundle/publicresource/80-70022-3SC/topics/pinctrl-configuration.md) [Next Topic
启用虚拟化](https://docs.qualcomm.com/bundle/publicresource/80-70022-3SC/topics/virtualization.md)