在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

通過幾個實例說明如何減輕CPU負擔

嵌入式攻城獅 ? 來源:芯片之家 ? 作者:芯片之家 ? 2023-07-03 16:41 ? 次閱讀

CPU運行時間是寶貴的資源,我們要把有限的CPU時間投入到更有意義的事情中去。

在我們進行嵌入式開發的過程中,你一定干過這幾件事:用GPIO模擬某種通信接口,比如SPI等;用空循環來實現延時delay;空等寄存器的關鍵狀態位。也許是出于無奈,比如所使用的芯片沒有硬件SPI或通道不夠,亦或者此時CPU除了空轉并沒有其它事情要作,但是我們一定要有這樣的意識:這是在浪費CPU資源。

CPU是嵌入式系統的核心,但是它不必深入參與到每一個細節中去。記住:CPU是片上所有硬件資源的統領者,而非事必躬親的苦力。我們要學會盡最大可能充分利用片上硬件資源,甚至在芯片外部擴展一些專門的硬件電路來完成功能設計。

本章振南將通過幾個實例來向大家說明如何減輕CPU負擔,而用片內片外的硬件來實現我們想要的功能。

1. 石油測井儀器

0x01

背景知識

在我的職業生涯中,有5年多的時間在作石油儀器。這是一個很傳統的行業,但也是非常綜合性和吃技術的行業。

有人說:“你這一章似乎要講的是CPU的利用率問題,怎么又講起石油儀器來了?”別急,振南自有用意。

wKgaomSiieyAXx9EAAAv4FvCsKw705.png

上圖所示為石油測井系統的簡易拓撲示意圖。工作時測井車通過輪盤拉動鋼纜上提,與此同時儀器向外發射信號(電或超聲),并接收返回信號經過計算將結果通過同軸以太網上傳到地面系統,由上位機繪制出曲線。最終曲線將交給解釋工程師,來判斷油氣儲層的位置。

上提的速度是一定的,我們當然希望在某一個深度上多采集一些數據,即盡量提高采樣率。這樣最終的測井曲線上就能體現出更多的細節。

OK,這就是最基本的原理和背景。

0x02

測井數據采傳的實現

電路上比較清晰,下圖為測井儀器數據采傳原理框圖:

wKgaomSiieyAdj2pAAAkJ0bRTXk592.png

最直接的初級方案

最直接的方案是所有人都能想到的方案,就是采集、計算、發送按部就班的進行,如下圖所示。

wKgZomSiieyAe6VgAABqgKeAgpk641.png

每一個周期要作的事情就是:ADC采集一段波形,然后進行計算,主要是一些數字濾波、FFT、DPSD之類的數字信號處理,最終將結果數據按協議格式打包通過McBSP(TI DSP專有的通信接口)發送給同軸以太網通信模塊。我們當然希望這個周期越短越好,這需要將一些步驟優化壓縮。

加入DMA的優化方案

上面的方案,仔細看一下就會發現,它的所有操作都是需要CPU參與的,大量的時間都在等待外設。如何降低CPU的參與度,把其寶貴的時間不要浪費在空等上,而放在核心算法的計算上,如下圖所示:

wKgaomSiieyAfXNoAABcZuUXz7w604.png

我們首先由CPU參與完成一次波形采集,然后開始針對采集數據進行計算,因為涉及大量浮點數據的數字信號處理,所以計算過程會比較花時間,一次計算大約需要花費10ms。與此同時,我們適時的不斷啟動ADC轉換,在其轉換的時間間隙里進行計算,然后直接啟動SPI-DMA傳輸來讀取ADC的轉換數據,而CPU不用去等DMA傳輸完成,可以利用DMA傳輸的時間進行計算,最后回過頭來立即進行下一次計算,因為此時新的波形已經準備好了。這樣,一個周期的時間可以壓縮到10ms,采樣率比原來提高了一倍。

振南是想通過這個實例來告訴大家:CPU的運行時間是寶貴的,將片上的硬件資源充分的利用起來將可以釋放出更多的CPU時間來作更有意義的事情。一些技巧和DMA的合理運用是行之有效的辦法。

其實很多時候能被用來發揮的硬件資源并不只限于片內,我們自己設計一些簡單的片外電路加以輔助,有時候可以達到意想不到的效果,請往下看。

2. 巧驅攝像頭

0x01

攝像頭時序分析

我知道很多人都對攝像頭模塊感興趣,想用單片機驅動一下試試效果,但是作成功的并不多,下圖為比較盛行的OV7670攝像頭模塊和模組:

究其原因有幾點:1、攝像頭CMOS芯片的時序較為復雜;2、SCCB通信及相關寄存器的配置;3、時序過快,而且是按其固有頻率主動輸出,難于捕捉和采集數據。

它的時序有多快,我們來看下圖所示的OV7670的時序圖:

wKgaomSiieyALxaNAAAhpIFMqqM594.png

OV7670在VGA模式下可達到的最高幀率30fps,即每秒鐘產生30幀640X480尺寸的圖像。從官方資料上得知VGA模式下實際輸出的行數為510,每行輸出的像素數為784(多出來的行數與像素數是多余的,其數據是無效的,我們只關注HREF為高電平期間的像素數據)。這樣,PCLK的時鐘周期為1/(30510784*2)=41.7ns。想要用一般單片機的GPIO來直接采集像素數據,幾乎是不可能的,因為IO與CPU的速度都不夠快。

0x02

使用DCMI+DMA

要讀取攝像頭如此高速的數據,必須要有專門的硬件。我們可以選用ST的STM32F4系列單片機,它內置了DCMI(數字攝像頭模塊接口),使用它將可以很輕松的完成圖像獲取的功能。它要配合DMA來工作,如下圖示:

wKgZomSiieyAacGsAAAtyneWvO4121.png

DCMI獲取攝像頭數據,可以通過DMA直接將數據保存到內部RAM或外部的SDRAM,甚至直接寫入到TFT中,實現圖像的實時動態顯示。而在整個過程中,CPU只不過在作一些配置性的工作,并沒有參與圖像數據采集和傳輸。所以,用高端芯片會使我們的開發工作如虎添翼,事半功倍。就是因為它有更強大的硬件外設來為我們完成特定的功能實現。當然,更強大的硬件也意味著更多的學習成本,我們需要仔細學習如何正確的使用它來達到想要的效果。

有些時候,硬件外設電路甚至比CPU內核更復雜,比如有些多媒體編解碼SOC,CPU內核只是51或M0,片上更大的面積是諸如H.264之類的編解碼電路。所以,作嵌入式開發的工程師,首先要充分了解自己手上有哪些硬件資源,而不要所有功能都純依靠CPU來實現。

0x03

自搭外部電路

本節的名字是“巧驅攝像頭”,上面所介紹的方案都不算不上一個“巧”字。上述方案中必須要求單片機有DCMI之類的專用硬件,那不用DCMI可不可以?比如拿普通的51或低端的M0單片機,可不可以實現對攝像頭的驅動。答案是肯定的,不過這需要我們在外部電路上作些手腳,如下圖所示為通過片外并行FIFO+時序調理實現圖像采集:

wKgZomSiie2AfdL4AAAyTNFoPh0279.png

配合下面的流程圖,大家就知道其巧妙之處了,如下圖所示為通過片外并行FIFO實現一幀數據的獲取:

wKgaomSiie2Ab5z8AACaiKBh3Xg655.png

程序按上圖描述的邏輯運行之后,一幀圖像就存到FIFO中了。此時單片機可以慢慢從讀取端(并行FIFO分為寫入端與讀取端,分別對應的有寫指針與讀指針)讀到圖像數據了。這樣CPU和IO的速度就再也不是瓶頸。通過這樣的機制,任何單片機都可以輕松實現圖像采集了。

在此過程中,CPU都干了什么?似乎只有等待幀同步信號VSYNC和操作幾個IO。這種方式比DCMI+DMA更省CPU(DMA實際上會占用一半的片內數據總線帶寬,使CPU的運行效率降低),而且更靈活,對單片機硬件的依賴更小。

3. 單片機巧驅7寸大液晶屏

通過上面幾個實例,大家應該知道振南所謂“巧驅”的路數了吧,對,就是多讓硬件說話,我們要作“軟硬兼施”的工程師。

OK,如果我問大家:“我能用51或M0單片機,驅動7寸大屏液晶(800*480),如圖6.10,并且流暢播放視頻,你信不信?”你一定會說:“不太可能吧,刷屏速率不夠。”但我既然這么問,那振南一定是已經實現了,這里我就把實現過程給大家講一下。

先來看原理圖,下圖為巧驅7寸液晶屏原理圖之MCU部分:

wKgaomSiie2AUSgPAAByUrvsddk510.png

下圖為巧驅7寸液晶屏原理圖之74HC595串轉并部分:

wKgaomSiie2ALmiMAABjUMpk0rc765.png

下圖為巧驅7寸液晶屏原理圖之八8進制計數與時序調理部分:

wKgaomSiie2AA00kAABlPCgDaQg673.png

下圖為巧驅7寸液晶屏原理圖之spiFlash與7寸TFT接口部分:

wKgZomSiie2AU_oNAACItzMBFYY650.png

基本的實現邏輯如圖6.15所示。

wKgZomSiie2AYYH6AABcprWJf8s309.png

仔細觀察上面的原理圖與邏輯框圖,估計很多人已經明白了振南的意思,振南再給出配套的流程圖,邏輯就更清晰了,如下圖所示:

wKgaomSiie2AI9KyAACRIygKoyU750.png

兩片74HC595用于將16位串行數據轉換為并行,與TFT液晶的16位數據接口相連。74HC595的串行數據輸入同時與MCU的兩個GPIO以及spiFlash的兩個串行數據端口相連。當spiFlash失能時(即CS置高),其數據端口呈現高阻,此時74HC595可由MCU操作;而當MCU的GPIO設置為高阻時,兩片74HC595可分別接收來自spiFlash的雙位串行數據。這樣的復用設計,可以使MCU對TFT液晶進行預先的初始化,使其工作在純像素數據寫入的模式;而在高速數據寫入的階段,MCU退出而讓TFT接收來自spiFlash的數據。

兩片74HC595實現串轉并的要點在于LC鎖存信號的產生,每產生8個SCK脈沖,則自動產生一個LC上上升沿,這是時序生成與理調邏輯的一部分。實現的根本在于74HC161與74HC27的組合運用,如圖6.13。首先對74HC161復位清零,此時[Q2:Q0]=000,74HC27是三輸入或非門,其輸出1Y,即595-LC為1;時鐘的輸入后[Q2:Q0]隨之自增001、010 …… 在000之前595-LC均為0,而8個時鐘之后,595-LC將變為1,即產生了上升沿。這里振南給595-LC增加了兩級74HC1G32作為緩沖,為的是增加一些延時,以使74HC595的存鎖數據輸出更穩定。

然后是液晶的WR信號的產生:從圖6.12中可以看到,WR信號是一個GPIO與八位計數器輸出最高位Q2的或非非(沒錯,是或非非)。當Q2為0時,WR受控于GPIO,此時可用于MCU對TFT預先進行初始化操作。當GPIO為0時,WR受控于Q2,每8個時鐘會產生一個下降沿(前面那個或非非是為了推遲一下這個下降沿,以使16位并行數據寫入液晶更穩定),并維持4個時鐘周期。

基本的要點已經描述清楚了。至于時鐘的產生,唯一的要求是要產生特定數量的時鐘,而不能是連續不斷的。比如一幀圖像的數據量為800*480半字,我們要輸出3072000個時鐘才能讓一幀圖像顯示到液晶上。所以我們不能用MCO或者是PWM,而要用SPI,如果是8位SPI,要寫384000次,如果是16位SPI,則要寫192000次。當然,為了節省更多的CPU資源,我們可以使用DMA。當時鐘不斷的產生,一幀幀的圖像顯示到液晶上時,視頻就流暢的播放出來了。

我曾經把我這個“巧驅大屏”的實驗講給了我的同事聽,他們在贊嘆的同時,還說:“你不作FPGA真是浪費了!”其實我是作過一段時間的FPGA的,那還是在2007年在Intel中國研究院實習工作的時候。

好了,本章用3個實例闡述了本章最開頭的那句話:CPU時間是寶貴的,我們要把有限的CPU時間投入到更有意義的事情中去。

實際開發中,充分地利用硬件資源,自行靈活擴展一些硬件電路,通常可以達到意想不到的效果,甚至可以化不可能為可能。

永遠記住:我們很多時候作的是嵌入式軟件的工作,但歸根結底我們搞的還是硬件。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5089

    文章

    19169

    瀏覽量

    306753
  • 寄存器
    +關注

    關注

    31

    文章

    5362

    瀏覽量

    120895
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10898

    瀏覽量

    212569
  • 接口
    +關注

    關注

    33

    文章

    8684

    瀏覽量

    151629
  • SPI
    SPI
    +關注

    關注

    17

    文章

    1720

    瀏覽量

    91914

原文標題:CPU,你省省心吧!

文章出處:【微信號:嵌入式攻城獅,微信公眾號:嵌入式攻城獅】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    初學的幾個簡單實例

    最近電路模擬仿真,做的幾個實例,大家看看哈。
    發表于 06-13 13:03

    介紹幾個是常用的DMA傳輸路徑

    STM32 DMA簡述**DMA (Direct Memory Access) ** 直接內存存儲器,在做數據傳輸時能夠大大減輕CPU負擔。DMA的作用DMA提供了一個關于數據的高數傳輸通道,這個
    發表于 01-11 07:36

    EOS說明實例說明

    EOS說明實例說明
    發表于 04-13 08:35 ?20次下載

    人工智能設備減輕影像科醫生的工作負擔

    比大眾想象的要重出很多。影像科醫生的工作到底是個什么樣子?如何才能減輕影像科醫生工作負擔?天地智慧醫療帶您一探究竟。 影像科醫生看圖說話并不簡單 影像科醫生每天的工作就是結合臨床看圖說話,但這并不是一份簡單的工
    發表于 09-25 10:37 ?2次下載

    釋放改革紅利,減輕用戶電費負擔

    國家電網公司今年上半年在全面深化改革方面取得的成果,主要體現在推進混合所有制改革、深化輸配電價改革及促進新能源消納等多個方面。國家電網公司將貫徹落實好政府工作報告要求,進一步釋放改革紅利,減輕一般工商業電價負擔
    發表于 07-04 04:41 ?2303次閱讀

    可穿戴式機器人助力救災活動,減輕了人體腰部40%的負擔

    據報道,在西日本暴雨災害中受災最嚴重的地區之一岡山縣,救災志愿者身著的“外套機器人”在救災活動中起到了極大的作用。“外套機器人”最多可以減輕人體腰部40%的負擔,以幫助志愿者搬運沉重的物體。
    發表于 08-08 17:16 ?2536次閱讀

    PMU如何通過執行任務減輕CPU的負荷

    在本系列視頻的最后一節,回顧main()程序,并將所有片段整合在一起。觀看MAX32630評估板上運行的演示程序,了解PMU如何通過執行任務來減輕CPU的負荷。
    的頭像 發表于 10-10 03:11 ?4325次閱讀

    如何進行CPU內部Flash讀寫的實例資料說明

    本文檔的主要內容詳細介紹的是如何進行CPU內部Flash讀寫的實例資料說明
    發表于 05-29 17:36 ?12次下載
    如何進行<b class='flag-5'>CPU</b>內部Flash讀寫的<b class='flag-5'>實例</b>資料<b class='flag-5'>說明</b>

    減輕家務負擔,手持吸塵器哪個牌子好

    隨著科技的進步,越來越多便捷好用的智能電器出現在普通家庭用戶家中。手持吸塵器是智能清潔類工具,它的出現,幫助不少用戶減輕了家居清潔的負擔。越來越多消費者將手持吸塵器列為日常清潔必備工具。面對市場上
    發表于 06-25 20:52 ?332次閱讀

    巴士駕駛員輔助系統減輕工作負擔

    波蘭索拉瑞斯巴士客車公司宣布與波蘭波茲南理工大學合作,為巴士駕駛員研發輔助系統,減輕駕駛員們的日常工作負擔
    的頭像 發表于 04-01 17:18 ?3071次閱讀

    集成電路設計助于減輕電源設計人員的負擔

    集成電路設計,系統集成和封裝的最新發展有助于減輕電源設計人員的負擔。 在電力電子領域,每個系統設計人員都必須面對一些基本事實。首先,大多數項目將需要多輪設計,仿真和試驗,以通過嚴格的EMI(電磁干擾
    的頭像 發表于 01-01 10:58 ?1770次閱讀
    集成電路設計助于<b class='flag-5'>減輕</b>電源設計人員的<b class='flag-5'>負擔</b>

    PCB設計實例說明

    PCB設計實例說明
    發表于 05-17 09:29 ?0次下載

    利用無線電源減輕戰場電池負擔

      無線電源是一項新技術,已經有望改變我們從智能手機到電動汽車的充電方式,具有改變未來戰爭的獨特潛力,并減輕士兵以及陸地,空中和水下載人和無人駕駛車輛的戰場電池負擔。美國軍方對下馬士兵進行
    的頭像 發表于 10-28 10:37 ?1171次閱讀

    通過幾個實例分析如何解電磁兼容ESD問題?

    ESD對于很多電子產品是一個致命硬傷,如何設計好產品的ESD,是需要花很多時間和精力來研究的。下面通過幾個實例來和大家一起分享下。
    的頭像 發表于 06-27 10:32 ?1010次閱讀
    <b class='flag-5'>通過</b><b class='flag-5'>幾個</b><b class='flag-5'>實例</b>分析如何解電磁兼容ESD問題?

    請問DMA控制器可以減輕CPU負擔嗎?

    直接存儲器訪問 ( DMA )控制器,可以在內存和/或外設之間傳輸數據,而不需要 CPU 參與每次傳輸。合理利用 DMA 控制器,可以減輕CPU負擔
    的頭像 發表于 03-28 09:41 ?774次閱讀
    請問DMA控制器可以<b class='flag-5'>減輕</b><b class='flag-5'>CPU</b><b class='flag-5'>負擔</b>嗎?
    主站蜘蛛池模板: 九九午夜| 午夜大片免费完整在线看| 欧美精品人爱a欧美精品| 久久精品午夜| 美女黄色一级片| 我色综合| 手机看片久久青草福利盒子| jiuse视频| 国产在线精品美女观看| 欧美精品一二区| 五月综合色| 天天射狠狠干| va天堂| free欧美性| 天天天天射| 午夜视频在线免费看| v片视频| 天天爽视频| 亚洲国产日韩欧美在线as乱码| 国产永久免费爽视频在线| 奇米色吧| 奇米社区| 欧美三级网址| baoyu污污网站入口免费| 看5xxaaa免费毛片| susu成人影院| 狠狠色噜噜狠狠狠狠2021天天| 狠狠色噜噜综合社区| 天堂成人一区二区三区| 天堂影院在线| 男女做视频网站免费观看| 欧美a性| 成人精品人成网站| 夜夜爱夜夜做夜夜爽| 天天宗合网| 操香蕉| 在线视频一区二区三区| 亚洲a网站| 激情综合网色播五月| 特黄特色的大片观看免费视频| 色婷婷欧美|