性无码一区二区三区在线观看,少妇被爽到高潮在线观看,午夜精品一区二区三区,无码中文字幕人妻在线一区二区三区,无码精品国产一区二区三区免费

嵌入式大雜燴
認(rèn)證:普通會(huì)員
作者動(dòng)態(tài)
嵌入式必備工具 CMake 的使用套路!
2天前
嵌入式設(shè)備配網(wǎng):從基礎(chǔ)到實(shí)戰(zhàn)!
5天前
嵌入式設(shè)備聯(lián)網(wǎng)的 “捷徑” ——DHCP 詳解
04-22 17:08
嵌入式軟件:函數(shù)式 VS 非函數(shù)式編程
04-22 09:05
嵌入式領(lǐng)域:Linux 與 RTOS 的巔峰對(duì)決!
04-21 09:40

嵌入式性能指標(biāo)竟藏著這些秘密,你了解幾個(gè)?

這次給大家分享關(guān)于嵌入式中性能指標(biāo)的一些知識(shí)。嵌入式軟件性能指標(biāo)是衡量嵌入式系統(tǒng)性能優(yōu)劣的重要依據(jù)。

各行業(yè),比較通用的嵌入式軟件性能指標(biāo)有哪些?

嵌入式軟件的性能指標(biāo)通常圍繞實(shí)時(shí)性和資源效率展開。以下是最重要的幾點(diǎn)指標(biāo):

一、實(shí)時(shí)性

實(shí)時(shí)性指的不是“快”,而是“準(zhǔn)時(shí)”——硬實(shí)時(shí)系統(tǒng)允許速度慢,但必須守時(shí)。

這個(gè)指標(biāo)直接影響到系統(tǒng)的交互性,這個(gè)指標(biāo)航空航天、工業(yè)自動(dòng)化等領(lǐng)域至關(guān)重要。

例如,在自動(dòng)駕駛系統(tǒng)中,車輛對(duì)突發(fā)狀況的響應(yīng)時(shí)間必須足夠短,以確保安全駕駛。一般來說,關(guān)鍵任務(wù)的響應(yīng)時(shí)間需要控制在毫秒級(jí)甚至微秒級(jí)。

1、實(shí)時(shí)性檢測工具

(1)Percepio View

Percepio View 是一款基于 Percepio Tracealyzer 的免費(fèi)追蹤工具,用作 FreeRTOS 應(yīng)用程序的監(jiān)控,便于調(diào)試和驗(yàn)證。

https://www.freertos.org/Documentation/03-Libraries/02-FreeRTOS-plus/05-FreeRTOS_plus_Trace/01-Percepio_View

Percepio View 可以與傳統(tǒng)調(diào)試器(如ST-Link、J-Link)結(jié)合使用,通過任務(wù)和 ISR 實(shí)時(shí)執(zhí)行情況 可視化的方式對(duì)調(diào)試器加以補(bǔ)充。

這些任務(wù)包括 FreeRTOS API 調(diào)用和您自己的“用戶事件”。 它不需要任何特殊的追蹤硬件。

(2)SEGGER SystemView

SEGGER SystemView是一個(gè)實(shí)時(shí)記錄和可視化工具,用于分析和描述嵌入式系統(tǒng)的行為。

它提供了對(duì)運(yùn)行時(shí)行為的深入了解,超越了傳統(tǒng)調(diào)試器的功能。

SystemView 可免費(fèi)用于非商業(yè)用途,且功能不受限制。

https://www.segger.com/products/development-tools/systemview/

SystemView非常適合具有多線程和中斷的復(fù)雜系統(tǒng),它可以幫助開發(fā)人員確保他們的系統(tǒng)按預(yù)期執(zhí)行,識(shí)別低效率,并發(fā)現(xiàn)意外的交互或資源沖突。

通過調(diào)試接口記錄來自嵌入式系統(tǒng)的監(jiān)控?cái)?shù)據(jù),SystemView詳細(xì)地可視化任務(wù)、中斷和軟件定時(shí)器的執(zhí)行情況。

二、資源使用效率

這個(gè)指標(biāo)主要衡量系統(tǒng)硬件資源(如 CPU、內(nèi)存)的使用情況。

通過監(jiān)測資源利用率,可以了解軟件對(duì)硬件資源的需求和占用程度,避免資源過度占用或浪費(fèi)。

例如,如果 CPU 利用率長期過高,可能導(dǎo)致系統(tǒng)響應(yīng)變慢甚至崩潰;內(nèi)存利用率過高則可能引發(fā)內(nèi)存泄漏等問題。

CPU使用率定義為CPU在某個(gè)時(shí)間段內(nèi)用于執(zhí)行計(jì)算任務(wù)的時(shí)間占總時(shí)間的比例。具體來說,CPU使用率 = 1 - 空閑時(shí)間/總CPU時(shí)間。

合理的資源利用率可以使系統(tǒng)在有限的硬件資源下穩(wěn)定運(yùn)行,并為未來的功能擴(kuò)展預(yù)留一定的資源空間。

1、CPU 使用分析工具

(1)SEGGER SystemView

SEGGER SystemView配合 J-Link,捕獲任務(wù)切換和中斷事件,分析 CPU 占用熱點(diǎn),支持 FreeRTOS、Zephyr 等 RTOS。

(2)FreeRTOS 運(yùn)行時(shí)統(tǒng)計(jì)功能(內(nèi)置)

https://www.freertos.org/Documentation/02-Kernel/02-Kernel-features/08-Run-time-statistics

在FreeRTOS中通過 config GENERATE_RUN_TIME_STATS配置啟用,統(tǒng)計(jì)每個(gè)任務(wù)的 CPU 占用率及執(zhí)行時(shí)間。

無需額外工具,直接集成在 FreeRTOS 中,適合快速定位高負(fù)載任務(wù)。

(3)perf(Linux 內(nèi)置工具)

perf是一個(gè)基于Linux內(nèi)核的性能事件子系統(tǒng),可以收集各種性能數(shù)據(jù),如CPU使用率、內(nèi)存訪問、函數(shù)調(diào)用等。

使用命令:

perf record -e cpu-clock -g ./embedded_app  # 記錄 CPU 事件
perf report  # 生成熱點(diǎn)函數(shù)分析報(bào)告

2、 內(nèi)存使用分析工具

(1)heap-monitoring

heap-monitoring是SEGGER SystemView中的應(yīng)用程序中的動(dòng)態(tài)存儲(chǔ)監(jiān)控工具。

在應(yīng)用程序使用C或C++堆、多個(gè)自定義堆或RTOS提供的內(nèi)存池對(duì)象,可以使用heap-monitoring跟蹤這些對(duì)象的使用情況,分析它們的使用模式,評(píng)估堆上的負(fù)載、識(shí)別潛在的內(nèi)存泄漏、跟蹤內(nèi)存峰值使用情況等的格式顯示收集到的信息。

使用方式:

使用SEGGER_SYSVIEW_HeapDefine定義一次堆的特征。

并使用SEGGER_SYSVIEW_HeapAllocSEGGER_SYSVIEW_HeapFree監(jiān)視它的使用情況。

(2)FreeRTOS 堆棧溢出檢測(內(nèi)置)

在FreeRTOS中通過 config CHECK_FOR_STACK_OVERFLOW 配置檢測任務(wù)堆棧溢出。

實(shí)時(shí)監(jiān)控任務(wù)棧使用,防止內(nèi)存越界導(dǎo)致的系統(tǒng)崩潰。

(3)Valgrind

Valgrind是一款用于內(nèi)存調(diào)試、內(nèi)存泄漏檢測以及性能分析的軟件開發(fā)工具。

往期文章:工具 | Valgrind仿真調(diào)試工具的使用

Valgrind工具包包含多個(gè)工具:

其中Valgrind Massif工具是堆棧分析器。堆棧分析器,它能測量程序在堆棧中使用了多少內(nèi)存,告訴我們堆塊,堆管理塊和棧的大小。

Valgrind Massif能幫助我們減少內(nèi)存的使用,在帶有虛擬內(nèi)存的現(xiàn)代系統(tǒng)中,它還能夠加速我們程序的運(yùn)行,減少程序停留在交換區(qū)中的幾率。

Valgrind由內(nèi)核(core)以及基于內(nèi)核的其他調(diào)試工具組成。

其基于仿真方式對(duì)程序進(jìn)行調(diào)試,它先于應(yīng)用程序獲取實(shí)際處理器的控制權(quán),并在實(shí)際處理器的基礎(chǔ)上仿真一個(gè)虛擬處理器,并使應(yīng)用程序運(yùn)行于這個(gè)虛擬處理器之上,從而對(duì)應(yīng)用程序的運(yùn)行進(jìn)行監(jiān)視。

應(yīng)用程序并不知道該處理器是虛擬的還是實(shí)際的,已經(jīng)編譯成二進(jìn)制代碼的應(yīng)用程序并不用重新進(jìn)行編譯,Valgrind 直接解釋二進(jìn)制代碼使得應(yīng)用程序基于它運(yùn)行,從而能夠檢查內(nèi)存操作時(shí)可能出現(xiàn)的錯(cuò)誤。

所以在Valgrind下運(yùn)行的程序運(yùn)行速度要慢得多,而且使用的內(nèi)存要多得多。因此,最好在性能好的機(jī)器上使用Valgrind,并且是在開發(fā)調(diào)試階段使用。

三、代碼執(zhí)行效率

代碼執(zhí)行效率直接影響系統(tǒng)的 可靠性、實(shí)時(shí)性、功耗 和 成本

  • 圖像處理算法中,綜合考慮資源利用平衡,改用查表法進(jìn)行效率提升。
  • 通信協(xié)議解析中,減少冗余字符串操作函數(shù)調(diào)用次數(shù)。

1、代碼執(zhí)行效率檢測工具

(1)gprof

GNU gprof,這是一個(gè)經(jīng)典的性能分析工具,集成在GCC中,只需添加編譯選項(xiàng)即可使用,適用于Linux/MPU 或交叉編譯環(huán)境(如 ARM Cortex-A 系列),定位算法或邏輯瓶頸。

https://ftp.gnu.org/old-gnu/Manuals/gprof-2.9.1/html_mono/gprof.html

它能夠顯示每個(gè)函數(shù)的調(diào)用次數(shù)和執(zhí)行時(shí)間,幫助定位熱點(diǎn)代碼。對(duì)于嵌入式開發(fā),可以在交叉編譯環(huán)境中使用。

編譯代碼時(shí)啟用分析

gcc -pg -o my_app my_code.c

生成分析報(bào)告

gprof my_app gmon.out > report.txt

四、其他指標(biāo)

  • 可靠性:嵌入式系統(tǒng),尤其是應(yīng)用于關(guān)鍵領(lǐng)域(如醫(yī)療設(shè)備、交通控制等)的軟件,可靠性是至關(guān)重要的指標(biāo)。軟件需要具備容錯(cuò)能力、錯(cuò)誤恢復(fù)能力和穩(wěn)定性,以應(yīng)對(duì)各種可能出現(xiàn)的異常情況,確保系統(tǒng)持續(xù)、穩(wěn)定地運(yùn)行。
  • 功耗:低功耗設(shè)計(jì)可以延長設(shè)備的使用時(shí)間,減少充電頻率,提高用戶體驗(yàn)。同時(shí),對(duì)于大規(guī)模部署的物聯(lián)網(wǎng)設(shè)備,降低功耗還可以降低運(yùn)營成本和對(duì)環(huán)境的影。
  • 可預(yù)測性:確保所有任務(wù)在任意負(fù)載下均滿足截止時(shí)間(硬實(shí)時(shí)系統(tǒng)的核心)。
  • 通信吞吐量:在涉及網(wǎng)絡(luò)或總線(如CAN、Ethernet)的系統(tǒng)中,數(shù)據(jù)吞吐和延遲是關(guān)鍵。
  • 工具鏈影響:編譯器優(yōu)化級(jí)別、調(diào)試代碼(如斷言)對(duì)性能的影響需在發(fā)布版本中評(píng)估。
聲明:本內(nèi)容為作者獨(dú)立觀點(diǎn),不代表電子星球立場。未經(jīng)允許不得轉(zhuǎn)載。授權(quán)事宜與稿件投訴,請聯(lián)系:editor@netbroad.com
覺得內(nèi)容不錯(cuò)的朋友,別忘了一鍵三連哦!
贊 2
收藏 2
關(guān)注 28
成為作者 賺取收益
全部留言
0/200
成為第一個(gè)和作者交流的人吧