chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

國(guó)產(chǎn)!全志T113-i 雙核Cortex-A7@1.2GHz 工業(yè)開(kāi)發(fā)板—Linux-RT應(yīng)用開(kāi)發(fā)案例

Tronlong創(chuàng)龍科技 ? 來(lái)源:wtbl物通博聯(lián) ? 作者:wtbl物通博聯(lián) ? 2025-07-30 10:33 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

?前言

本文適用開(kāi)發(fā)環(huán)境如下:

Windows開(kāi)發(fā)環(huán)境:Windows 7 64bit、Windows 10 64bit

虛擬機(jī):VMware15.5.5

Linux開(kāi)發(fā)環(huán)境:Ubuntu18.04.464bit

LinuxSDK:T113_Tina5.0-V1.0(Linux)

Kernel:Linux-RT-5.4.61

我司提供的Linux-RT內(nèi)核應(yīng)用了開(kāi)源的RT PREEMPT機(jī)制進(jìn)行補(bǔ)丁。PREEMPT_RT補(bǔ)丁的關(guān)鍵是最小化不可搶占的內(nèi)核代碼量,同時(shí)最小化必須更改的代碼量,以便提供這種附加的可搶占性。PREEMPT_RT補(bǔ)丁利用Linux內(nèi)核的SMP功能來(lái)添加這種額外的搶占性,而不需要完整的內(nèi)核重寫。Linux-RT內(nèi)核增加PREEMPT_RT補(bǔ)丁后,增加了系統(tǒng)響應(yīng)的確定性和實(shí)時(shí)性,但是代價(jià)是CPU性能降低。

Linux-RT內(nèi)核與普通Linux內(nèi)核相比,幾個(gè)主要的相同之處是:

具有相同的開(kāi)發(fā)生態(tài)系統(tǒng),包括相同工具鏈、文件系統(tǒng)和安裝方法,以及相同的POSIX API等。

仍然存在內(nèi)核空間和用戶空間的劃分。

Linux應(yīng)用程序在用戶空間中運(yùn)行。

Linux-RT內(nèi)核與普通Linux內(nèi)核在常規(guī)編程方式上的幾個(gè)主要不同之處是:

調(diào)度策略。

優(yōu)先級(jí)和內(nèi)存控制。

基于Linux-RT內(nèi)核的應(yīng)用程序使用了調(diào)度策略后,系統(tǒng)將根據(jù)調(diào)度策略對(duì)其進(jìn)行調(diào)優(yōu)。

Linux系統(tǒng)實(shí)時(shí)性測(cè)試

本章節(jié)主要介紹使用Cyclictest延遲檢測(cè)工具測(cè)試Linux系統(tǒng)實(shí)時(shí)性的方法。Cyclictest是rt-tests測(cè)試套件下的一個(gè)測(cè)試工具,也是rt-tests下使用最廣泛的測(cè)試工具,一般主要用來(lái)測(cè)試內(nèi)核的延遲,從而判斷內(nèi)核的實(shí)時(shí)性。

我司默認(rèn)使用是的Linux內(nèi)核,同時(shí)提供了Linux-RT內(nèi)核位于產(chǎn)品資料“4-軟件資料LinuxKernelimagelinux-5.4-[版本號(hào)]-[Git系列號(hào)]nand”目錄下,請(qǐng)按照如下方法替換為L(zhǎng)inux-RT內(nèi)核。

將Linux-RT內(nèi)核鏡像boot-rt.fex和Linux-RT內(nèi)核配套的內(nèi)核模塊目錄modules-rt拷貝至Ubuntu工作目錄下,執(zhí)行如下命令,進(jìn)入modules-rt目錄下將Linux-RT內(nèi)核模塊壓縮包解壓。

Host# cd modules-rt/

Host# tar -zxf 5.4.61-rt37-gb1bd4aa.tar.gz

wKgZPGiJgkOAcU3GAADUJp2-e40972.png圖 1

將內(nèi)核鏡像和解壓后的內(nèi)核模塊拷貝至評(píng)估板文件系統(tǒng)任意目錄下。執(zhí)行如下命令,分別替換內(nèi)核鏡像和內(nèi)核模塊至Linux系統(tǒng)啟動(dòng)卡,評(píng)估板重啟生效。

備注:若使用eMMC配置評(píng)估板,請(qǐng)使用emmc目錄下的Linux-RT內(nèi)核鏡像和Linux-RT內(nèi)核模塊,并修改Linux系統(tǒng)啟動(dòng)卡對(duì)應(yīng)設(shè)備節(jié)點(diǎn)為"/dev/mmcblk1p4"。

Target# dd if=boot-rt.fexof=/dev/mmcblk0p4

Target# rm /lib/modules/* -rf

Target# cp 5.4.61-rt37-gb1bd4aa/ /lib/modules/ -r

Target# sync

Target# reboot

wKgZPGiJgnWABpYgAAAfIhU_Bbc484.png圖 2

wKgZPGiJgn6AGPhNAAAedmvKK4c974.png圖 3Linux-RT內(nèi)核

Cyclictest工具簡(jiǎn)介

Cyclictest常用于實(shí)時(shí)系統(tǒng)的基準(zhǔn)測(cè)試,是評(píng)估實(shí)時(shí)系統(tǒng)相對(duì)性能的最常用工具之一。Cyclictest反復(fù)測(cè)量并精確統(tǒng)計(jì)線程的實(shí)際喚醒時(shí)間,以提供有關(guān)系統(tǒng)的延遲信息。它可測(cè)量由硬件、固件和操作系統(tǒng)引起的實(shí)時(shí)系統(tǒng)的延遲。

為了測(cè)量延遲,Cyclictest運(yùn)行一個(gè)非實(shí)時(shí)主線程(調(diào)度類SCHED_OTHER),該線程以定義的實(shí)時(shí)優(yōu)先級(jí)(調(diào)度類SCHED_FIFO)啟動(dòng)定義數(shù)量的測(cè)量線程。測(cè)量線程周期性地被一個(gè)到期的計(jì)時(shí)器(循環(huán)報(bào)警)所定義的間隔喚醒,隨后計(jì)算有效喚醒時(shí)間,并通過(guò)共享內(nèi)存將其傳遞給主線程。主線程統(tǒng)計(jì)延遲值并打印最小、最大和平均延遲時(shí)間。

參考鏈接:https://wiki.linuxfoundation.org/realtime/documentation/howto/tools/cyclictest/start?s[]=cyclictest。

使用Cyclictest測(cè)試系統(tǒng)實(shí)時(shí)性

本次測(cè)試對(duì)比基于Linux-RT-5.4.61內(nèi)核和Linux-5.4.61內(nèi)核的Linux系統(tǒng)實(shí)時(shí)性。參照如下步驟,結(jié)合Iperf和Cyclictest工具測(cè)試系統(tǒng)的實(shí)時(shí)性。此處使用Iperf工具不斷觸發(fā)系統(tǒng)中斷,提高中斷處理負(fù)載,以便更好測(cè)試系統(tǒng)實(shí)時(shí)特性。

在Ubuntu執(zhí)行如下命令查看IP地址,并以服務(wù)器模式啟動(dòng)Iperf測(cè)試。

Host# ifconfig

Host# iperf-s

wKgZO2iJgomAUkJ-AAFCTUcmfwk381.png圖 4

分別使用Linux-RT-5.4.61內(nèi)核和Linux-5.4.61內(nèi)核啟動(dòng)評(píng)估板,執(zhí)行如下命令以客戶端模式啟動(dòng)Iperf,并連接至服務(wù)器端(Ubuntu系統(tǒng))。"192.168.1.209"為Ubuntu的IP地址,"-t3600"指定測(cè)試時(shí)間為3600秒,"&"表示讓程序在后臺(tái)運(yùn)行。

Target# iperf -c 192.168.1.209 -d -t3600 > /dev/null 2>&1 &

wKgZPGiJgpCAHBFOAAAL8S5d9Is535.png圖 5

執(zhí)行如下命令使用Cyclictest程序測(cè)試系統(tǒng)實(shí)時(shí)性。

Target# cyclictest -t5 -p98 -m -n -D10m

wKgZO2iJgpiAUUVvAABJFH6whhE090.png

wKgZO2iJgqWAaut7AABQvpuPY54076.png圖 7Linux-5.4.61內(nèi)核測(cè)試結(jié)果

wKgZPGiJgrCAc7xXAAAnst9WFrQ572.png表 1Cyclictest測(cè)試結(jié)果說(shuō)明

對(duì)比測(cè)試數(shù)據(jù),可看到基于Linux-RT-5.4.61內(nèi)核的系統(tǒng)的延遲更加穩(wěn)定,平均延遲、最大延遲更低,系統(tǒng)實(shí)時(shí)性更佳。

Cyclictest命令參數(shù)解析可執(zhí)行"cyclictest --help"查看,如下圖所示。

wKgZO2iJgxGAB78WAACnbphmej8279.png圖 8

wKgZPGiJgxmATRPCAAA-m0Tb4IU219.png圖 9

Linux-RT性能測(cè)試

本次測(cè)試分別在CPU空載、滿負(fù)荷(運(yùn)行stress壓力測(cè)試工具)、隔離CPU核心的情況下,對(duì)比評(píng)估Linux-RT內(nèi)核的系統(tǒng)實(shí)時(shí)性。

CPU空載狀態(tài)

評(píng)估板上電啟動(dòng),進(jìn)入評(píng)估板文件系統(tǒng)執(zhí)行如下命令,修改內(nèi)核printk日志等級(jí),避免內(nèi)核打印信息影響實(shí)時(shí)測(cè)試。

Target# echo 1 > /proc/sys/kernel/printk

調(diào)整內(nèi)存分配策略為“2”,禁用內(nèi)存過(guò)度使用。避免出現(xiàn)OOM(Out-of-Memory) Killer攻擊某些進(jìn)程而產(chǎn)生延遲,影響測(cè)試結(jié)果。

Target# echo 2 > /proc/sys/vm/overcommit_memory

wKgZPGiJgyOASjD3AAAMyD064fI869.png圖 10

執(zhí)行如下命令,基于CPU空載狀況下測(cè)試系統(tǒng)的實(shí)時(shí)性。測(cè)試指令需運(yùn)行12小時(shí),請(qǐng)保持評(píng)估板長(zhǎng)時(shí)間穩(wěn)定工作,測(cè)試完成后將生成統(tǒng)計(jì)結(jié)果output文件。

Target# cyclictest -m -n -Sp99 -i1000 -h800 -D12h -q > output

wKgZO2iJgy2AWUa2AAAPN9uqlOk070.png圖 11

參數(shù)解析:

-m:鎖定當(dāng)前和將來(lái)的內(nèi)存分配;

-n:使用clock_nanosleep;

-S:采用標(biāo)準(zhǔn)SMP測(cè)試;

-p:設(shè)置線程優(yōu)先級(jí);

-i:設(shè)置線程的基本間隔;

-h:運(yùn)行后將延遲直方圖轉(zhuǎn)儲(chǔ)至標(biāo)準(zhǔn)輸出,亦可指定要跟蹤的最大延時(shí)時(shí)間(以微秒為單位);

-D:指定測(cè)試運(yùn)行時(shí)長(zhǎng),附加m(分鐘)、h(小時(shí))、d(天)指定;

-q:運(yùn)行時(shí)不打印相關(guān)信息;

CPU滿負(fù)荷狀態(tài)

評(píng)估板上電啟動(dòng),進(jìn)入評(píng)估板文件系統(tǒng)執(zhí)行如下命令,修改內(nèi)核printk日志等級(jí),避免內(nèi)核打印信息影響實(shí)時(shí)測(cè)試。

Target# echo 1 > /proc/sys/kernel/printk

調(diào)整內(nèi)存分配策略為“2”,禁用內(nèi)存過(guò)度使用。避免出現(xiàn)OOM(Out-of-Memory) Killer攻擊某些進(jìn)程而產(chǎn)生延遲,影響測(cè)試結(jié)果。

Target# echo 2 > /proc/sys/vm/overcommit_memory

wKgZPGiJgyOASjD3AAAMyD064fI869.png圖 12

執(zhí)行如下命令,運(yùn)行stress壓力測(cè)試工具,使得CPU處于滿負(fù)荷狀態(tài)。再使用cyclictest工具測(cè)試CPU滿負(fù)荷狀態(tài)下的系統(tǒng)實(shí)時(shí)性能。測(cè)試指令需運(yùn)行12小時(shí),請(qǐng)保持評(píng)估板長(zhǎng)時(shí)間穩(wěn)定工作,測(cè)試完成后將生成統(tǒng)計(jì)結(jié)果output文件。

Target# stress --cpu 2--io 2--vm 2--vm-bytes 32M --timeout43200s &

Target# cyclictest -m -n -Sp99 -i1000 -h800 -D12h -q > output

wKgZO2iJgzyAX-MaAAAn86XXx-0190.png圖 13

參數(shù)解析:

--cpu:指定壓力測(cè)試的進(jìn)程個(gè)數(shù);

--io:指定I/O測(cè)試的進(jìn)程個(gè)數(shù);

--vm:指定內(nèi)存測(cè)試的進(jìn)程個(gè)數(shù);

--vm-bytes:指定每個(gè)內(nèi)存測(cè)試進(jìn)程中分配內(nèi)存的大??;

--timeout:指定測(cè)試時(shí)長(zhǎng);

隔離CPU核心狀態(tài)

本次測(cè)試以隔離CPU1核心為例,通過(guò)降低系統(tǒng)上所運(yùn)行的其他進(jìn)程對(duì)隔離CPU1產(chǎn)生的延遲影響,確保CPU1進(jìn)程的正常運(yùn)行,進(jìn)而評(píng)估Linux-RT內(nèi)核的系統(tǒng)實(shí)時(shí)性。

評(píng)估板上電啟動(dòng)后,在U-Boot倒計(jì)時(shí)結(jié)束之前按下空格鍵進(jìn)入U(xiǎn)-Boot命令行模式,執(zhí)行如下命令,修改環(huán)境變量,隔離CPU1核心。

U-Boot# setenv setargs_sd setenv bootargs clk_ignore_unused initcall_debug=${initcall_debug} console=${console} loglevel=${loglevel} root=${sd_root} init=${init} partitions=${partitions} cma=${cma} snum=${snum} mac_addr=${mac} wifi_mac=${wifi_mac} bt_mac=${bt_mac} specialstr=${specialstr} gpt=1 isolcpus=1

U-Boot# setenv setargs_nand_ubi setenv bootargs ubi.mtd=${mtd_name} clk_ignore_unused initcall_debug=${initcall_debug} console=${console} loglevel=${loglevel} root=${nand_root} rootfstype=${rootfstype} init=${init} partitions=${partitions} cma=${cma} snum=${snum} mac_addr=${mac} wifi_mac=${wifi_mac} bt_mac=${bt_mac} specialstr=${specialstr} gpt=1 isolcpus=1

U-Boot# saveenv

U-Boot# reset

wKgZO2iJg0OALZrAAABMNrMzXfI431.png圖 14

備注:若為eMMC配置評(píng)估板,請(qǐng)執(zhí)行如下命令,修改環(huán)境變量,隔離CPU1核心。

U-Boot# setenv setargs_emmc setenv bootargs clk_ignore_unused initcall_debug=${initcall_debug} console=${console} loglevel=${loglevel} root=${emmc_root} init=${init} partitions=${partitions} cma=${cma} snum=${snum} mac_addr=${mac} wifi_mac=${wifi_mac} bt_mac=${bt_mac} specialstr=${specialstr} gpt=1 isolcpus=1

U-Boot# setenv setargs_sd setenv bootargs clk_ignore_unused initcall_debug=${initcall_debug} console=${console} loglevel=${loglevel} root=${sd_root} init=${init} partitions=${partitions} cma=${cma} snum=${snum} mac_addr=${mac} wifi_mac=${wifi_mac} bt_mac=${bt_mac} specialstr=${specialstr} gpt=1 isolcpus=1

U-Boot# saveenv

U-Boot# reset

進(jìn)入評(píng)估板文件系統(tǒng),執(zhí)行如下命令,修改內(nèi)核printk日志等級(jí),避免內(nèi)核打印信息影響實(shí)時(shí)測(cè)試。

Target# echo 1 > /proc/sys/kernel/printk

調(diào)整內(nèi)存分配策略為“2”,禁用內(nèi)存過(guò)度使用。避免出現(xiàn)OOM(Out-of-Memory) Killer攻擊某些進(jìn)程而產(chǎn)生延遲,影響測(cè)試結(jié)果。

Target# echo 2 > /proc/sys/vm/overcommit_memory

wKgZPGiJgyOASjD3AAAMyD064fI869.png圖 15

執(zhí)行如下命令,運(yùn)行stress壓力測(cè)試工具,使得CPU處于滿負(fù)荷狀態(tài)。再使用taskset工具將cyclictest測(cè)試程序運(yùn)行在CPU1核心,測(cè)試CPU1核心滿負(fù)荷狀態(tài)下的系統(tǒng)實(shí)時(shí)性能。測(cè)試指令需運(yùn)行12小時(shí),請(qǐng)保持評(píng)估板長(zhǎng)時(shí)間穩(wěn)定工作,測(cè)試完成后將生成統(tǒng)計(jì)結(jié)果output文件。

Target# stress --cpu 2 --io 2 --vm 2 --vm-bytes 32M --timeout 43200s &

Target# taskset -c 0,1 cyclictest -m -n -Sp99 -i1000 -h800 -D12h -q > output

wKgZO2iJg1OADcpwAAAoUkNWjfc293.png圖 16

統(tǒng)計(jì)結(jié)果分析

我司已提供腳本文件get_histogram.sh用于繪制統(tǒng)計(jì)結(jié)果直方圖,位于產(chǎn)品資料“4-軟件資料Demolinux-rt-demosCyclictestbin”目錄下,請(qǐng)將該腳本文件拷貝至Ubuntu工作目錄下。

wKgZPGiJg1qAaS3cAABBIezCxfQ313.png圖 17

在Ubuntu系統(tǒng)執(zhí)行如下命令,安裝gnuplot工具。

Host# sudo apt-get install gnuplot

wKgZPGiJg2GAZUc7AAJ3z-WVvoQ080.png圖 18

CPU空載狀態(tài)

請(qǐng)將CPU空載狀態(tài)下的統(tǒng)計(jì)結(jié)果output文件拷貝至Windows工作目錄,使用Windows文本工具打開(kāi)該文件并拖動(dòng)至文件末尾,可查看Linux系統(tǒng)每個(gè)核心(CPU0~CPU1)的最小延遲(MinLatencies)、平均延遲(AvgLatencies)、最大延遲(MaxLatencies)統(tǒng)計(jì)結(jié)果。

wKgZO2iJg2yAU-99AAAauPQIOSE405.png圖 19

請(qǐng)將CPU空載狀態(tài)下的統(tǒng)計(jì)結(jié)果output文件拷貝至Ubuntu,存放在get_histogram.sh同一目錄下。執(zhí)行如下命令生成直方圖文件plot.png,請(qǐng)將其拷貝至Windows下并打開(kāi)。

Host# ./get_histogram.sh

wKgZO2iJg3eAOHWLAAC1if0x5co986.png圖 20

wKgZPGiJg4GAd0k9AAAX-FTQX0w117.png圖 21

根據(jù)測(cè)試結(jié)果output文件數(shù)據(jù)以及結(jié)合直方圖,可得主要數(shù)據(jù)如下表。本次測(cè)試中,CPU1核心Max Latencies值最大,為59us,CPU0核心的Max Latencies值最小,為52us。

備注:測(cè)試數(shù)據(jù)與實(shí)際測(cè)試環(huán)境有關(guān),僅供參考。

wKgZO2iJg5GALVLkAAATosthYaE599.png表 2

CPU滿負(fù)荷狀態(tài)

參考如上方法,分析CPU滿負(fù)荷狀態(tài)下的統(tǒng)計(jì)結(jié)果如下所示。本次測(cè)試中,CPU0核心Max Latencies值最大,為91us,CPU1核心的Max Latencies值最小,為75us。

wKgZO2iJg5qAQLwBAAAZiqoEYEY201.png圖 22

wKgZO2iJg6GAFX0nAAASzeVxGGY070.png表 3

隔離CPU核心狀態(tài)

參考如上方法,分析隔離CPU核心狀態(tài)下的統(tǒng)計(jì)結(jié)果如下所示。本次測(cè)試中,CPU0核心Max Latencies值最大,為61us,隔離CPU1核心的Max Latencies值最小,為55us。

wKgZO2iJg6yAP80JAAAt_sA33b8387.png圖 23

wKgZPGiJg7aAAErBAAASnampRO8123.png表 4

根據(jù)CPU空載、CPU滿負(fù)荷、隔離CPU核心三種狀態(tài)的測(cè)試結(jié)果可知:當(dāng)程序指定至隔離的CPU1核心上運(yùn)行時(shí),Linux系統(tǒng)延遲最低,可有效提高系統(tǒng)實(shí)時(shí)性。故推薦對(duì)實(shí)時(shí)性要求較高的程序(功能)指定至隔離的CPU核心運(yùn)行。

rt_gpio_ctrl案例

案例說(shuō)明

通過(guò)創(chuàng)建一個(gè)基本的實(shí)時(shí)線程,在線程內(nèi)觸發(fā)LED的電平翻轉(zhuǎn),同時(shí)程序統(tǒng)計(jì)實(shí)時(shí)線程的調(diào)度延時(shí),并通過(guò)示波器測(cè)出LED電平兩次翻轉(zhuǎn)的時(shí)間間隔。由于程序默認(rèn)以最高優(yōu)先級(jí)運(yùn)行,為避免CPU資源被程序完全占用,導(dǎo)致系統(tǒng)被掛起,因此在程序中增加100us的延時(shí)。程序原理大致如下:

(1)在Linux-RT內(nèi)核上創(chuàng)建、使用實(shí)時(shí)線程。

(2)實(shí)時(shí)線程中,計(jì)算出觸發(fā)LED電平翻轉(zhuǎn)的系統(tǒng)調(diào)度延時(shí)。

案例測(cè)試

本小節(jié)測(cè)試以隔離CPU1核心為例,通過(guò)降低系統(tǒng)上所運(yùn)行的其他進(jìn)程對(duì)隔離CPU1產(chǎn)生的延遲影響,確保CPU1進(jìn)程的正常運(yùn)行,進(jìn)而評(píng)估Linux-RT內(nèi)核的系統(tǒng)實(shí)時(shí)性。

評(píng)估板上電啟動(dòng)后,在U-Boot倒計(jì)時(shí)結(jié)束之前按下空格鍵進(jìn)入U(xiǎn)-Boot命令行模式,執(zhí)行如下命令,修改環(huán)境變量,隔離CPU1核心。

U-Boot# setenv setargs_sd setenv bootargs clk_ignore_unused initcall_debug=${initcall_debug} console=${console} loglevel=${loglevel} root=${sd_root} init=${init} partitions=${partitions} cma=${cma} snum=${snum} mac_addr=${mac} wifi_mac=${wifi_mac} bt_mac=${bt_mac} specialstr=${specialstr} gpt=1 isolcpus=1

U-Boot# setenv setargs_nand_ubi setenv bootargs ubi.mtd=${mtd_name} clk_ignore_unused initcall_debug=${initcall_debug} console=${console} loglevel=${loglevel} root=${nand_root} rootfstype=${rootfstype} init=${init} partitions=${partitions} cma=${cma} snum=${snum} mac_addr=${mac} wifi_mac=${wifi_mac} bt_mac=${bt_mac} specialstr=${specialstr} gpt=1 isolcpus=1

U-Boot# saveenv

U-Boot# reset

wKgZO2iJg0OALZrAAABMNrMzXfI431.png圖 24

將案例bin目錄下的可執(zhí)行文件拷貝至評(píng)估板文件系統(tǒng),并執(zhí)行如下命令運(yùn)行測(cè)試程序,再按"Ctrl + C"退出測(cè)試,串口終端將打印程序統(tǒng)計(jì)的延遲數(shù)據(jù),如下圖所示。

Target# sysctl kernel.sched_rt_runtime_us=-1

Target# taskset -c 1 ./rt_gpio_ctrl -t 10 -d 100

wKgZPGiJg8aADn2VAAAogBjKX9M498.png圖 25

同時(shí)使用示波器捕捉LED兩次電平翻轉(zhuǎn)之間的間隔就對(duì)應(yīng)上線程調(diào)度的延遲,測(cè)試點(diǎn)為R46電阻一端。

wKgZO2iJg9CALBRWAABs9zE7OMA927.png圖 26

算出電平兩次翻轉(zhuǎn)的時(shí)間間隔為?x=104us,如下圖所示。由于程序中增加了100us的時(shí)間延時(shí),因此實(shí)際延時(shí)時(shí)應(yīng)為:104us– 100us= 4us,與程序統(tǒng)計(jì)打印的Latency results平均值5us相近。

wKgZO2iJhD6AJcmjAAJHxyWZ-fU360.png圖 27

案例編譯

將產(chǎn)品資料“4-軟件資料Demolinux-rt-demosrt_gpio_ctrlsrc”案例源碼拷貝至Ubuntu。進(jìn)入案例源碼目錄,執(zhí)行如下命令,編譯案例生成可執(zhí)行文件。

Host# CC=/home/tronlong/T113/tina5.0_v1.0/out/t113_i/tlt113-evm-nand/buildroot/buildroot/host/usr/bin/arm-linux-gnueabi-gccCXX=/home/tronlong/T113/tina5.0_v1.0/out/t113_i/tlt113-evm-nand/buildroot/buildroot/host/usr/bin/arm-linux-gnueabi-g++ make

備注:若使用eMMC配置評(píng)估板,請(qǐng)將命令中的"tlt113-evm-nand"改為"tlt113-evm-emmc"。

wKgZO2iJhEiABvAnAAETGASNjdg588.png圖 28

關(guān)鍵代碼說(shuō)明

(1)創(chuàng)建一個(gè)基于PREEMPT_RT的實(shí)時(shí)任務(wù),具體操作包括內(nèi)存鎖定、線程堆棧內(nèi)存設(shè)置、調(diào)度策略和優(yōu)先級(jí)配置等。

wKgZPGiJhFGAJ5RuAAEVzQVrQQY990.png圖 29

(2)在線程中打開(kāi)LED文件節(jié)點(diǎn),并對(duì)LED狀態(tài)進(jìn)行翻轉(zhuǎn)。

wKgZPGiJhF2ASCAsAACdBCfbabk687.png圖 30

(3)統(tǒng)計(jì)調(diào)度時(shí)間延時(shí)情況。

wKgZO2iJhGmAHrqHAACbBnhFQ6w886.png圖 31

?
審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    88

    文章

    11575

    瀏覽量

    216603
  • 開(kāi)發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    5990

    瀏覽量

    109962
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Qt應(yīng)用開(kāi)發(fā)--國(guó)產(chǎn)工業(yè)開(kāi)發(fā)板T113-i的部署教程

    本次開(kāi)發(fā)教程的測(cè)試板卡來(lái)自創(chuàng)龍科技的TLT113-EVM國(guó)產(chǎn)工業(yè)評(píng)估,基于
    的頭像 發(fā)表于 11-05 08:44 ?3593次閱讀
    Qt應(yīng)用<b class='flag-5'>開(kāi)發(fā)</b>--<b class='flag-5'>國(guó)產(chǎn)</b><b class='flag-5'>工業(yè)</b><b class='flag-5'>開(kāi)發(fā)板</b><b class='flag-5'>T113-i</b>的部署教程

    【米爾-T113-i開(kāi)發(fā)板試用】上電+配編譯器+編譯+運(yùn)行ruapu測(cè)試工具流程視頻

    MYC-YT113i核心開(kāi)發(fā)板 真正的國(guó)產(chǎn)核心,100%國(guó)產(chǎn)物料認(rèn)證
    發(fā)表于 02-25 22:49

    【米爾-T113-i開(kāi)發(fā)板試用】米爾-T113-i開(kāi)發(fā)環(huán)境搭建

    首先感謝MYIR & ELECFANS給與的使用米爾-T113-i開(kāi)發(fā)板的機(jī)會(huì)。 一、開(kāi)發(fā)板簡(jiǎn)介 米爾-
    發(fā)表于 03-01 21:43

    國(guó)產(chǎn)RISC-V基于T113-i異構(gòu)多核平臺(tái)

    T113-i是一款Cortex-A7@1.2GHz國(guó)
    發(fā)表于 10-10 22:08

    國(guó)產(chǎn)RISC-V案例分享,基于T113-i異構(gòu)多核平臺(tái)!

    RISC-V核心優(yōu)勢(shì)T113-i是一款Cortex-A7@1.2GHz
    發(fā)表于 10-29 09:47

    【正點(diǎn)原子】T113-i開(kāi)發(fā)板資料震撼來(lái)襲!異開(kāi)發(fā)、工控設(shè)計(jì)方案!

    【正點(diǎn)原子】T113-i開(kāi)發(fā)板震撼來(lái)襲!異開(kāi)發(fā)、工控設(shè)計(jì)方案!ATK-DLT
    發(fā)表于 03-13 15:37

    T113-i+玄鐵HiFi4開(kāi)發(fā)板ARM Cortex-A7 )規(guī)格書

    評(píng)估簡(jiǎn)介創(chuàng)龍科技TLT113-EVM是一款基于科技T113-i
    發(fā)表于 01-31 22:42

    多核異構(gòu)工業(yè)開(kāi)發(fā)板:創(chuàng)龍科技T113-i

    概述 本次評(píng)測(cè)開(kāi)發(fā)板--創(chuàng)龍T113-i工業(yè)開(kāi)發(fā)板,這是一款基于科技處
    的頭像 發(fā)表于 10-24 10:26 ?2639次閱讀
    多核異構(gòu)<b class='flag-5'>工業(yè)</b><b class='flag-5'>開(kāi)發(fā)板</b>:創(chuàng)龍科技<b class='flag-5'>T113-i</b>

    如何把LVGL移植到T113-i國(guó)產(chǎn)工業(yè)開(kāi)發(fā)板

    本次開(kāi)發(fā)教程的測(cè)試板卡來(lái)自創(chuàng)龍科技的TLT113-EVM國(guó)產(chǎn)工業(yè)評(píng)估,基于
    發(fā)表于 11-14 17:28 ?1651次閱讀
    如何把LVGL移植到<b class='flag-5'>T113-i</b><b class='flag-5'>國(guó)產(chǎn)</b><b class='flag-5'>工業(yè)</b><b class='flag-5'>開(kāi)發(fā)板</b>

    G2D圖像處理硬件調(diào)用和測(cè)試-基于米爾-T113-i開(kāi)發(fā)板

    ,100%國(guó)產(chǎn)物料認(rèn)證國(guó)產(chǎn)T113-i處理器配備2*Cortex-A7@1.2GHz,RISC-V外置DDR3接口、支持視頻編解碼器、HiFi4DSP接口豐富:視頻
    的頭像 發(fā)表于 04-12 08:01 ?1745次閱讀
    G2D圖像處理硬件調(diào)用和測(cè)試-基于米爾-<b class='flag-5'>全</b><b class='flag-5'>志</b><b class='flag-5'>T113-i</b><b class='flag-5'>開(kāi)發(fā)板</b>

    T113-i最新發(fā)布Tina5.0系統(tǒng)!支持3大新特性!

    創(chuàng)龍科技T113-iCortex-A7@1.2GHz
    的頭像 發(fā)表于 05-14 08:05 ?1489次閱讀
    <b class='flag-5'>T113-i</b>最新發(fā)布Tina5.0系統(tǒng)!支持3大新特性!

    國(guó)產(chǎn)!T113-i Cortex-A7@1.2GHz 工業(yè)開(kāi)發(fā)板—DSP案例開(kāi)發(fā)手冊(cè)

    本文檔主要介紹T113-i處理器的HiFi4 DSP核心開(kāi)發(fā)案例,演示HiFi4 DSP核心RTOS案例的工程編譯、程序固化和工程調(diào)試的方法。適用開(kāi)發(fā)環(huán)境如下。
    的頭像 發(fā)表于 08-12 11:37 ?477次閱讀
    <b class='flag-5'>國(guó)產(chǎn)</b>!<b class='flag-5'>全</b><b class='flag-5'>志</b><b class='flag-5'>T113-i</b> <b class='flag-5'>雙</b><b class='flag-5'>核</b><b class='flag-5'>Cortex-A7@1.2GHz</b> <b class='flag-5'>工業(yè)</b><b class='flag-5'>開(kāi)發(fā)板</b>—DSP案例<b class='flag-5'>開(kāi)發(fā)</b>手冊(cè)

    國(guó)產(chǎn)!T113-i Cortex-A7@1.2GHz 工業(yè)開(kāi)發(fā)板—ARM + DSP、RISC-V間通信開(kāi)發(fā)案

    本文檔主要介紹T113-i處理器的ARM + DSP、RISC-V間通信開(kāi)發(fā)案例,演示T113-i處理器ARM Cortex-A7與HiF
    的頭像 發(fā)表于 08-18 14:03 ?461次閱讀
    <b class='flag-5'>國(guó)產(chǎn)</b>!<b class='flag-5'>全</b><b class='flag-5'>志</b><b class='flag-5'>T113-i</b> <b class='flag-5'>雙</b><b class='flag-5'>核</b><b class='flag-5'>Cortex-A7@1.2GHz</b> <b class='flag-5'>工業(yè)</b><b class='flag-5'>開(kāi)發(fā)板</b>—ARM + DSP、RISC-V<b class='flag-5'>核</b>間通信<b class='flag-5'>開(kāi)發(fā)案</b>例

    國(guó)產(chǎn)!T113-i Cortex-A7@1.2GHz 工業(yè)開(kāi)發(fā)板Linux系統(tǒng)使用手冊(cè)(二)

    本文檔詳細(xì)介紹了T113開(kāi)發(fā)板Linux環(huán)境搭建與系統(tǒng)編譯流程。主要內(nèi)容包括:1)開(kāi)發(fā)環(huán)境要求(Windows/VMware/Ubuntu版本);2)
    的頭像 發(fā)表于 09-02 16:36 ?346次閱讀
    <b class='flag-5'>國(guó)產(chǎn)</b>!<b class='flag-5'>全</b><b class='flag-5'>志</b><b class='flag-5'>T113-i</b> <b class='flag-5'>雙</b><b class='flag-5'>核</b><b class='flag-5'>Cortex-A7@1.2GHz</b> <b class='flag-5'>工業(yè)</b><b class='flag-5'>開(kāi)發(fā)板</b>—<b class='flag-5'>Linux</b>系統(tǒng)使用手冊(cè)(二)

    國(guó)產(chǎn)T113-i Cortex-A7@1.2GHz 工業(yè)開(kāi)發(fā)板Linux系統(tǒng)使用手冊(cè)(三)

    本文檔詳細(xì)介紹了T113開(kāi)發(fā)板Linux環(huán)境搭建與系統(tǒng)編譯流程。主要內(nèi)容包括:1)開(kāi)發(fā)環(huán)境要求(Windows/VMware/Ubuntu版本);2)
    的頭像 發(fā)表于 09-04 14:56 ?304次閱讀
    <b class='flag-5'>國(guó)產(chǎn)</b>!<b class='flag-5'>全</b><b class='flag-5'>志</b><b class='flag-5'>T113-i</b> <b class='flag-5'>雙</b><b class='flag-5'>核</b><b class='flag-5'>Cortex-A7@1.2GHz</b> <b class='flag-5'>工業(yè)</b><b class='flag-5'>開(kāi)發(fā)板</b>—<b class='flag-5'>Linux</b>系統(tǒng)使用手冊(cè)(三)