專利名稱::具有多個(gè)硬件塊的系統(tǒng)和操作該系統(tǒng)的方法具有多個(gè)硬件塊的系統(tǒng)和操作該系統(tǒng)的方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及一種具有多個(gè)硬件塊(hardwareblock)的系統(tǒng)以及操作該系統(tǒng)的方法,特別地,所述系統(tǒng)和方法適用于電源消耗被關(guān)注的情形,例如數(shù)字電視接收機(jī)的解調(diào)器中。已知,在例如用于數(shù)字電視接收機(jī)的解調(diào)器的系統(tǒng)中需要操作多個(gè)硬件塊。該系統(tǒng)可以運(yùn)行多個(gè)不同任務(wù),這些任務(wù)會(huì)在不同時(shí)間使用這些硬件塊。特別地,如果在電池供電的設(shè)備、例如在符合手持式數(shù)字廣播(DVB-H)標(biāo)準(zhǔn)的數(shù)字電視接收機(jī)中提供該系統(tǒng),那么電量消耗將會(huì)是非常重要的。本申請(qǐng)基于這樣一種認(rèn)識(shí),那就是通過控制硬件塊,可以有助于節(jié)電。根據(jù)本發(fā)明,在這里提供了一種用于操作系統(tǒng)的方法,其中該系統(tǒng)具有多個(gè)硬件塊,該方法包括根據(jù)是否需要使用相應(yīng)塊來獨(dú)立控制至每一個(gè)》更件塊的電源。根據(jù)本發(fā)明,在這里還提供了一種具有多個(gè)硬件塊的系統(tǒng),該系統(tǒng)被配置成根據(jù)是否需要使用相應(yīng)硬件塊來獨(dú)立控制至每一個(gè)硬件塊的電源。由此,只有在特定硬件塊作為特定服務(wù)或在系統(tǒng)中運(yùn)行的任務(wù)的一部分被使用的時(shí)候,所述硬件塊才會(huì)通電。而在其他任何時(shí)間,該硬件塊可被斷電,從而降低系統(tǒng)的電量消耗。優(yōu)選地,該系統(tǒng)包括用于相應(yīng)硬件塊的設(shè)備驅(qū)動(dòng)器,并且被配置成支持多個(gè)任務(wù),其中每一個(gè)任務(wù)都通過與相應(yīng)設(shè)備驅(qū)動(dòng)器進(jìn)行通信來使用一個(gè)或多個(gè)硬件塊。利用此方案,要想確定硬件塊應(yīng)該通電還是斷電是相對(duì)困難的,并且由此將會(huì)需要進(jìn)行大量處理。在多個(gè)任務(wù)、事實(shí)上是在供這些任務(wù)使用的服務(wù)中,任何一個(gè)任務(wù)或服務(wù)都有可能在某個(gè)時(shí)間使用特定硬件塊。當(dāng)某一個(gè)特定任務(wù)不再需要使用某個(gè)硬件塊時(shí),這時(shí)并不意味著所述硬件塊可以斷電,因?yàn)閯e的任務(wù)同樣有可能需要使用該硬件塊。優(yōu)選地,在每一個(gè)相應(yīng)設(shè)備驅(qū)動(dòng)器中都會(huì)實(shí)施計(jì)數(shù)器,該計(jì)數(shù)器被配置成在多個(gè)任務(wù)之一每次請(qǐng)求使用相應(yīng)硬件塊時(shí)遞增,并且被配置成4在多個(gè)任務(wù)之一每次停止使用相應(yīng)硬件塊時(shí)遞減。這樣做提供了一種極為有效和有利的方式來確定應(yīng)該為特定硬件塊加電還是斷電。舉個(gè)例子,如果計(jì)數(shù)器的初始值為0,那么當(dāng)計(jì)數(shù)器是非零值時(shí),很容易就可以確定應(yīng)該為相應(yīng)硬件塊加電。優(yōu)選地,該計(jì)數(shù)器是作為應(yīng)用編程接口實(shí)施的。這樣做提供了一種簡(jiǎn)單的實(shí)施方式,否則它將是一個(gè)非常復(fù)雜的處理。優(yōu)選地,該計(jì)數(shù)器提供了一個(gè)輸出,以便在計(jì)數(shù)器指示沒有要求使用相應(yīng)硬件塊的未完成請(qǐng)求的時(shí)候?qū)⑾鄳?yīng)硬件塊斷電。由此,其言外之意是計(jì)數(shù)器類似地可以提供一個(gè)輸出,以便在計(jì)數(shù)器指示需要使用相應(yīng)硬件塊的時(shí)候?yàn)橄鄳?yīng)硬件塊通電。優(yōu)選地,該計(jì)數(shù)器具有初始值零,以使該輸出能夠只在計(jì)數(shù)器具有非零值時(shí)為相應(yīng)的硬件塊通電。該系統(tǒng)還可以包括一個(gè)硬件時(shí)鐘塊,其中該塊具有用于系統(tǒng)時(shí)鐘信號(hào)的時(shí)鐘輸出,用于接收所述計(jì)數(shù)器的相應(yīng)輸出的電源輸入,用于相應(yīng)硬件塊的時(shí)鐘輸出,以及多個(gè)相應(yīng)的邏輯門。每一個(gè)相應(yīng)邏輯門都與時(shí)鐘輸入、相應(yīng)的電源輸入以及相應(yīng)的時(shí)鐘輸出相連,并且被配置成根據(jù)電源輸入來有選擇地向相應(yīng)時(shí)鐘輸出提供時(shí)鐘信號(hào)。由此應(yīng)該理解,硬件塊是通過將其從系統(tǒng)時(shí)鐘信號(hào)中移除而被斷電的。關(guān)于這一點(diǎn),應(yīng)該了解的是,大多數(shù)能量消耗是因?yàn)闀r(shí)鐘轉(zhuǎn)變產(chǎn)生的。計(jì)數(shù)器的輸出可以容易地被用來控制是否將系統(tǒng)時(shí)鐘信號(hào)提供給相應(yīng)的硬件塊。硬件塊可以包括定時(shí)器、UART、SPI、SDIO、調(diào)諧器、解調(diào)器、濾波器以及MPE-FEC中的至少一個(gè)。定時(shí)器提供系統(tǒng)時(shí)間的指示,并且允許將警報(bào)配置成在經(jīng)過預(yù)定時(shí)間量之后消失。UART(通用異步接收機(jī)/發(fā)射機(jī))是標(biāo)準(zhǔn)串行通信數(shù)據(jù)鏈路,所述串行通信數(shù)據(jù)鏈路用于在DVB-H接收機(jī)中將活動(dòng)的日志跟蹤到例如用于調(diào)試的計(jì)算機(jī)。SPI(串行外圍接口)是一個(gè)用于將集成電路這類在DVB-H接收機(jī)中使用的設(shè)備相互連接來與主機(jī)應(yīng)用處理器進(jìn)行通信并受其控制(也就是接收命令以及發(fā)送包含命令結(jié)果的響應(yīng))的標(biāo)準(zhǔn)同步通信數(shù)據(jù)鏈路。作為SPI的可行替換方案,SDIO(安全數(shù)字輸入/輸出)是一種用于將附屬設(shè)備連接到DVB-H接收機(jī)中使用的主機(jī)應(yīng)用處理器的標(biāo)準(zhǔn)。調(diào)諧器是用于提取和隔離頻譜中的特定射頻信道并將其向下變換到基帶(也就是將載頻帶到0HZ)的模擬集成電路。解調(diào)器是用于解調(diào)DVB-H信號(hào)的數(shù)字集成電路。濾波器是用于提取作為MPEG-2傳輸流的子集或是來自該傳輸流的特定數(shù)據(jù)分組的數(shù)字集成電路,其中這些數(shù)據(jù)分組是用其分組ID(PID)和表格ID表示的。MPE-FEC(多協(xié)議封裝-前向糾錯(cuò))是一種在MPEG-2傳輸流中封裝任何類型的數(shù)據(jù)(例如就DVB-H來說的IP分組)的標(biāo)準(zhǔn)方式。FEC是一種包含下列處理的方法在發(fā)射機(jī)側(cè)將額外的代碼封裝在MPEG-2傳輸流中,以及在接收機(jī)側(cè)使用這些代碼來檢測(cè)和糾正MPE數(shù)據(jù)中的傳輸差錯(cuò)。該系統(tǒng)可以作為解調(diào)器、例如作為集成電路的可互換式模塊來提供。同樣,在數(shù)字電視接收機(jī)中也可以提供該系統(tǒng),例如將其作為接收機(jī)內(nèi)部的解調(diào)器來加以提供。優(yōu)選地,所述解調(diào)器和/或接收機(jī)符合DVB-H標(biāo)準(zhǔn)。本發(fā)明還提供了一種用于實(shí)施所述處理的計(jì)算機(jī)程序。例如應(yīng)用程序接口的計(jì)算機(jī)程序可以被提供來用在所描述的設(shè)備驅(qū)動(dòng)器中。從以下參考附圖并且只作為實(shí)例給出的描述中可以更清楚地了解本發(fā)明,其中圖1描述的是可以實(shí)現(xiàn)本發(fā)明的設(shè)備的實(shí)例;圖2示意性描述了一個(gè)使用本發(fā)明的系統(tǒng);圖3提供了本申請(qǐng)實(shí)施例的備選示意圖4描述的是用于圖3裝置的復(fù)位處理;圖5描述的是用于圖3裝置的取消(abort)處理;圖6示意性描述了在圖3裝置中工作的任務(wù)、服務(wù)和設(shè)備驅(qū)動(dòng)器的實(shí)例;圖7示意性描述了一個(gè)設(shè)備驅(qū)動(dòng)器;圖8示意性描述了硬件設(shè)備的功率控制;圖9描述了各種通電和斷電狀態(tài);圖IO描述了帶有附加時(shí)間片任務(wù)的、圖6的方案;以及圖11描述了各種任務(wù)的相對(duì)優(yōu)先級(jí)。本發(fā)明旨在應(yīng)用于移動(dòng)電視接收機(jī)(2)中,例如圖1所示的移動(dòng)電話設(shè)備(2)。這種移動(dòng)電視接收才幾可以依照歐洲使用的DVB-H(手持式數(shù)字視頻廣播)標(biāo)準(zhǔn)來工作。圖示接收機(jī)(2)包括用于顯示接收到的電視節(jié)目圖像的顯示器(4),以及允許用戶操作或控制接收機(jī)(2)的用戶接口(6),其中該用戶接口例如包含多個(gè)按鍵(8)。接收到的電視節(jié)目的音頻部分的音頻再現(xiàn)可以借助一對(duì)耳機(jī)(10)而被提供給用戶。圖2示意性描述了在接收數(shù)字電視信號(hào)的過程中使用的接收機(jī)(2)的一部分。在圖示實(shí)施例中,接收機(jī)(2)包括它自己的應(yīng)用處理器或主機(jī)(12),其中所述應(yīng)用處理器或主機(jī)可以用于操作接收機(jī)(2)的電視功能和其他功能、例如在將接收機(jī)(2)也當(dāng)作電話時(shí)的電話操作。就此而論,該應(yīng)用處理器(12)可以包括多種中間件(14)以及用于存儲(chǔ)此類中間件的相關(guān)存儲(chǔ)器。同樣,如所示,接收機(jī)(2)包括專門被配置成處理電視功能的模塊(16)。該模塊(16)可以單獨(dú)制造和銷售,并且被提供在眾多不同的接收機(jī)中使用。雖然沒有描述,但是該模塊(16)被配置成輸出用于在顯示器(4)上顯示的視頻數(shù)據(jù)以及由耳機(jī)(10)再現(xiàn)的音頻數(shù)據(jù)。在用戶接口(6)的控制下,借助應(yīng)用處理器(12)可以對(duì)模塊(16)進(jìn)行控制,例如改變電一見頻道。提供了天線(18),以便接收調(diào)制在各種射頻載波上的多個(gè)電視信號(hào)。在模塊(16)內(nèi)部,調(diào)諧器(20)被配置成調(diào)諧特定的載波頻率,并且將接收到的調(diào)制信號(hào)提供給解調(diào)器(22)。該解調(diào)器(22)包括多個(gè)硬件單元(24)(除了調(diào)諧器(20)之外),例如解調(diào)器和濾波器塊。這些部件是在先前從應(yīng)用處理器(12)下載的固件(26)的控制下工作的,由此可以提供針對(duì)模塊(16)的完整操作并且根據(jù)需要來輸出音頻/視頻信號(hào)。圖3提供的是模塊(16)的結(jié)構(gòu)的代替的示意圖。總線(28)允許在模塊(16)的塊之間進(jìn)行通信。調(diào)諧器(20)和其他硬件塊(24)則被連接,以便與處理器(30)進(jìn)行通信。在這里還提供了串行外圍接口(32),以便與接收機(jī)(2)的應(yīng)用處理器(12)進(jìn)行通信。此外,在這里還提供了ROM(34)和RAM(36)。圖4是示意性描述在模塊(16)的啟動(dòng)過程中在圖3的裝置中發(fā)生的過程的流程圖。在步驟S10,其中為模塊(16)和處理器(30)提供了一個(gè)復(fù)位信號(hào)。這樣則會(huì)導(dǎo)致處理器(30)開始執(zhí)行位于地址0x0000的指令,其中該地址在物理上映射到ROM(34),并且所述ROM自身包含了用于從接收機(jī)(2)的應(yīng)用處理器(12)下載代碼的引導(dǎo)裝載器。在步驟S12,通過使用串行外圍接口(32),引導(dǎo)裝載器從應(yīng)用處理器(12)接收引導(dǎo)配置參數(shù)并且將其存入RAM(36)。舉例來說,這些參數(shù)可以包括設(shè)備的帶寬(例如5、6、7或8MHz)以及接收機(jī)源時(shí)鐘的頻率。然后,在步驟S14,引導(dǎo)裝載器從應(yīng)用處理器(12)下載固件(26)并且將其保存在RAM(36)中。保存在RAM(36)中的下栽圖像將包括用于該模塊(16)的操作系統(tǒng)。很明顯,出于所論述的原因,這個(gè)處理將會(huì)占用明顯的時(shí)間量,例如大約200ms。在步驟S16,ROM引導(dǎo)裝載器重新映射存儲(chǔ)器,使得地址0x0000現(xiàn)在在物理上是指向RAM(36)而不是ROM(34)的。在步驟S18,使得處理器(30)再次開始執(zhí)行位于地址0x0000的指令,該指令現(xiàn)在(由于步驟S16)在物理上將會(huì)映射到RAM(36),而所述RAM(36)自身則包含了固件(26)。在步驟S20,保存在RAM(36)中的固件促使處理器(30)啟動(dòng)同樣保存在RAM(36)中的操作系統(tǒng)。在步驟S22,固件(26)收回那些在步驟S12中存儲(chǔ)的配置參數(shù)值。優(yōu)選地,這些參數(shù)值是保存在RAM(36)中的預(yù)定或固定位置的。然后,這些值將會(huì)根據(jù)需要而被輸入存儲(chǔ)器,由此在步驟S24中可以對(duì)包括調(diào)諧器和濾波器等等的硬件塊進(jìn)行初始化。特別地,該固件在硬件初始化中使用這些配置參數(shù)。最后,在步驟S26中創(chuàng)建用于執(zhí)行各種任務(wù)的恰當(dāng)線程(在下文中將會(huì)進(jìn)一步論述)。這時(shí),模塊(16)仍舊會(huì)等待來自應(yīng)用處理器(12)的、關(guān)于為恰當(dāng)電視節(jié)目等等調(diào)諧或創(chuàng)建濾波器的命令。在使用接收機(jī)(2)的過程中,如果需要重新初始化大量的硬件元件或塊(20,24),那么將會(huì)耗費(fèi)時(shí)間。例如,有可能決定改變RF信道,也就是改變載波。實(shí)際上,如果接收信號(hào)丟失,那么應(yīng)用處理器(12)可以決定移動(dòng)到一個(gè)不同載波,而不是僅僅等待恢復(fù)接收。對(duì)處理器(30)來說,還可以安排來釋放并且隨后單獨(dú)地重啟每一個(gè)硬件塊(20,24)。但是,本申請(qǐng)首次認(rèn)定這種處理是非常復(fù)雜和耗時(shí)的。本申請(qǐng)還考慮到了重新應(yīng)用參考圖4所描述的復(fù)位處理的可能性。這個(gè)處理是一個(gè)非常簡(jiǎn)單和有效的處理。但是,這個(gè)處理有可能會(huì)很耗時(shí),此外,參考如上所述的步驟S14,將固件下載到RAM(36)是需要耗費(fèi)時(shí)間的。本申請(qǐng)首次考慮使用取消命令,其中與操作圖4的整個(gè)復(fù)位處理不同,該命令將會(huì)促使模塊(16)停止任何的和所有當(dāng)前操作,并且釋放所有資源,而不需要處理器(30)單獨(dú)停止每一個(gè)單個(gè)操作。就此而論,控制處理器(30)的固件(26)并沒有單獨(dú)停止操作和釋放資源,而是單純地重新初始化了操作系統(tǒng)核心。圖5是示意性描述在接收取消命令時(shí)發(fā)生的處理的流程圖。在步驟S30,從應(yīng)用處理器(12)向模塊(16)發(fā)送取消命令。作為響應(yīng),在步驟(S32),固件不但會(huì)終止(kill)所有線程、定時(shí)器和事件,而且還會(huì)終止互斥體,借助于此,由兩個(gè)線程執(zhí)行的同時(shí)操作被阻止。這樣一來,模塊(16)執(zhí)行的所有進(jìn)程都會(huì)停止其正在執(zhí)行的工作,并且所有的操作系統(tǒng)存儲(chǔ)器結(jié)構(gòu)都會(huì)被清空。在實(shí)踐中,一部分存儲(chǔ)器包含了用于激活線程的操作系統(tǒng)數(shù)據(jù),由此操作系統(tǒng)將會(huì)知道那些活動(dòng)的線程。當(dāng)固件終止所有線程時(shí),沒有必要?jiǎng)h除所有已存儲(chǔ)線程,而是僅僅清除操作系統(tǒng)用以存儲(chǔ)活動(dòng)線程列表的存儲(chǔ)塊。由此,操作系統(tǒng)不會(huì)看到曾經(jīng)存在的任何線程。很明顯,這個(gè)處理幾乎是即時(shí)的。在步驟S34,固件再次啟動(dòng)操作系統(tǒng)。換句話說,它會(huì)重新初始化引導(dǎo)功能,并且執(zhí)行與圖4中的S20相似的處理。然后,與圖4相比,則沒有必要執(zhí)行步驟S22,這是因?yàn)樵谶@里沒有必要重新存儲(chǔ)配置參數(shù);這些配置參數(shù)已經(jīng)被正確保存在了存儲(chǔ)器中。這時(shí),值得一提的是,如果需要使用不同的配置參數(shù),例如使用不同的帶寬,那么一個(gè)全復(fù)位處理是需要的。然后,該處理跳轉(zhuǎn)到步驟S36,在那里,固件將會(huì)初始化硬件。與復(fù)位處理的步驟S24相比,取消處理的步驟S36更簡(jiǎn)單。尤其是,并未重新初始化那些涉及通信的硬件,尤其是串行外圍接口(32)。在優(yōu)選實(shí)施例中,由于串行外圍接口(32)處理的是與應(yīng)用處理器(12)進(jìn)行且涉及取消處理的通信,因此串行外圍接口(32)并未重新初始化。另一方面,如果在存儲(chǔ)器中保持了處理狀態(tài)并且在初始化之后將其恢復(fù)至串行外圍接口(32),那么將可以執(zhí)行與復(fù)位處理中的步驟S24相類似的完整的硬件重新初始化。在步驟S38,以與復(fù)位處理中的步驟S26相類似的方式來創(chuàng)建恰當(dāng)?shù)木€程。此外,在步驟S40中,固件借助串行外圍接口(32)來向應(yīng)用處理器(12)發(fā)送一個(gè)取消響應(yīng),由此向應(yīng)用處理器(12)確認(rèn)該取消處理已經(jīng)完成。以下各項(xiàng)并未重新初始化模塊配置(在步驟S22中進(jìn)行了),VIC(矢量化中斷控制器)。某些其他塊僅僅被部分地重新初始化解調(diào)器,SPI和SDIO控制器(用于主機(jī)協(xié)議通信),以及DMA(直接存儲(chǔ)器存取)控制器。由此,在這里可以提供一種解調(diào)器設(shè)備以及一種用于操作該解調(diào)器設(shè)備的方法,其中為了通過釋放單個(gè)資源來避免關(guān)機(jī),引導(dǎo)(bootstrap)操作系統(tǒng)核心來停止接收機(jī)。模塊(16)可以作為解調(diào)器芯片來提供,例如DVB-H解調(diào)器芯片??梢詾镈VB-H解調(diào)器芯片提供嵌入式固件。對(duì)執(zhí)行單個(gè)基本操作的任何軟件系統(tǒng)來說,無論該軟件系統(tǒng)是否為嵌入式,這種通用方法都是適用的;如果在取消或停止當(dāng)前操作之后系統(tǒng)狀態(tài)與通電之后的初始狀態(tài)等價(jià),那么這種通用方法尤其是適用的。如從上文中可以清楚了解的一樣,接收機(jī)(16)實(shí)施使能主機(jī)應(yīng)用處理器(12)對(duì)其進(jìn)行控制的通信協(xié)議。這個(gè)協(xié)議包含了用于配置和啟動(dòng)接收機(jī)U6)的主要功能的命令,例如掃描頻譜來發(fā)現(xiàn)DVB-H信號(hào),調(diào)諧到特定頻率并且設(shè)置SI和MPE濾波器,以及接收凈荷數(shù)據(jù)。與任何控制系統(tǒng)一樣,該協(xié)議還包括用于停止操作的命令,例如停止正在執(zhí)行的頻譜掃描處理,以及停止和釋放(清除)SI和MPE濾波器。但是,接收機(jī)(2)實(shí)施的是這樣一種通信協(xié)議,其中該通信協(xié)議的新穎之處在于1)定義了一個(gè)附加的弁ABORT命令,該命令促使接收機(jī)停止任何的和所有當(dāng)前操作并釋放所有資源,而不需要主機(jī)應(yīng)用處理器單獨(dú)停止每一個(gè)單個(gè)的任務(wù),以及2)提供弁ABORT命令自身的固件實(shí)施方式,它不會(huì)單獨(dú)停止操作和釋放資源,但取而代之的是,它會(huì)重新初始化#:作系統(tǒng)核心。例如在調(diào)諧到不同頻率或是創(chuàng)建SI和MPE濾波器的不同集合的預(yù)備中,弁ABORT命令為主機(jī)應(yīng)用處理器(12)提供了一種將接收機(jī)(16)返回到干凈狀態(tài)的快速簡(jiǎn)單的方式。此外,如果不必循環(huán)經(jīng)過所有操作來將其停止以及不需要釋放所有資源,那么將會(huì)減少代碼數(shù)量,并且將會(huì)使嵌入式固件更小,由此節(jié)約嵌入式存儲(chǔ)器。在一個(gè)特定實(shí)施例中,接收機(jī)軟件(先前被描述成是固件)實(shí)施方式在來自ExpressLogic,Inc.的嵌入式實(shí)時(shí)核心操作系統(tǒng)ThreadX上運(yùn)行。在ThreadX系統(tǒng)的初始化過程中,可以區(qū)別多個(gè)步驟初始化過程0.系統(tǒng)復(fù)位(中斷被禁用)1.跳轉(zhuǎn)到圖像輸入點(diǎn)2.開發(fā)工具初始化(包括全局變量初始化)(在某些實(shí)施例中可以移除該步驟)。3.main():執(zhí)行預(yù)備處理(這包括設(shè)置定時(shí)器之類的硬件初始化)(該步驟作為圖像輸入點(diǎn)的可以組合地完成,由此將不存在main()函數(shù))。4.通過調(diào)用tx—kernel—enter()來啟動(dòng)ThreadX。5.由ThreadX"i周用tx—application—define()來a.創(chuàng)建系統(tǒng)資源(應(yīng)用線程,互斥體,事件標(biāo)志,定時(shí)器)b.I丸行i殳備初始化,以及c.調(diào)用軟件模塊的初始化方法。6.進(jìn)入線程調(diào)度循環(huán)(中斷被使能)。在這個(gè)初始化處理之后,系統(tǒng)處于已知狀態(tài)X,其中,它可以開始接收來自主機(jī)的命令。在接收到弁ABORT命令時(shí),通過重新執(zhí)行上述初始化序列的一部分來迫使系統(tǒng)進(jìn)入相同的已知狀態(tài)X。取消處理0.主機(jī)發(fā)送弁ABORT。1.在定時(shí)器線程中a.禁用中斷b.通過將OS資源結(jié)構(gòu)重新初始化到0來廢棄所有OS資源(應(yīng)用線程,互斥體,事件標(biāo)志,定時(shí)器)。c.設(shè)置PostABORT標(biāo)志(可供才莫塊實(shí)施方式查詢以識(shí)別跟隨在弁ABORT之后的初始化處理的全局變量)現(xiàn)在,該狀態(tài)與初始化步驟3之后的狀態(tài)相匹配。2.通過調(diào)用tx—kernel—enter()來重啟ThreadX。3.ThreadX將會(huì)調(diào)用tx—application—define()來a.重新創(chuàng)建系統(tǒng)資源(應(yīng)用線程,互斥體,事件標(biāo)志,定時(shí)器)b.重新執(zhí)行設(shè)備初始化c.調(diào)用軟件模塊的初始化方法,以及d.向主機(jī)發(fā)送關(guān)于存ABORT的響應(yīng)。4.進(jìn)入線程調(diào)度循環(huán)(啟用中斷)。作為步驟3.c的一部分,軟件模塊的實(shí)施應(yīng)該考慮到只在初始化處理的步驟2中對(duì)全局和靜態(tài)變量執(zhí)行初始化。如果根據(jù)弁ABORT預(yù)期重新初始化任一全局或靜態(tài)變量,那么應(yīng)該在特定模塊的初始化方法中顯性#1行該處理。圖6示意性描述了數(shù)字電視接收中的軟件端的實(shí)例,其中舉例來說,所述數(shù)字電視接收例如可以在如上面所述的模塊(16)的模塊中工作。在頂層,正在由模塊(16)執(zhí)行的多個(gè)功能被圖示為線程或任務(wù)(40)。這些線程和任務(wù)中的每一個(gè)都使用了可以從處于其下方的層中得到的一個(gè)或多個(gè)服務(wù)(42)。至少在某些環(huán)境中,為了執(zhí)行用于這些任務(wù)的服務(wù)(42)的功能,這些服務(wù)(42)將需要使用模塊(16)中的硬件(20,24)。為此目的,每一個(gè)服務(wù)都可以使用與相應(yīng)設(shè)備或硬件塊(20,24)相對(duì)應(yīng)的一個(gè)或多個(gè)設(shè)備驅(qū)動(dòng)器(44)。本申請(qǐng)首次考慮到了不同設(shè)備或硬件塊(20,24)的電量消耗問題。當(dāng)開啟這些設(shè)備或硬件塊(20,24)時(shí),它們將會(huì)消耗電量,而本申請(qǐng)認(rèn)為,在不使用這些設(shè)備或硬件塊(20,24)時(shí),將其關(guān)閉,那么將會(huì)是有益的,對(duì)電池供電的設(shè)備來說尤其如此。例如,對(duì)于數(shù)字電視接收機(jī)來說,接收和處理突發(fā)(burst)中的數(shù)據(jù)塊是相當(dāng)常見的。因此,在接收和處理這些突發(fā)的過程中,在不同時(shí)間,各種硬件塊或設(shè)備既有可能處于使用之中,也有可能未被使用。再次參考圖6,應(yīng)該理解的是,對(duì)同時(shí)運(yùn)行的不同任務(wù)和服務(wù)來說,不同的任務(wù)和服務(wù)有可能會(huì)在同一時(shí)間需要設(shè)備和設(shè)備驅(qū)動(dòng)器。這樣則很難在任一時(shí)間確定是否應(yīng)該為特定設(shè)備或硬件塊(20,24)通電還是斷電。特別地,單個(gè)的任務(wù)會(huì)以彼此獨(dú)立的方式工作,同樣,單獨(dú)的服12務(wù)也會(huì)以彼此獨(dú)立的方式工作,由此一般來說,一個(gè)任務(wù)或一個(gè)服務(wù)將不知道其他任務(wù)或服務(wù)正在使用哪些設(shè)備或硬件。作為該問題的解決方案,本申請(qǐng)?zhí)岢隽藶槊恳粋€(gè)驅(qū)動(dòng)器(44)使用電源管理應(yīng)用編程接口(API)(46)。在圖7中對(duì)此進(jìn)行了示意性描述。實(shí)際上,電源管理API包括計(jì)數(shù)器,該計(jì)數(shù)器在服務(wù)(42)每次請(qǐng)求使用相應(yīng)設(shè)備或硬件塊(20,24)的時(shí)候遞增,并且會(huì)在每次停止使用設(shè)備或硬件塊(20,24)的時(shí)候遞減。對(duì)該裝置來說,應(yīng)該了解的是,只要計(jì)數(shù)器具有遞增或非零狀態(tài),那么將會(huì)存在一個(gè)指示,該指示表明至少一個(gè)服務(wù)需要使用相應(yīng)的設(shè)備或硬件時(shí)鐘(20,24),由此應(yīng)該保持通電。只有當(dāng)計(jì)數(shù)器處于零值或者未遞增時(shí),相應(yīng)設(shè)備或硬件塊(20,24)才可以斷電。如圖7示意性描述的那樣,電源管理API(46)為相應(yīng)設(shè)備或硬件塊(20,24)提供了一個(gè)電源信號(hào)(48)。響應(yīng)于這個(gè)電源信號(hào)(48),相應(yīng)的設(shè)備或硬件塊(20,24)可以通電或斷電。該電源信號(hào)(48)可以用多種不同方式來使用,以便控制相應(yīng)設(shè)備或硬件塊(20,24)的電源。圖8示意性描述了一種裝置,在該裝置中,電源信號(hào)(48)是與主時(shí)鐘信號(hào)(50)和時(shí)鐘塊(52)結(jié)合使用的。在設(shè)備或硬件塊(20,24)中存在兩個(gè)主要的電量消耗源。首先,依照時(shí)鐘信號(hào)的每一次轉(zhuǎn)換都具有相對(duì)顯著的電量消耗。其次,在不考慮時(shí)鐘信號(hào)的情況下也是存在泄露的。例如依照如圖8所示的優(yōu)選實(shí)施例,至特定設(shè)備或硬件塊(20,24)的所有電源可以被關(guān)閉,但是僅僅停止用于相應(yīng)設(shè)備或硬件塊(20,24)的時(shí)鐘來阻止因?yàn)檗D(zhuǎn)換所導(dǎo)致的電源損失,這是不能滿足需要的。在圖8所示的實(shí)施例中,時(shí)鐘信號(hào)(50)借助時(shí)鐘塊(52)被提供給硬件塊(20,24)。這可以作為一個(gè)包含了分別與硬件塊(20,24)相對(duì)應(yīng)的多個(gè)門(54)的硬件塊來實(shí)現(xiàn)。每一個(gè)門根據(jù)相應(yīng)的電源信號(hào)(48)而被使能或禁用。這樣,驅(qū)動(dòng)器(44)的電源管理API(46)對(duì)是否將時(shí)鐘信號(hào)(50)提供給相應(yīng)的硬件塊(20,24)進(jìn)行控制??梢允褂?或"或"與"門。對(duì)"與"門來說,如果將電源信號(hào)(48)設(shè)置成1,那么將會(huì)為硬件通電;如果將其設(shè)置為"零",則會(huì)將硬件斷電。對(duì)"或,,門來說,如果將電源信號(hào)(48)設(shè)置成"1",那么會(huì)將時(shí)鐘塊保持在"1",由此凍結(jié)時(shí)鐘并且由此將該塊斷電;如果將電源信號(hào)(48)設(shè)置成零,那么將會(huì)使得塊時(shí)鐘與系統(tǒng)時(shí)鐘等價(jià),由此將會(huì)為該塊通電。優(yōu)選地,該硬件使用"或"門,并且由此必須反轉(zhuǎn)電源信號(hào)(l表示切斷,o表示接通)。應(yīng)該了解的是,這種裝置可以使用在任何一種其中存在多個(gè)單獨(dú)硬件塊的電路中,其中這些硬件塊可以有選擇地通電或斷電。這種裝置在數(shù)字電視接收機(jī)、例如DVB-H接收機(jī)或模塊中是尤其有用的,其中所述模塊例如是在此類接收機(jī)中使用的模塊(16)。但是,它還具有其他應(yīng)用,例如在移動(dòng)電話或個(gè)人計(jì)算才幾中應(yīng)用。由此可以提供一種系統(tǒng)和操作系統(tǒng)的方法,尤其是所述系統(tǒng)和方法使用了參考計(jì)數(shù),以便通過禁用那些不需要的單獨(dú)硬件塊的時(shí)鐘來節(jié)約電量。對(duì)于任何在其中能夠單獨(dú)控制硬件塊的電源狀態(tài)并且由多個(gè)軟件任務(wù)或線程異步使用硬件塊的系統(tǒng),該方法都是適用的。對(duì)電源管理來說,與具有單獨(dú)的主電源狀態(tài)(接通或切斷)不同,接收才幾硬件(20,24,52)將會(huì)允許單獨(dú)控制每一個(gè)塊(20,24)的電源,以便節(jié)約更多的電力。例如,一旦接收到突發(fā)并且將其存入MPE-FEC存儲(chǔ)器(24),則可以在對(duì)突發(fā)糾錯(cuò)以及將其傳送到主機(jī)或應(yīng)用處理器(12)的時(shí)候關(guān)閉調(diào)諧器(20)、解調(diào)器(24)以及濾波器塊(24)。只有在此之后,MPE-FEC塊才會(huì)關(guān)閉。如上所述,嵌入式固件實(shí)施方式中的難題源于這樣一個(gè)事實(shí),即單個(gè)硬件塊(20,24)的電源狀態(tài)有可能依賴于多個(gè)任務(wù)(40)的活動(dòng)。例如,調(diào)諧器可以供接口處理機(jī)(或接口處理機(jī)任務(wù)(40))使用,以便執(zhí)行SCAN命令,此外它也可以由時(shí)間切片器(或時(shí)間切片器(40))使用,以便接收突發(fā)?;蛘撸鯩PE-FEC可能要處理并行的IP服務(wù)。為了簡(jiǎn)化實(shí)施方式,每一個(gè)設(shè)備驅(qū)動(dòng)器(44)都可以獨(dú)立管理受其控制的硬件塊的電源狀態(tài)。就此而論,同步電源管理API的實(shí)例如下請(qǐng)求設(shè)備將其電源狀態(tài)保持在POWERED—ON上Err—tDrvXXX—PowerUp()放棄保持在該電源狀態(tài)上Err—tDrvXXX—PowerDown()客戶機(jī)或服務(wù)(42)將會(huì)調(diào)用PowerUp()函數(shù)來表明其需要將設(shè)備的電源狀態(tài)保持在POWERED—ON。如果設(shè)備(20,24)尚未開啟,那么驅(qū)動(dòng)器(44)將會(huì)立即開啟該設(shè)備。然后,在可以放棄所述保持時(shí),客戶機(jī)或服務(wù)(42)將會(huì)調(diào)用PowerDown()。但是,實(shí)際上,只有在沒有其他客戶機(jī)或服務(wù)(42)保持通電的時(shí)候,該設(shè)備的電源狀態(tài)才會(huì)切換到POWERED—OFF。這種處理是通過讓驅(qū)動(dòng)器(44)保持一個(gè)電源狀態(tài)計(jì)數(shù)器來實(shí)現(xiàn)的。該狀態(tài)被初始化為O,并且會(huì)在每一次調(diào)用PowerUp()的時(shí)候遞增,以及在每次調(diào)用PowerDown()的時(shí)候遞減。當(dāng)計(jì)數(shù)器值為零時(shí),設(shè)備(20,24)將會(huì)關(guān)閉。一些服務(wù)(42)(調(diào)諧,SI提取和IP提取)將實(shí)施相同的API。每一個(gè)設(shè)備驅(qū)動(dòng)器實(shí)施電源管理API,并且服務(wù)或任務(wù)可以通過使用所述API來控制相應(yīng)硬件塊的電源狀態(tài)。只有系統(tǒng)任務(wù)才需要具有例如何時(shí)需要為調(diào)諧器和解調(diào)器通電的觀點(diǎn)。例如,調(diào)諧服務(wù)知道必須將調(diào)諧器和解調(diào)器塊通電來執(zhí)行調(diào)諧操作。但是,它不知道何時(shí)可以將這些塊斷電,其中該時(shí)間有可能處于接收當(dāng)前突發(fā)(也就是時(shí)間片)的末期,只有IP接收任務(wù)才知道這個(gè)時(shí)間。在優(yōu)選的固件架構(gòu)中,任務(wù)并未直接訪問設(shè)備驅(qū)動(dòng)器及其API,而是僅僅通過服務(wù)層中的中間服務(wù)塊來對(duì)其進(jìn)行訪問。優(yōu)選地,在這里應(yīng)該存在一種可供服務(wù)將來自任務(wù)的電源管理請(qǐng)求轉(zhuǎn)發(fā)到設(shè)備驅(qū)動(dòng)器的方法。這通過讓服務(wù)與設(shè)備驅(qū)動(dòng)器實(shí)施相同的電源管理API來實(shí)現(xiàn)。在服務(wù)中,電源管理API是以一種與其在設(shè)備驅(qū)動(dòng)器中相同的方式來實(shí)施的,也就是說,它借助參考計(jì)數(shù)來實(shí)施。這其中的唯一區(qū)別在于代替控制電源信號(hào),當(dāng)參考計(jì)數(shù)分別是非零或零時(shí),服務(wù)調(diào)用底層設(shè)備驅(qū)動(dòng)器的PowerUp()和PowerDown()函數(shù)。舉個(gè)例子,借助上述API,圖6所示的時(shí)間切片器任務(wù)很容易就可以如以下偽4戈碼顯示的那樣實(shí)施永遠(yuǎn)重復(fù)SrvTune—PowerUp()SrvTune一AcquireSignalLock()/*異步的*/SrvSi—PowerUpO15Srvlp—PowerUp()SrvIp一ReceiveBurstO/*異步的*/SrvTune—PowerDown()SrvSi—PowerDown()Srvlp—ProcessBurst()/*異步的*/Srvlp—PowerDown()RT〇SsleepuntilSrvlp—GetNextTimeSlice()/*阻止*/本申請(qǐng)?zhí)岢隽艘环N新的系統(tǒng),在該系統(tǒng)中,由多個(gè)軟件任務(wù)組合使用的單獨(dú)硬件塊(20,24)的電源狀態(tài),可以通過禁用單獨(dú)硬件塊(20,24)的單獨(dú)時(shí)鐘信號(hào)來獨(dú)立控制。在最低的軟件層(設(shè)備驅(qū)動(dòng)器)(44)中,當(dāng)1)有多個(gè)軟件任務(wù)共享相同的硬件資源時(shí);以及2)當(dāng)多個(gè)軟件任務(wù)異步使用所述硬件資源(并且需要將其通電)的時(shí)候,可以使用參考計(jì)數(shù)來確定何時(shí)可以為硬件塊通電或斷電。標(biāo)準(zhǔn)的電源控制參考計(jì)數(shù)API不但可以在驅(qū)動(dòng)器層中實(shí)施,而且可以在其上的所有軟件層中實(shí)施,以使得頂層不必知道哪些硬件塊通過對(duì)于中間層的函數(shù)調(diào)用被間接使用。這樣,在多任務(wù)多線程系統(tǒng)中可以節(jié)約電力。此外,由于某全局狀態(tài)不需要被利用受電源控制的硬件塊的所有軟件元件查詢或修改,因此,該系統(tǒng)的架構(gòu)和實(shí)施方式可以:故簡(jiǎn)化。以下實(shí)例是以圖2和6的實(shí)施例為基礎(chǔ)的,該實(shí)例假設(shè)IP提取主要需要的是使用三個(gè)主硬件元件,即調(diào)諧器/解調(diào)器塊、傳輸濾波器塊以及FEC幀控制器塊。軟件架構(gòu)包括處于服務(wù)頂層之上的任務(wù),其中所述服務(wù)處于驅(qū)動(dòng)器之上。如上所述,每一個(gè)硬件塊(20,24)都是由驅(qū)動(dòng)器(44)控制的。實(shí)施電源管理功能的硬件塊(20,24)具有其PowerUp()和PowerDown()函數(shù)對(duì)。每一個(gè)PowerUp()函數(shù)都會(huì)對(duì)其被調(diào)用的次數(shù)進(jìn)行計(jì)數(shù),在其首次被調(diào)用時(shí),硬件塊將會(huì)通電,并且計(jì)數(shù)器使用將會(huì)遞增。而針對(duì)該P(yáng)owerUp()的所有后續(xù)調(diào)用將只會(huì)遞增該使用計(jì)數(shù)器。PowerDown()是以相同的方式工作的,但是它會(huì)遞減其使用計(jì)數(shù)器,直至該計(jì)數(shù)器達(dá)到O,這時(shí),硬件(20,24)實(shí)際是斷電的。舉個(gè)例子,硬件塊及其電源控制功能是如下給出的。調(diào)諧器塊需要在任何其他塊之前被通電。解調(diào)器塊同樣需要在可以提取數(shù)據(jù)之前活動(dòng)。在本實(shí)例中,為了簡(jiǎn)化說明,假設(shè)調(diào)諧器和解調(diào)器塊是耦合在一起的。但是,調(diào)諧器和解調(diào)器塊可以具有它們自己的PowerUp()和PowerDown()函數(shù),以便節(jié)約電力。通過使用DrvDemux—PowerUp()和DrvDemux—PowerDown()函數(shù),可以激活或去激活傳輸過濾器時(shí)鐘,以便節(jié)約電力。通過使用DrvFec—PowerUp()和DrvFec—PowerDown()函數(shù),可以激活或去激活FEC幀控制器時(shí)鐘,以便節(jié)約電力。FEC塊需要傳輸濾波器塊處于活動(dòng)狀態(tài),以便實(shí)際接收數(shù)據(jù),由此DrvFec—PowerUp()及DrvFec—PowerDown()函數(shù)同樣在內(nèi)部分別調(diào)用DrvDemux—PowerUp()和DrvDemux—PowerDown()函數(shù)。如上所述,軟件功能(非特定于硬件的功能)是在使用驅(qū)動(dòng)器(44)的服務(wù)(42)中實(shí)施的。這些服務(wù)(42)也可以具有PowerUp()和PowerDown()函數(shù),這些函數(shù)是由任務(wù)使用這些服務(wù)來調(diào)用的。通常,它們同樣使用一個(gè)使用計(jì)數(shù)器以及針對(duì)驅(qū)動(dòng)器電源控制函數(shù)的調(diào)用來實(shí)施。對(duì)與SI提取一起工作的多個(gè)IP提取處理來說,借助這種架構(gòu),可容易地實(shí)現(xiàn)精密的電源控制。對(duì)從一個(gè)任務(wù)開始運(yùn)行的每一個(gè)IP濾波提取處理來說,只要其需要特定資源,它就會(huì)為所述資源通電,當(dāng)不再需要這些資源時(shí),它會(huì)將這些資源斷電,在這里,關(guān)鍵的架構(gòu)點(diǎn)在于每一個(gè)IP或SI濾波器都是獨(dú)立地被對(duì)待的,并且每一個(gè)IP或SI濾波器都使用了每一個(gè)共享資源的電源控制功能。以下是調(diào)諧器/解調(diào)器、解復(fù)用器以及FEC幀控制器的電源使用實(shí)例,其中假設(shè)兩個(gè)IP濾波器同時(shí)工作并且在某段時(shí)間共享硬件資源的情形。圖9描繪的是三個(gè)主驅(qū)動(dòng)器的電源計(jì)數(shù)器使用值,并且下面示出的是用于兩個(gè)獨(dú)立服務(wù)的偽代碼,其中這兩個(gè)獨(dú)立服務(wù)是同時(shí)運(yùn)行的,并且括號(hào)中的值代表每一個(gè)驅(qū)動(dòng)器的電源使用計(jì)數(shù)器。<table>tableseeoriginaldocumentpage18</column></row><table>正如將要針對(duì)下文中的特定實(shí)施例所論述的那樣,在諸如圖2的模塊(16)這樣的設(shè)備中,多個(gè)任務(wù)要求被同時(shí)執(zhí)行或者至少以重疊的方式4皮執(zhí)行。例如,在圖6之后,如圖10所示,有可能存在多個(gè)時(shí)間切片器任務(wù),其中每一個(gè)時(shí)間切片器任務(wù)都會(huì)操作相應(yīng)的IP(因特網(wǎng)協(xié)議)接收程。每一個(gè)時(shí)間切片器任務(wù)可以具有處于使用中的、其自身的相應(yīng)服務(wù)集合(例如調(diào)諧、S/PSI:提取和IP:提取服務(wù)),并且如所示,更為優(yōu)選的是共享相同的服務(wù)集合。但是,不管怎樣,有必要提供某個(gè)系統(tǒng),其允許所有任務(wù)在同一時(shí)間在模塊(16)內(nèi)部工作。眾所周知,如果實(shí)時(shí)操作系統(tǒng)可用,那么可以將單獨(dú)的任務(wù)映射為相應(yīng)的線程。用于每一個(gè)相應(yīng)線程的堆棧都被提供了一個(gè)存儲(chǔ)器區(qū)域,并且每一個(gè)線程都是以與所有其他線程獨(dú)立的方式處理的,其中所述堆棧允許操作系統(tǒng)在模塊(16)中提供資源的時(shí)間共享。特別地,該堆棧允許在任何便利時(shí)間以優(yōu)先于別的線程的方式脫離某個(gè)線程,以及在可能的時(shí)候返回該線程。這樣,圖10所示的任務(wù)可以被提供單獨(dú)的相應(yīng)線程,即空閑線程、接口處理機(jī)、信號(hào)鎖定器以及四個(gè)時(shí)間切片器。遺憾的是,以這種方式來使用線程,會(huì)同樣要求使用那些需要存儲(chǔ)器的相應(yīng)堆棧。在使用實(shí)時(shí)操作系統(tǒng)的大多數(shù)設(shè)備中,其中往往具有足夠的存儲(chǔ)器而使堆棧的需求變得無關(guān)緊要。然而,對(duì)那些如為手持式電視接收所考慮的設(shè)備、例如圖2中的模塊(16)來說,可以預(yù)期的是,其在存儲(chǔ)器方面的資源是非常有限的。作為替換,可能的是任務(wù)的所有單獨(dú)部分可以組合在一起作為單個(gè)的狀態(tài)機(jī)。這樣做將不具有相同的存儲(chǔ)器需求,但是其靈活性很低。舉個(gè)例子,就需要步驟Al和A2的任務(wù)A以及需要步驟Bl、B2和B3的任務(wù)B而言,可以構(gòu)造一個(gè)單獨(dú)的狀態(tài)機(jī),其中該狀態(tài)機(jī)例如始終按照如下順序運(yùn)行步驟Al、Bl、B2、A2、B3。應(yīng)該了解的是,這種固定裝置具有非常有限的靈活性,當(dāng)出現(xiàn)非預(yù)期狀況時(shí),這種裝置有可能會(huì)很不適合。特別地,一種這樣的非預(yù)期狀況可能是必須在實(shí)時(shí)制約所規(guī)定的時(shí)間范圍中處理的事件。對(duì)固定狀態(tài)機(jī)來說,在該事件被處理之前的等待時(shí)間可直至通過該狀態(tài)機(jī)的一個(gè)完整循環(huán)。關(guān)于協(xié)同例程的概念同樣是已知的。在協(xié)同例程中的預(yù)定步驟之后,協(xié)同例程會(huì)屈讓(yield),由此在返回到第一協(xié)同例程屈讓的點(diǎn)之前允許系統(tǒng)選擇有可能來自別的協(xié)同例程的步驟。這樣,對(duì)上文中給出的實(shí)例來說,第一協(xié)同例程可以在步驟Al和步驟A2之后用屈服點(diǎn)來構(gòu)造,同樣,協(xié)同例程可以在步驟B1、在步驟B2以及在步驟B3之后用屈服點(diǎn)來構(gòu)造??傮w處理將會(huì)以一種已知的方式繼續(xù)進(jìn)行,例如通過以步驟Al為開始,并且在步驟Al末端的屈服點(diǎn),檢查來了解是否系統(tǒng)預(yù)備執(zhí)行步驟B1。如果該系統(tǒng)準(zhǔn)備就緒,那么該處理移動(dòng)到步驟Bl,否則該處理移動(dòng)到A2。這種裝置提供了某種靈活度,而沒有用于每一個(gè)處理的堆棧的存儲(chǔ)器需要。本申請(qǐng)首次提出了一種裝置,在該裝置中,協(xié)同例程是內(nèi)置在單獨(dú)線程內(nèi)部的。特別地,具有相同或相似優(yōu)先級(jí)的進(jìn)程(在這里以另外的方式被描述成是任務(wù))可以被安排成單個(gè)線程內(nèi)部的協(xié)同例程,由此允的實(shí)施例來說,這意味著對(duì)數(shù)據(jù)突發(fā)的濾波進(jìn)行操作的時(shí)間切片器任務(wù)全都可以作為單個(gè)線程內(nèi)部的協(xié)同例程來工作。因此,對(duì)多個(gè)時(shí)間切片器任務(wù)來說,所需要的僅僅是一個(gè)單獨(dú)的存儲(chǔ)器堆棧。另一方面,如下所述,如果接口處理機(jī)或信號(hào)鎖定器有可能需要中斷時(shí)間切片器任務(wù),那么這是可以完成的,這是因?yàn)樗鼈兪且跃哂邢鄳?yīng)存儲(chǔ)器堆棧的單獨(dú)線程來工作的。如果有多個(gè)調(diào)諧器可用,那么相似的方法也是可以使用的。在這種情況下,多個(gè)接口處理機(jī)或信號(hào)鎖定器任務(wù)可能經(jīng)由相應(yīng)線程內(nèi)部的協(xié)同例程而共存。由此,在這里可以提供一種系統(tǒng)和優(yōu)先化方法,尤其是在例如使用實(shí)時(shí)操作系統(tǒng)的數(shù)字電視接收機(jī)中優(yōu)先化那些具有時(shí)間重要性的例程。對(duì)具有關(guān)于所執(zhí)行的任務(wù)子集的硬實(shí)時(shí)制約的軟件系統(tǒng)來說,該建議都是適用的。在上述模塊(16)以及圖6和IO的處理的上下文中,由優(yōu)選實(shí)施例的軟件執(zhí)行的任務(wù)是1)配置和控制調(diào)諧器以及解調(diào)器,調(diào)度時(shí)間片和提取SI/PSI表格及IP服務(wù),以及與主機(jī)應(yīng)用處理器(12)進(jìn)行通信。該架構(gòu)的目標(biāo)是可以在優(yōu)化定時(shí)、電量消耗以及存儲(chǔ)器使用的同時(shí)執(zhí)行所有軟件任務(wù)。假設(shè)圖3的處理器(30)具有足夠電力來執(zhí)行所有軟件任務(wù)。但是,也存在因?yàn)樗┘拥膶?shí)時(shí)制約而需要特殊關(guān)注的特定事件。一個(gè)此類事件是信號(hào)鎖定丟失中斷。為這種中斷提供的服務(wù)以及自動(dòng)恢復(fù)過程的啟動(dòng)應(yīng)該盡可能快地進(jìn)行,如有必要還會(huì)暫停其他活動(dòng),因?yàn)槿魏窝舆t都有可能導(dǎo)致IP分組丟失。這意味著在需要運(yùn)行信號(hào)獲取任務(wù)時(shí),該任務(wù)必須先占任何一個(gè)正在處理SI/PSI表或MPE-FEC幀(例如通過執(zhí)行糾錯(cuò)來提取IP數(shù)據(jù))的任務(wù)。另一方面,與處理MPE-FEC幀和提取IP服務(wù)相比,諸如提取SI/PSI表、執(zhí)行軟件AGC或是向UART發(fā)調(diào)試消息的任務(wù)都具有較小的時(shí)間重要性。它們可能必須成為可由IP服務(wù)任務(wù)來先占的。如上所述,在這里設(shè)想的是該存儲(chǔ)器是多個(gè)設(shè)備例如DVB-H接收機(jī)中的極度稀缺的資源。在某些實(shí)施例,可以使用的RAM有可能不超過64kiB。由此,該架構(gòu)應(yīng)該以最小化下列各項(xiàng)為目標(biāo)代碼大??;數(shù)據(jù)大??;以及堆??臻g。如上所述,用于實(shí)現(xiàn)實(shí)時(shí)制約的典型方式是使用實(shí)時(shí)操作系統(tǒng)(RTOS),以及為每一個(gè)軟件任務(wù)(40)指定一個(gè)單獨(dú)的RTOS先占(pre-emptible)線程和優(yōu)先級(jí)。但是,每一個(gè)RTOS線程都需要單獨(dú)的運(yùn)行堆棧,這樣做將會(huì)提升系統(tǒng)的總的存儲(chǔ)器需求。依照本申請(qǐng)的建議,可以提供一種DVB-H接收機(jī)(2),其中該接收機(jī)會(huì)將軟件任務(wù)指定給下列各項(xiàng)的組合l)RTOS先占線程,用于為具有這些線程的任務(wù)(40)實(shí)現(xiàn)實(shí)時(shí)制約,以及2)用于不具有相對(duì)實(shí)時(shí)優(yōu)先級(jí)的任務(wù)(40)的典型協(xié)作式協(xié)同例程。協(xié)同例程的群組是在單個(gè)RTOS先占線程內(nèi)部運(yùn)行的,并且由此將會(huì)共享相同的運(yùn)行堆棧。多任務(wù)是借助協(xié)作式調(diào)度實(shí)現(xiàn)的,這意味著每一個(gè)任務(wù)(即協(xié)同例程)協(xié)作都會(huì)產(chǎn)生隨時(shí)間變化的控制,以便允許運(yùn)行其他任務(wù)(即協(xié)同例程)。這樣,使用RTOS先占線程,使得在實(shí)時(shí)制約非常重要的時(shí)候?qū)崿F(xiàn)實(shí)時(shí)制約,與此同時(shí),協(xié)作式的協(xié)同例程將會(huì)節(jié)約存儲(chǔ)器。參考圖6和10,應(yīng)該指出的是,頂層塊(40)被稱為任務(wù),但是它們也可以被視為線程。在現(xiàn)實(shí)中,時(shí)間切片器線程運(yùn)行了若干個(gè)協(xié)同例程,其中每一個(gè)協(xié)同例程都會(huì)執(zhí)行一個(gè)相應(yīng)的IP接收任務(wù)。為了限制堆??臻g,系統(tǒng)中的RTOS線程數(shù)量應(yīng)該保持在一個(gè)嚴(yán)格的最小值。但是如先前所述,某些任務(wù)應(yīng)該在低定時(shí)制約內(nèi)部以異步方式運(yùn)行。在圖11中顯示了實(shí)時(shí)任務(wù)調(diào)度的一個(gè)實(shí)例。雖然在上文中已經(jīng)述及了所涉及的任務(wù),但是在下文中還是給出了關(guān)于每一個(gè)任務(wù)的簡(jiǎn)要概述。時(shí)間切片器任務(wù)是一個(gè)控制系統(tǒng)心跳的低優(yōu)先級(jí)任務(wù)。對(duì)每一個(gè)(例如DVB-H)時(shí)間片來說,它1)請(qǐng)求調(diào)諧設(shè)備喚醒硬件并且重新獲取信號(hào)鎖定,2)等待SI/PSI或IP事件并對(duì)其進(jìn)行處理,3)請(qǐng)求調(diào)諧服務(wù)關(guān)閉硬件,以及4)在下一個(gè)時(shí)間片之前一直休眠。通過使用本申請(qǐng)的建議,這個(gè)線程實(shí)際運(yùn)行了若干個(gè)協(xié)同例程。每一個(gè)協(xié)同例程都會(huì)執(zhí)行如上列舉的接收單個(gè)IP服務(wù)的任務(wù),其中允許使用協(xié)作式調(diào)度來處理其他IP服務(wù)。接口處理機(jī)是一個(gè)處理主機(jī)處理器命令的介質(zhì)優(yōu)先級(jí)任務(wù),本質(zhì)上它與流處理是異步的。它對(duì)接收機(jī)狀態(tài)進(jìn)行管理,并且使用調(diào)諧服務(wù)來實(shí)施SCAN和TUNE命令。由于SPI主機(jī)接口是一個(gè)性能瓶頸,因此,與時(shí)間切片器任務(wù)相比,該任務(wù)必須具有更高的優(yōu)先級(jí)。21信號(hào)鎖定器是一個(gè)對(duì)信號(hào)鎖定丟失事件或是其他任何需要快速處理的事件做出響應(yīng)的高優(yōu)先級(jí)任務(wù)。在信號(hào)鎖定丟失情況中,它會(huì)啟動(dòng)恢復(fù)過程??臻e任務(wù)是系統(tǒng)中優(yōu)先級(jí)最低的任務(wù)。只有在所有其他任務(wù)全都休眠和或等待處理某個(gè)事件時(shí),該任務(wù)才會(huì)被調(diào)度。其唯一的功能是將處理器(30)設(shè)置在低電源狀態(tài)。圖11描述的是典型的調(diào)度方案,并且論證了RTOS如何幫助構(gòu)造滿足低等待時(shí)間定時(shí)和功率制約的簡(jiǎn)單設(shè)計(jì)。部分(a)示出在時(shí)間片之間調(diào)度的空閑任務(wù)。該任務(wù)執(zhí)行的唯一處理是將處理器(30)置于低電源狀態(tài)。處理器(30)會(huì)在下一個(gè)時(shí)間片(由時(shí)間切片器任務(wù)設(shè)置的定時(shí)器)醒來,或者在接收到主機(jī)命令(SPI/SDIO中斷)并由接口處理機(jī)進(jìn)行處理的時(shí)候醒來部分(b)描述的是實(shí)時(shí)調(diào)度屬性如何快速使能服務(wù)主機(jī)命令,即使在時(shí)間切片器處于運(yùn)行的時(shí)候。例如,如果主機(jī)在時(shí)間切片器處理SI表格時(shí)發(fā)送了SEND—STAT—DATA命令,那么在為該請(qǐng)求提供服務(wù)之前,唯一的延遲基本上是上下文切換。部分(c)描述的是多級(jí)先占。它顯示了RTOS如何有助于處理幾乎沒有延遲的信號(hào)鎖定丟失中斷。上述部分中描述的管理單個(gè)IP服務(wù)是足夠簡(jiǎn)單的。但是,如圖10所示,接收機(jī)將會(huì)支持同時(shí)接收多達(dá)四個(gè)IP服務(wù),其中每一個(gè)IP服務(wù)都具有自己的delta-t值以及自己的通電周期,該周期可與其他IP服務(wù)的通電周期相重疊。用于實(shí)施這種處理的簡(jiǎn)單方法是為每一個(gè)IP服務(wù)創(chuàng)建一個(gè)線程,但是如上所述,可取的是限制存儲(chǔ)器使用。由于不同屬性并不是IP服務(wù)的需求,因此,使用協(xié)作式多任務(wù)。這可以借助狀態(tài)機(jī)來實(shí)施,但是優(yōu)選實(shí)施例使用的是更精致、更易于讀取以及更易于保持的協(xié)同例程。如上所述,協(xié)同例程允許在一個(gè)函數(shù)中具有多個(gè)退出點(diǎn),同時(shí)保持執(zhí)行狀態(tài),與基于切換的狀態(tài)機(jī)相比,這樣做會(huì)使控制流更為明確。實(shí)際上,協(xié)同例程允許以一種與其他任務(wù)相獨(dú)立的方式來實(shí)施協(xié)作式任務(wù)。權(quán)利要求1.一種具有多個(gè)硬件塊的系統(tǒng),該系統(tǒng)被配置成根據(jù)是否需要使用相應(yīng)的硬件塊來獨(dú)立控制至每一個(gè)硬件塊的電源。2.根據(jù)權(quán)利要求l的系統(tǒng),包括用于相應(yīng)硬件塊的設(shè)備驅(qū)動(dòng)器,該系統(tǒng)被配置成支持多個(gè)任務(wù),其中每一個(gè)任務(wù)都通過與相應(yīng)的設(shè)備驅(qū)動(dòng)器進(jìn)行通信而使用了一個(gè)或多個(gè)硬件塊。3.根據(jù)權(quán)利要求2的系統(tǒng),其中在每一個(gè)相應(yīng)設(shè)備驅(qū)動(dòng)器中實(shí)施了計(jì)數(shù)器,該計(jì)數(shù)器被配置成在多個(gè)任務(wù)之一每次請(qǐng)求使用相應(yīng)硬件塊時(shí)遞增,以及在多個(gè)任務(wù)之一每次停止使用相應(yīng)硬件塊時(shí)遞減。4.根據(jù)權(quán)利要求3的系統(tǒng),其中該計(jì)數(shù)器被實(shí)施為應(yīng)用編程接口。5.根據(jù)權(quán)利要求3或4的系統(tǒng),其中該計(jì)數(shù)器提供了一個(gè)輸出,以便當(dāng)計(jì)數(shù)器指示沒有要求使用相應(yīng)的硬件塊的未完成請(qǐng)求的時(shí)候?qū)⑺鱿鄳?yīng)的硬件塊斷電。6.根據(jù)權(quán)利要求5的系統(tǒng),其中該計(jì)數(shù)器具有初始值O,并且只有當(dāng)該計(jì)數(shù)器具有非零值時(shí),該輸出才能夠使相應(yīng)的硬件塊通電。7.根據(jù)權(quán)利要求5或6的系統(tǒng),還包括硬件時(shí)鐘塊,它具有用于該系統(tǒng)的時(shí)鐘信號(hào)的時(shí)鐘輸入,用于接收所述計(jì)數(shù)器的相應(yīng)輸出的電源輸入,用于相應(yīng)硬件塊的時(shí)鐘輸出,以及多個(gè)相應(yīng)的邏輯門,其中每一個(gè)相應(yīng)的邏輯門都與時(shí)鐘輸入、相應(yīng)的電源輸入以及相應(yīng)的時(shí)鐘輸出相連,并且被配置成根據(jù)電源輸入來將時(shí)鐘信號(hào)有選擇地提供給相應(yīng)的時(shí)鐘輸出。8.根據(jù)前述任一權(quán)利要求的系統(tǒng),其中所述多個(gè)硬件塊包括定時(shí)器、UART、SPI、SDIO、調(diào)諧器、解調(diào)器、濾波器以及MPE-FEC中的至少一個(gè)。9.根據(jù)前述任一權(quán)利要求的系統(tǒng),其中該系統(tǒng)是解調(diào)器。10.根據(jù)前述任一權(quán)利要求的系統(tǒng),其中該系統(tǒng)是可互換式模塊。11.根據(jù)前述任一權(quán)利要求的系統(tǒng),其中該系統(tǒng)是集成電路。12.根據(jù)前述任一權(quán)利要求的系統(tǒng),其中該系統(tǒng)是數(shù)字電視接收機(jī)。13.根據(jù)前述任一權(quán)利要求的系統(tǒng),其中該系統(tǒng)符合DVB-H標(biāo)準(zhǔn)。14.一種用于操作系統(tǒng)的方法,其中該系統(tǒng)具有多個(gè)硬件塊,該方法包括根據(jù)是否需要使用相應(yīng)塊來獨(dú)立控制至每一個(gè)硬件塊的電源。15.根據(jù)權(quán)利要求14的方法,還包括通過有選擇地禁用相應(yīng)的硬件塊的時(shí)鐘來控制單獨(dú)的硬件塊的電源。16.根據(jù)權(quán)利要求14或15的方法,還包括使用最低軟件層中的參考計(jì)數(shù)來確定何時(shí)可以將硬件塊通電或斷電。17.根據(jù)權(quán)利要求14、15或16的方法,還包括為每一個(gè)硬件塊提供計(jì)數(shù)器;遞增所述計(jì)數(shù)器;'''',''在每次接收到停止使用相應(yīng)的硬件塊并且由此將其斷電的請(qǐng)求的時(shí)候,遞減該計(jì)數(shù)器;以及當(dāng)計(jì)數(shù)器指示沒有要求為硬件塊通電的未完成請(qǐng)求的時(shí)候,提供將相應(yīng)硬件塊斷電的信號(hào)。18.根據(jù)權(quán)利要求17的方法,還包括當(dāng)所述計(jì)數(shù)器指示沒有要求將硬件塊通電的未完成請(qǐng)求的時(shí)候,將相應(yīng)的^/f牛塊斷電。19.根據(jù)權(quán)利要求17或18的方法,還包括為每一個(gè)硬件塊提供設(shè)備驅(qū)動(dòng)器,以及在相應(yīng)的設(shè)備驅(qū)動(dòng)器中實(shí)施所述計(jì)數(shù)器。20.—種計(jì)算機(jī)程序,該程序包含了程序代碼裝置,當(dāng)在計(jì)算機(jī)上運(yùn)行所述程序時(shí),所述程序代碼裝置用于執(zhí)行權(quán)利要求1419中任一權(quán)利要求的所有步驟。21.根據(jù)權(quán)利要求20的計(jì)算機(jī)程序,其中所述計(jì)算機(jī)程序作為在設(shè)備驅(qū)動(dòng)器中使用的應(yīng)用編程接口被實(shí)施。22.—種計(jì)算機(jī)程序產(chǎn)品,其中該產(chǎn)品包含了保存在計(jì)算機(jī)可讀介質(zhì)上的程序代碼裝置,當(dāng)在計(jì)算機(jī)上運(yùn)行所述程序產(chǎn)品時(shí),所述程序代碼裝置用于執(zhí)行權(quán)利要求1419中任一權(quán)利要求的方法。全文摘要本發(fā)明涉及一種具有多個(gè)硬件塊的系統(tǒng)以及一種操作該系統(tǒng)的方法,其中通往每一個(gè)硬件塊的電源是根據(jù)是否需要使用相應(yīng)硬件塊而被獨(dú)立控制的。在每一個(gè)硬件塊的相應(yīng)設(shè)備驅(qū)動(dòng)器中提供了計(jì)數(shù)器,該計(jì)數(shù)器被配置成在任務(wù)每次請(qǐng)求使用相應(yīng)硬件塊的時(shí)候遞增,并且在任務(wù)每次停止使用相應(yīng)硬件塊時(shí)遞減。計(jì)數(shù)器的值則被用于對(duì)將相應(yīng)硬件塊通電還是斷電進(jìn)行控制。文檔編號(hào)G06F1/32GK101495940SQ200780027744公開日2009年7月29日申請(qǐng)日期2007年7月9日優(yōu)先權(quán)日2006年7月21日發(fā)明者J·格拉德,J·霍恩斯比,O·埃爾斯霍赫特,P·阿庫多普洛斯,P·馬里維特,T·阿佩蒙特申請(qǐng)人:索尼服務(wù)中心(歐洲)股份有限公司