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

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

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

系統(tǒng)編程的要點(diǎn)在于管理CPU的時(shí)間

Xilinx賽靈思官微 ? 來(lái)源:djl ? 作者:賽靈思Steve Leibso ? 2019-07-24 14:54 ? 次閱讀

Michael Barr發(fā)表了一篇題為“5個(gè)簡(jiǎn)單步驟使嵌入式軟件架構(gòu)更健壯”的博文。Barr曾經(jīng)是《嵌入式系統(tǒng)編程》雜志的主編,因此你應(yīng)該把他當(dāng)作是一個(gè)編寫(xiě)嵌入式代碼的專家,我是這么認(rèn)為的。

在這篇博文中,Barr寫(xiě)道:
“我收集到的大量的證據(jù)表明,大部分編程人員、技術(shù)經(jīng)理或者團(tuán)隊(duì)都不能真正理解一個(gè)好的固件架構(gòu)是什么樣的,怎么去實(shí)現(xiàn)它,甚至是怎么去識(shí)別他們看的架構(gòu)的好壞。這還包括了在團(tuán)隊(duì)中最有經(jīng)驗(yàn)的開(kāi)發(fā)人員?!?/p>

隨后,Barr的博文給出了開(kāi)發(fā)穩(wěn)定的嵌入式固件架構(gòu)的5個(gè)步驟程序。
1.確定需求
2.把架構(gòu)從設(shè)計(jì)中區(qū)分出來(lái)
3.管理CPU時(shí)間
4.測(cè)試設(shè)計(jì)
5.為改變做計(jì)劃

整篇博文值得花時(shí)間去閱讀,但在這里我想要聚焦在第3步:管理CPU時(shí)間,Barr寫(xiě)道:

“大部分產(chǎn)品都是把非實(shí)時(shí)、軟件實(shí)時(shí)和硬件實(shí)時(shí)的需求混合到一起。軟件的時(shí)間限制通常最具挑戰(zhàn)性,要以一種明確的方式去定義、測(cè)試和實(shí)施。舉個(gè)例子,在機(jī)頂盒設(shè)計(jì)中,偶爾丟掉一幀視頻數(shù)據(jù)可能是可以接受的,但是不能連續(xù)丟掉超過(guò)兩幀,并且不能丟掉任何音頻數(shù)據(jù),音頻數(shù)據(jù)是包括在相同的數(shù)字輸入數(shù)據(jù)流中,處理軟件時(shí)間限制的最簡(jiǎn)單的方法是把它們作為硬件時(shí)間限制一樣對(duì)待,必須滿足。

一旦識(shí)別了時(shí)間限制,在體系結(jié)構(gòu)上,第一步要做的是把盡可能多的有時(shí)間要求的需求從軟件中分離出來(lái),放到硬件中去處理。圖1展示了實(shí)時(shí)功能的處理方式的優(yōu)先級(jí)排序。如圖所示,處理實(shí)時(shí)功能最理想的地方是在一片FPGA或者一個(gè)專用的CPU中(不考慮時(shí)間限制的長(zhǎng)度)。只有當(dāng)不可能這樣做的時(shí)候,才會(huì)去選擇中斷服務(wù)程序(ISR),當(dāng)一個(gè)ISR也不能使用的時(shí)候,就應(yīng)該選擇使用一個(gè)高優(yōu)先級(jí)的任務(wù)?!?/p>

系統(tǒng)編程的要點(diǎn)在于管理CPU的時(shí)間

請(qǐng)注意,Barr建議使用專用的硬件來(lái)處理實(shí)時(shí)任務(wù),比如一片F(xiàn)PGA,或者一個(gè)專用處理器,他解釋了為什么要這么做:

“首先,因?yàn)檫@樣簡(jiǎn)化了非實(shí)時(shí)軟件的設(shè)計(jì)和實(shí)現(xiàn),在架構(gòu)上把有時(shí)間要求的需求從大量的軟件中剝離出來(lái),這樣可以使用新手編寫(xiě)的代碼,而不會(huì)影響到用戶安全性。把實(shí)時(shí)功能放到一起的另一個(gè)好處是,可以簡(jiǎn)化關(guān)于驗(yàn)證所有的時(shí)間限制都能滿足的分析過(guò)程?!?/p>

Barr是在Xilinx公布Zynq SoC之前寫(xiě)下這些話的,但他也許應(yīng)該寫(xiě)的更直接一些。Zynq SoC的可編程邏輯(PL)恰好就是你需要的這種資源,可以用來(lái)實(shí)現(xiàn)自定義的硬件,處理硬件實(shí)時(shí)需求,包括那些需要用到一些專用I/O的任務(wù),就象Adam Taylor在今天發(fā)表的博文中描述的那樣,” 亞當(dāng)泰勒玩轉(zhuǎn)MicroZed連載34:用MicroZed驅(qū)動(dòng)Adafruit RGB NeoPixel LED陣列…”,在這個(gè)簡(jiǎn)單的例子中,使用Zynq SoC 中的PL硬件邏輯為Adafruit NeoPixel LED條實(shí)現(xiàn)了一個(gè)專用的串行驅(qū)動(dòng)器。如果你需要做一些更復(fù)雜的事情,那么可以有多種途徑來(lái)使用Zynq PL,你可以在Zynq 的PL中例化復(fù)雜的硬件模塊,包括存儲(chǔ)器控制器、以太網(wǎng)MAC、DSP模塊以及很多其它類型的硬件模塊,這些模塊可以是商業(yè)IP,也可以是你自己用Verilog、VHDL開(kāi)發(fā)的模塊,或者是用Vivado HLS從C/C++代碼綜合轉(zhuǎn)換而來(lái)的設(shè)計(jì)。

如果出于某些原因,你的系統(tǒng)在實(shí)時(shí)性方面需要做得異常復(fù)雜,那么可以考慮使用多核設(shè)計(jì),多核Zynq SoC有兩個(gè)ARM Cortex-A9 MPCore處理器,工作頻率可以超過(guò)1GHz。如果需要,你可以使用其中一個(gè)ARM處理器內(nèi)核來(lái)處理實(shí)時(shí)代碼和實(shí)時(shí)操作系統(tǒng)(RTOS),另一個(gè)ARM處理器內(nèi)核可以運(yùn)行那些不需要或者不能夠?qū)崟r(shí)工作的代碼(在這里閱讀“Linux,” GUI, 和apps)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(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)投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10813

    瀏覽量

    210880
  • 系統(tǒng)編程
    +關(guān)注

    關(guān)注

    0

    文章

    8

    瀏覽量

    6237
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux系統(tǒng)編程

    Linux系統(tǒng)編程
    發(fā)表于 03-03 10:26

    什么是Linux系統(tǒng)編程

    什么是Linux系統(tǒng)編程?Linux系統(tǒng)編程也叫Linux下的高級(jí)編程,是介于應(yīng)用層和驅(qū)動(dòng)層之間的。學(xué)習(xí)了哪些知識(shí)后可以學(xué)習(xí)Linux系統(tǒng)編程?C語(yǔ)言基礎(chǔ)、Linux基本操作命令怎么學(xué)
    發(fā)表于 12-23 07:30

    時(shí)間管理和定時(shí)器編程基本知識(shí)匯總

    Linux系統(tǒng)編程第08期:時(shí)間管理和定時(shí)器編程 6年嵌入式開(kāi)發(fā)經(jīng)驗(yàn),在多家...
    發(fā)表于 12-23 08:32

    基于LonWorks的在系統(tǒng)編程技術(shù)

    LonWorks 技術(shù)的應(yīng)用使得在系統(tǒng)編程的內(nèi)涵得以更充分的體現(xiàn)。本文在概要介紹ISP 以及LonWorks 技術(shù)的基礎(chǔ)上, 詳細(xì)說(shuō)明采用基于Neuron 芯片的控制節(jié)點(diǎn)實(shí)現(xiàn)對(duì)CPLD 進(jìn)行在系統(tǒng)編程的具體
    發(fā)表于 04-16 14:12 ?8次下載

    C語(yǔ)言嵌入式系統(tǒng)編程教程

    C語(yǔ)言嵌入式系統(tǒng)編程教程 不同于一般形式的軟件編程,嵌入式系統(tǒng)編程建立在特定的硬件平臺(tái)上,勢(shì)必要求其編程語(yǔ)言具備較強(qiáng)的硬件直接操作能力。無(wú)疑
    發(fā)表于 02-10 10:33 ?200次下載

    C語(yǔ)言嵌入式系統(tǒng)編程教程

    C語(yǔ)言嵌入式系統(tǒng)編程教程
    發(fā)表于 01-16 13:54 ?36次下載

    C嵌入式系統(tǒng)編程

    C嵌入式系統(tǒng)編程
    發(fā)表于 10-23 16:27 ?14次下載

    C語(yǔ)言的嵌入式系統(tǒng)編程修煉之道

    C語(yǔ)言的嵌入式系統(tǒng)編程修煉之道
    發(fā)表于 10-24 08:36 ?29次下載
    C語(yǔ)言的嵌入式<b class='flag-5'>系統(tǒng)編程</b>修煉之道

    linux系統(tǒng)編程_中文版

    linux系統(tǒng)編程_中文版
    發(fā)表于 10-29 10:17 ?0次下載
    linux<b class='flag-5'>系統(tǒng)編程</b>_中文版

    如何通過(guò)Atmel Studio 6進(jìn)行系統(tǒng)編程

    如何通過(guò)Atmel Studio 6進(jìn)行系統(tǒng)編程
    的頭像 發(fā)表于 07-04 09:50 ?2969次閱讀

    EE-125:ADSP-218x嵌入式系統(tǒng)軟件管理和在系統(tǒng)編程(ISP)

    EE-125:ADSP-218x嵌入式系統(tǒng)軟件管理和在系統(tǒng)編程(ISP)
    發(fā)表于 05-18 16:37 ?10次下載
    EE-125:ADSP-218x嵌入式<b class='flag-5'>系統(tǒng)</b>軟件<b class='flag-5'>管理</b>和在<b class='flag-5'>系統(tǒng)編程</b>(ISP)

    SLG47004 在系統(tǒng)編程指南

    SLG47004 在系統(tǒng)編程指南
    發(fā)表于 02-02 19:05 ?0次下載
    SLG47004 在<b class='flag-5'>系統(tǒng)編程</b>指南

    為什么我們要掌握Linux系統(tǒng)編程?

    為什么我們要掌握Linux系統(tǒng)編程
    的頭像 發(fā)表于 05-17 10:00 ?831次閱讀

    Linux 系統(tǒng)編程的難點(diǎn)是什么

    對(duì)于有一定 Linux 開(kāi)發(fā)基礎(chǔ)希望進(jìn)階學(xué)習(xí) Linux 系統(tǒng)編程的開(kāi)發(fā)人員來(lái)說(shuō),其難點(diǎn)在于,Linux 所囊括的技術(shù)點(diǎn)繁雜,往往不知從何下手。
    發(fā)表于 06-28 12:54 ?599次閱讀

    SLG47004 在系統(tǒng)編程指南

    SLG47004 在系統(tǒng)編程指南
    發(fā)表于 07-04 18:51 ?0次下載
    SLG47004 在<b class='flag-5'>系統(tǒng)編程</b>指南