第一操作系統(tǒng)對(duì)第二操作系統(tǒng)的dsp進(jìn)行操作的方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種第一操作系統(tǒng)對(duì)運(yùn)行于第二操作系統(tǒng)的DSP進(jìn)行操作的方法及系統(tǒng),包括:第一操作系統(tǒng)將命令寫入共享緩沖區(qū)并向ARM處理器發(fā)送中斷通知;所述ARM處理器接收到所述中斷通知后,讀取所述共享緩沖區(qū)中的所述命令,并判斷出實(shí)現(xiàn)所述命令的功能的并運(yùn)行于第二操作系統(tǒng)下的具有多個(gè)DSP子核的DSP中的目的DSP子核;所述ARM處理器將所述命令轉(zhuǎn)發(fā)到所述目的DSP子核,以使所述目的DSP子核完成所述功能。本發(fā)明通過增加ARM處理器,使得第一操作系統(tǒng)的SDK所發(fā)出的命令能夠通過所述ARM處理器轉(zhuǎn)發(fā)到第二操作系統(tǒng)下的DSP,進(jìn)而可實(shí)現(xiàn)在第一操作系統(tǒng)下對(duì)運(yùn)行于第二操作系統(tǒng)的DSP的控制,使得Centaurus平臺(tái)的視音頻板卡能夠應(yīng)用于Windows操作系統(tǒng)。
【專利說明】第一操作系統(tǒng)對(duì)第二操作系統(tǒng)的DSP進(jìn)行操作的方法及系 統(tǒng)
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及視頻通信操作控制領(lǐng)域,特別涉及一種第一操作系統(tǒng)對(duì)第二操作系統(tǒng) 的DSP (Digital Signal Processing,數(shù)字信號(hào)處理單元)進(jìn)行操作的方法及系統(tǒng)。
【背景技術(shù)】
[0002] Netra是德州儀器(TI)推出的一種視頻片上系統(tǒng)(SoC,System on Chip),其 將高清多通道系統(tǒng)的所有捕獲、壓縮、顯示和控制功能整合于單芯片上,其集成了 ARM CorteX-A8處理器、Ti C674x浮點(diǎn)DSP、若干二代可編程高清視頻影像協(xié)處理器(HDVICP V2. 0)、以及一個(gè)高清視頻處理子系統(tǒng)(HDVPSS,或者VPS)。
[0003] Centaurus是德州儀器基于Netra擴(kuò)展的平臺(tái),集成了 Netra的特性,也更注重低 功耗設(shè)計(jì)。在Centaurus平臺(tái)中,DSP特指由VID(HDVICP,可編程高清視頻影像協(xié)處理器)、 C674x (Centaurus平臺(tái)上的DSP運(yùn)算處理器,C674x是業(yè)界最低功耗浮點(diǎn)DSP,基于C64x+ 平臺(tái),運(yùn)行速度最高可達(dá)到750MHz)及高清視頻處理子系統(tǒng)(HDVPSS,或者VPS)組成的多核 處理單元。其中,C674x是Centaurus平臺(tái)上的DSP運(yùn)算處理器,C674x是業(yè)界中最低功耗 浮點(diǎn)DSP,基于C64x+平臺(tái),運(yùn)行速度最高可達(dá)750MHz。
[0004] DVR (Digital Video Recorder,硬盤錄像機(jī))是音視頻存儲(chǔ)處理的計(jì)算機(jī)系統(tǒng),可 實(shí)現(xiàn)長時(shí)間錄音、錄像、遠(yuǎn)程監(jiān)控等功能,DVR -般所運(yùn)行的操作系統(tǒng)為linux。
[0005] 目前,基于Netra平臺(tái)的DVR產(chǎn)品都是獨(dú)立運(yùn)行1 inux操作系統(tǒng),在1 inux系統(tǒng)下, 主要以菜單形式控制DSP來實(shí)現(xiàn)各種功能。而基于Centaurus平臺(tái)的視音頻板卡則是屬于 PC機(jī)的一部分,如果PC機(jī)運(yùn)行Windows操作系統(tǒng)的話,則linux系統(tǒng)下的方案無法滿足需 求,進(jìn)而限制了 DVR產(chǎn)品在Windows操作系統(tǒng)下的應(yīng)用。
【發(fā)明內(nèi)容】
[0006] 有鑒于此,本發(fā)明提供一種第一操作系統(tǒng)對(duì)運(yùn)行于第二操作系統(tǒng)的DSP進(jìn)行操作 的方法及系統(tǒng),進(jìn)而實(shí)現(xiàn)Centaurus平臺(tái)的視音頻板卡在Windows操作系統(tǒng)下的應(yīng)用。
[0007] 本申請(qǐng)的技術(shù)方案是這樣實(shí)現(xiàn)的:
[0008] -種第一操作系統(tǒng)對(duì)運(yùn)行于第二操作系統(tǒng)的DSP進(jìn)行操作的方法,包括:
[0009] 第一操作系統(tǒng)將命令寫入共享緩沖區(qū)并向ARM處理器發(fā)送中斷通知;
[0010] 所述ARM處理器接收到所述中斷通知后,讀取所述共享緩沖區(qū)中的所述命令,并 判斷出實(shí)現(xiàn)所述命令的功能的并運(yùn)行于第二操作系統(tǒng)下的具有多個(gè)DSP子核的DSP中的目 的DSP子核;
[0011] 所述ARM處理器將所述命令轉(zhuǎn)發(fā)到所述目的DSP子核,以使所述目的DSP子核完 成所述功能。
[0012] 進(jìn)一步,所述第一操作系統(tǒng)通過該第一操作系統(tǒng)的SDK將命令寫入共享緩沖區(qū)并 向ARM處理器發(fā)送中斷通知。
[0013] 進(jìn)一步,所述方法還包括:
[0014] 所述ARM處理器設(shè)置等待接收中斷通知的超時(shí)時(shí)間;
[0015] 當(dāng)所述ARM處理器等待接收所述中斷通知的等待時(shí)間達(dá)到了所設(shè)置的超時(shí)時(shí)間, 并且所述ARM處理器沒有接收到所述中斷通知時(shí),所述ARM處理器查詢所述共享緩沖區(qū)以 確認(rèn)所述共享緩沖區(qū)中是否有所述SDK寫入的新的命令;
[0016] 若所述共享緩沖區(qū)中沒有所述新的命令,則所述ARM處理器繼續(xù)等待接收新的中 斷通知;
[0017] 若所述共享緩沖區(qū)中有所述新的命令,則所述ARM處理器讀取所述共享緩沖區(qū)中 的所述新的命令并判斷出實(shí)現(xiàn)所述新的命令的功能的目的DSP子核;所述ARM處理器將所 述新的命令轉(zhuǎn)發(fā)到所述目的DSP子核,以使所述目的DSP子核完成所述功能。
[0018] 進(jìn)一步,所述超時(shí)時(shí)間為20ms。
[0019] 進(jìn)一步,在讀取所述共享緩沖區(qū)中的所述命令后,判斷出實(shí)現(xiàn)所述命令的功能的 目的DSP子核之前,還包括:
[0020] 對(duì)所述命令進(jìn)行校驗(yàn);
[0021] 若校驗(yàn)成功則判斷出實(shí)現(xiàn)所述命令的功能的目的DSP子核;否則,等待SDK再次向 ARM處理器發(fā)送中斷通知。
[0022] 進(jìn)一步,所述判斷出實(shí)現(xiàn)所述命令的功能的并運(yùn)行于第二操作系統(tǒng)下的具有多個(gè) DSP子核的DSP中的目的DSP子核,是根據(jù)命令轉(zhuǎn)發(fā)矩陣表判斷出實(shí)現(xiàn)所述命令的功能的目 的DSP子核,以及命令執(zhí)行時(shí)間和需要反饋的目的DSP子核等實(shí)現(xiàn)的。
[0023] 進(jìn)一步,所述命令轉(zhuǎn)發(fā)矩陣表包括:
[0024] _retCoreFlg_ :用于判斷實(shí)現(xiàn)所述命令的功能的目的DSP子核;
[0025] _recevCoreFlg_ :用于判斷返回信息的DSP子核;
[0026] _wait_ :用于記錄所述命令的等待時(shí)間,若在所設(shè)定的時(shí)間內(nèi)不能完成所述命令, 則報(bào)告錯(cuò)誤;
[0027] _bPara_ :命令的參數(shù),用于實(shí)現(xiàn)命令參數(shù)的傳遞;
[0028] _bRetPara_ :命令的反饋參數(shù),用于實(shí)現(xiàn)命令返回參數(shù)的傳遞;
[0029] _buf_ :命令的緩沖區(qū),用于放置參數(shù)信息;
[0030] _retBuf_ :命令的反饋緩沖區(qū),用于放置返回參數(shù)等信息;
[0031] _func_ :命令對(duì)應(yīng)的實(shí)現(xiàn)功能的函數(shù)指針。
[0032] 進(jìn)一步,所述DSP子核包括:VID、VPS和C674X。
[0033] 進(jìn)一步,所述DSP為Centaurus平臺(tái)中的多核DSP。
[0034] 一種第一操作系統(tǒng)對(duì)運(yùn)行于第二操作系統(tǒng)的DSP進(jìn)行操作的系統(tǒng),包括:
[0035] 第一操作系統(tǒng)的SDK,用于將命令寫入共享緩沖區(qū)并向ARM處理器發(fā)送中斷通知;
[0036] ARM處理器,用于接收所述中斷通知,讀取所述共享緩沖區(qū)中的所述命令,并判斷 出實(shí)現(xiàn)所述命令的功能的并運(yùn)行于第二操作系統(tǒng)下的具有多個(gè)DSP子核的DSP中的目的 DSP子核,并將所述命令轉(zhuǎn)發(fā)到所述目的DSP子核,以使所述目的DSP子核完成所述功能; 以及
[0037] DSP,運(yùn)行于第二操作系統(tǒng)下,具有多個(gè)DSP子核。
[0038] 從上述方案可以看出,本發(fā)明的第一操作系統(tǒng)對(duì)運(yùn)行于第二操作系統(tǒng)的DSP進(jìn)行 操作的方法及系統(tǒng),通過在第一操作系統(tǒng)的SDK和第二操作系統(tǒng)的DSP之間增加 ARM處理 器,使得第一操作系統(tǒng)所發(fā)出的命令能夠通過該ARM處理器轉(zhuǎn)發(fā)到所述DSP,進(jìn)而可實(shí)現(xiàn)在 第一操作系統(tǒng)例如Windows操作系統(tǒng)下對(duì)所述DSP的控制,使得Centaurus平臺(tái)的視音頻 板卡能夠應(yīng)用于Windows操作系統(tǒng)。
【專利附圖】
【附圖說明】
[0039] 圖1為本發(fā)明的第一操作系統(tǒng)對(duì)運(yùn)行于第二操作系統(tǒng)的DSP進(jìn)行操作的方法的流 程圖;
[0040] 圖2為本發(fā)明的方法中的命令傳輸流程示意圖;
[0041] 圖3為本發(fā)明的方法應(yīng)用于Centaurus平臺(tái)時(shí)的流程示意圖;
[0042] 圖4為本發(fā)明的方法的一個(gè)具體實(shí)施流程圖;
[0043] 圖5為本發(fā)明的第一操作系統(tǒng)對(duì)運(yùn)行于第二操作系統(tǒng)的DSP進(jìn)行操作的系統(tǒng)結(jié)構(gòu) 示意圖。
【具體實(shí)施方式】
[0044] 為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下參照附圖并舉實(shí)施例, 對(duì)本發(fā)明作進(jìn)一步詳細(xì)說明。
[0045] 如圖1所示,本發(fā)明的第一操作系統(tǒng)對(duì)運(yùn)行于第二操作系統(tǒng)的DSP進(jìn)行操作的方 法主要包括以下步驟:
[0046] 第一操作系統(tǒng)將命令寫入共享緩沖區(qū)并向ARM處理器發(fā)送中斷通知;
[0047] 所述ARM處理器接收到所述中斷通知后,讀取所述共享緩沖區(qū)中的所述命令,并 判斷出實(shí)現(xiàn)所述命令的功能的并運(yùn)行于第二操作系統(tǒng)下的具有多個(gè)DSP子核的DSP中的目 的DSP子核;
[0048] 所述ARM處理器將所述命令轉(zhuǎn)發(fā)到所述目的DSP子核,以使所述目的DSP子核完 成所述功能。
[0049] 其中,所述第一操作系統(tǒng)通過該第一操作系統(tǒng)的SDK (Software Development Kit,軟件開發(fā)工具包)將命令寫入共享緩沖區(qū)并向ARM處理器發(fā)送中斷通知。以下以 Windows操作系統(tǒng)作為第一操作系統(tǒng),第二操作系統(tǒng)為Linux操作系統(tǒng)為例,對(duì)本發(fā)明的方 法進(jìn)行具體說明。
[0050] SDK是軟件工程師為特定的軟件包、軟件框架、硬件平臺(tái)、操作系統(tǒng)等建立應(yīng)用軟 件的開發(fā)工具的集合。對(duì)于Windows(視窗)操作系統(tǒng)來說,微軟每推出一個(gè)重要的Windows 版本,一般都會(huì)同時(shí)推出一個(gè)SDK。SDK包含了開發(fā)該Windows版本所需的Windows函數(shù)和 常數(shù)定義、API函數(shù)說明文檔、相關(guān)工具和示例。
[0051] 本發(fā)明【具體實(shí)施方式】中的SDK為Windows系統(tǒng)的SDK,所述DSP為Centaurus平臺(tái) 中的多核DSP,該DSP運(yùn)行于Linux系統(tǒng)之下。
[0052] 利用本發(fā)明的方法,通過ARM處理器的命令轉(zhuǎn)發(fā)可以實(shí)現(xiàn)Windows系統(tǒng)下用戶對(duì) DSP的功能調(diào)用。如圖2所示,首先用戶使用SDK提供的一系列功能接口向下發(fā)送命令;ARM 處理器端接收到SDK命令后將命令轉(zhuǎn)發(fā)到DSP中相應(yīng)的DSP子核,例如VPS、VID以及C674X 等,最終實(shí)現(xiàn)對(duì)DSP的操作。
[0053] 本發(fā)明的方法應(yīng)用于Centaurus平臺(tái),使得在Windows系統(tǒng)下用戶也可以對(duì)DSP 進(jìn)行操作和控制,以實(shí)現(xiàn)DSP的相應(yīng)功能。如圖3所示,本發(fā)明的方法中,ARM處理器通過從 SDK進(jìn)行命令接收,再將命令轉(zhuǎn)發(fā)至DSP中相應(yīng)的DSP子核,ARM處理器實(shí)質(zhì)上是作為SDK 到DSP的命令轉(zhuǎn)發(fā)模塊,在SDK和DSP之間建立起一座命令傳送的橋梁,進(jìn)而通過識(shí)別和轉(zhuǎn) 發(fā)實(shí)現(xiàn)了在Windows系統(tǒng)下對(duì)DSP的控制。
[0054] 本發(fā)明的方法,通過在SDK和DSP之間增加 ARM處理器,使得SDK所發(fā)出的命令能 夠通過該ARM處理器轉(zhuǎn)發(fā)到所述DSP,進(jìn)而可實(shí)現(xiàn)在Windows系統(tǒng)下對(duì)所述DSP的操作和控 制,使得Centaurus平臺(tái)的視音頻板卡能夠應(yīng)用于Windows操作系統(tǒng)。
[0055] 在實(shí)際運(yùn)行中,對(duì)于ARM處理器來說,有可能出現(xiàn)中斷的丟失,即SDK向ARM處理 器發(fā)送的中斷通知可能因?yàn)槟承┰蚨鴽]有被ARM處理器獲得。為避免中斷的丟失,本發(fā) 明的方法還進(jìn)一步包括:
[0056] 所述ARM處理器設(shè)置等待接收中斷通知的超時(shí)時(shí)間;
[0057] 當(dāng)所述ARM處理器等待接收所述中斷通知的等待時(shí)間達(dá)到了所設(shè)置的超時(shí)時(shí)間, 并且所述ARM處理器沒有接收到所述中斷通知時(shí),所述ARM處理器均查詢一次所述共享緩 沖區(qū)以確認(rèn)是否有所述SDK向所述共享緩沖區(qū)寫入的新的命令;
[0058] 若所述共享緩沖區(qū)中沒有所述新的命令,則所述ARM處理器繼續(xù)等待接收新的中 斷通知,當(dāng)所述ARM處理器等待接收新的中斷通知的等待時(shí)間達(dá)到了所設(shè)置的超時(shí)時(shí)間 時(shí),所述ARM處理器再次查詢所述共享緩沖區(qū)以確認(rèn)是否有所述SDK向所述共享緩沖區(qū)寫 入的新的命令;
[0059] 若所述共享緩沖區(qū)中有所述新的命令,則所述ARM處理器讀取所述共享緩沖區(qū)中 的所述新的命令并判斷出實(shí)現(xiàn)所述新的命令的功能的目的DSP子核;
[0060] 所述ARM處理器將所述新的命令轉(zhuǎn)發(fā)到所述目的DSP子核,以使所述目的DSP子 核完成所述功能。
[0061] 由上述方案可以看出,本發(fā)明的方法在設(shè)置超時(shí)時(shí)間周期后,ARM處理器便可在每 個(gè)超時(shí)時(shí)間周期結(jié)束時(shí)均查詢一次共享緩沖區(qū)。這樣,當(dāng)出現(xiàn)中斷的丟失狀況時(shí),只要SDK 已向共享緩沖區(qū)中寫入了命令,ARM處理器都可以從共享緩沖區(qū)中讀取SDK寫入的最新的 命令,進(jìn)而完成對(duì)DSP的操作,從而可避免中斷丟失而造成ARM處理器的長時(shí)間等待,甚至 不能讀取共享緩沖區(qū)的問題。
[0062] 本發(fā)明的方法中,為防止所讀取命令產(chǎn)生錯(cuò)誤,在讀取所述共享緩沖區(qū)中的所述 命令后,判斷出實(shí)現(xiàn)所述命令的功能的目的DSP子核之前,還包括:
[0063] 對(duì)所述命令進(jìn)行校驗(yàn);
[0064] 若校驗(yàn)成功則判斷出實(shí)現(xiàn)所述命令的功能的目的DSP子核;否則,等待SDK再次向 ARM處理器發(fā)送中斷通知。
[0065] 另外,本發(fā)明的方法中,所述判斷出實(shí)現(xiàn)所述命令的功能的并運(yùn)行于第二操作系 統(tǒng)下的具有多個(gè)DSP子核的DSP中的目的DSP子核,是根據(jù)命令轉(zhuǎn)發(fā)矩陣表判斷出實(shí)現(xiàn)所 述命令的功能的目的DSP子核,以及命令執(zhí)行時(shí)間和需要反饋的目的DSP子核等等實(shí)現(xiàn)的。
[0066] 圖4所示實(shí)施例為本發(fā)明的方法進(jìn)行具體應(yīng)用時(shí)的一具體邏輯流程,以下對(duì)圖4 所示實(shí)施例流程進(jìn)行詳細(xì)說明。
[0067] 步驟a、ARM處理器進(jìn)行初始化,以建立共享緩沖區(qū)、創(chuàng)建命令轉(zhuǎn)發(fā)任務(wù),之后執(zhí)行 步驟b。
[0068] 本步驟a的初始化過程包括:(1)建立共享緩沖區(qū),指定固定的內(nèi)存地址作為SDK 和DSP的命令共享緩沖區(qū),并將該內(nèi)存地址對(duì)應(yīng)的物理地址通知DSP以用于DSP訪問;(2) 創(chuàng)建命令轉(zhuǎn)發(fā)任務(wù),用于監(jiān)聽SDK的中斷通知以及向DSP轉(zhuǎn)發(fā)所接收的命令。
[0069] 步驟b、ARM處理器等待SDK發(fā)送的中斷通知,并設(shè)置等待的超時(shí)時(shí)間;當(dāng)所述ARM 處理器接收到所述中斷通知后,或者當(dāng)?shù)却龝r(shí)間達(dá)到了所設(shè)置的超時(shí)時(shí)間后,執(zhí)行步驟c。
[0070] 本步驟b中,ARM處理器處于等待狀態(tài),等待SDK所發(fā)送來的中斷通知。當(dāng)用戶調(diào) 用SDK接口向ARM處理器發(fā)送中斷通知后,ARM處理器產(chǎn)生中斷并讀取共享緩沖區(qū)以判斷 出是否有新命令。為了避免中斷丟失造成長時(shí)間等待,步驟b中設(shè)置了一個(gè)超時(shí)時(shí)間,當(dāng)?shù)?達(dá)超時(shí)時(shí)間后ARM處理器將自動(dòng)查詢共享緩沖區(qū),判斷出是否有新命令。作為一個(gè)具體實(shí) 施例,超時(shí)時(shí)間設(shè)置為20ms。
[0071] 步驟c、ARM處理器判斷是否等待到中斷通知,如果是則執(zhí)行步驟f,否則執(zhí)行步驟 d〇
[0072] 當(dāng)在步驟b中,ARM處理器接收到中斷通知,則直接進(jìn)入本步驟c,無需等待到超時(shí) 時(shí)間后再進(jìn)入步驟c,此時(shí)在步驟c中ARM處理器將判斷出等待(接收)到了中斷通知,隨后 便直接進(jìn)入步驟f。當(dāng)在步驟b中,ARM處理器沒有接收到中斷通知,并且等待時(shí)間達(dá)到了 所設(shè)置的超時(shí)時(shí)間后,則進(jìn)入本步驟c,此時(shí)在步驟c中ARM處理器將判斷出沒有等待到中 斷通知,隨后便進(jìn)入步驟d。
[0073] 步驟d、查詢共享緩沖區(qū),以確認(rèn)所述共享緩沖區(qū)中是否有所述SDK寫入的新的命 令,并執(zhí)行步驟e。
[0074] 步驟e、判斷共享緩沖區(qū)中是否有所述SDK寫入的新的命令,如果有則執(zhí)行步驟f, 否則執(zhí)行步驟b。
[0075] 從前述步驟b、步驟c的流程可以看出,步驟d、步驟e的執(zhí)行是在ARM處理器沒有 等待到中斷的情況下才觸發(fā)的。在本發(fā)明的方法進(jìn)行實(shí)際應(yīng)用中,對(duì)于ARM處理器來說,有 可能出現(xiàn)中斷丟失,即SDK向ARM處理器發(fā)送的中斷通知可能因?yàn)槟承┰蚨鴽]有被ARM 處理器獲得,并且此時(shí)SDK是有可能已經(jīng)向共享緩沖區(qū)寫入了新的命令。因此,步驟b中超 時(shí)時(shí)間的設(shè)置以及步驟c、步驟d和步驟f的設(shè)置能夠有效地防止因?yàn)橹袛鄟G失情況發(fā)生時(shí) 所導(dǎo)致意外的發(fā)生。
[0076] 在步驟e中,當(dāng)判斷出共享緩沖區(qū)中沒有所述SDK寫入的新的命令時(shí),表明了在達(dá) 到超時(shí)時(shí)間的這段時(shí)間周期內(nèi),ARM處理器既沒有接收到中斷通知,也沒有在共享緩沖區(qū)中 查詢到新的命令,此時(shí)可認(rèn)為SDK在達(dá)到超時(shí)時(shí)間的這段時(shí)間周期內(nèi)沒有發(fā)出命令。在這 種情況下,ARM處理器回到步驟b的執(zhí)行狀態(tài),在一個(gè)新的超時(shí)時(shí)間周期中重新等待SDK發(fā) 送的中斷通知。
[0077] 在步驟e中,當(dāng)判斷出共享緩沖區(qū)中有所述SDK寫入的新的命令時(shí),表明了在達(dá)到 超時(shí)時(shí)間的這段時(shí)間周期內(nèi),ARM處理器雖然沒有接收到中斷通知,但是SDK已經(jīng)在共享緩 沖區(qū)中寫入了新的命令,此時(shí)可認(rèn)為SDK在達(dá)到超時(shí)時(shí)間的這段時(shí)間周期內(nèi)發(fā)出了命令, 但是由于某種(些)原因造成了中斷通知的丟失。在這種情況下,ARM處理器的下一步處理同 步驟c中等待到中斷通知后的處理一樣,認(rèn)為SDK已發(fā)出了命令,進(jìn)而進(jìn)行步驟f的執(zhí)行。
[0078] 步驟f、對(duì)命令進(jìn)行校驗(yàn),之后執(zhí)行步驟e。
[0079] 步驟g、判斷命令校驗(yàn)是否成功,如果是則執(zhí)行步驟h,否則執(zhí)行步驟b。
[0080] 步驟f和步驟g的設(shè)置可以防止命令錯(cuò)誤。當(dāng)步驟g中判斷出步驟f對(duì)命令校驗(yàn) 沒有成功,即校驗(yàn)失敗時(shí),可認(rèn)為該次SDK所發(fā)送的命令是錯(cuò)誤的,遂重新回到步驟b,進(jìn)而 避免了一次DSP錯(cuò)誤的執(zhí)行命令,這樣可有效防止錯(cuò)誤命令對(duì)DSP造成錯(cuò)誤的控制。
[0081] 步驟h、ARM處理器根據(jù)命令轉(zhuǎn)發(fā)矩陣表,將命令轉(zhuǎn)發(fā)到目的DSP子核,以使所述目 的DSP子核完成所述命令的功能。
[0082] 由于前述步驟b至步驟g的設(shè)置,使得執(zhí)行到本步驟h時(shí),SDK所發(fā)出的命令才可 以確認(rèn)為是對(duì)DSP進(jìn)行控制的正確命令。此時(shí)執(zhí)行步驟h才能夠真正獲得SDK所發(fā)出命令 通過ARM處理器的轉(zhuǎn)發(fā)后在DSP所實(shí)現(xiàn)的功能。
[0083] 結(jié)合圖4所示,經(jīng)過步驟b,當(dāng)SDK將命令寫入共享緩沖區(qū)并向ARM處理器發(fā)送中 斷通知,所述ARM處理器接收到所述中斷通知后,在步驟c中,ARM處理器判斷出等待(接 收)到了中斷通知,隨后ARM處理器讀取所述共享緩沖區(qū)中的所述命令,并判斷出實(shí)現(xiàn)所述 命令的功能的目的DSP子核。在ARM處理器讀取所述共享緩沖區(qū)中的所述命令,并判斷出 實(shí)現(xiàn)所述命令的功能的目的DSP子核的過程中,將經(jīng)歷步驟f和步驟g的對(duì)命令進(jìn)行校驗(yàn) 的過程。當(dāng)在步驟g中校驗(yàn)不成功,則回到步驟b的執(zhí)行。
[0084] 結(jié)合圖4所示,于步驟b中ARM處理器設(shè)置等待的超時(shí)時(shí)間;經(jīng)過步驟b、步驟c 后,當(dāng)所述ARM處理器等待接收所述中斷通知的等待時(shí)間達(dá)到了所設(shè)置的超時(shí)時(shí)間,并且 所述ARM處理器沒有接收到所述中斷通知時(shí),則執(zhí)行步驟d,所述ARM處理器查詢所述共享 緩沖區(qū)以確認(rèn)所述共享緩沖區(qū)中是否有所述SDK寫入的新的命令;
[0085] 在步驟e中,若所述共享緩沖區(qū)中沒有所述新的命令,則回到步驟b,所述ARM處 理器繼續(xù)等待接收新的中斷通知,當(dāng)再次經(jīng)過步驟b、步驟c,所述ARM處理器等待接收新的 中斷通知的等待時(shí)間達(dá)到了所設(shè)置的超時(shí)時(shí)間時(shí),繼續(xù)執(zhí)行步驟d,所述ARM處理器再次查 詢所述共享緩沖區(qū)以確認(rèn)是否有所述SDK向所述共享緩沖區(qū)寫入的新的命令,如此反復(fù)執(zhí) 行;
[0086] 在步驟e中,若所述共享緩沖區(qū)中有所述新的命令,則所述ARM處理器讀取所述共 享緩沖區(qū)中的所述新的命令并判斷出實(shí)現(xiàn)所述新的命令的功能的目的DSP子核;所述ARM 處理器將所述新的命令轉(zhuǎn)發(fā)到所述目的DSP子核,以使所述目的DSP子核完成所述功能。針 對(duì)圖4所示實(shí)施例,其中還包括了對(duì)所述新的命令進(jìn)行校驗(yàn)的過程。
[0087] 本發(fā)明中,對(duì)所述命令進(jìn)行校驗(yàn)的過程是在讀取所述共享緩沖區(qū)中的所述命令 后,判斷出實(shí)現(xiàn)所述命令的功能的目的DSP子核之前進(jìn)行的。具體可參見圖4中步驟f、步 驟g和步驟f。
[0088] 本發(fā)明中,判斷出實(shí)現(xiàn)所述命令的功能的具體DSP子核以及將所述命令轉(zhuǎn)發(fā)到所 述目的DSP子核是根據(jù)命令轉(zhuǎn)發(fā)矩陣表實(shí)現(xiàn)的,所述命令轉(zhuǎn)發(fā)矩陣表包括:
[0089] _retC〇reFlg_(執(zhí)行核標(biāo)識(shí)參數(shù)):用于判斷實(shí)現(xiàn)所述命令的功能的目的DSP子核;
[0090] _recevCoreFlg_ (返回核標(biāo)識(shí)參數(shù)):用于判斷返回信息的DSP子核;
[0091] _wait_ (等待時(shí)間參數(shù)):用于記錄所述命令的等待時(shí)間,若在所設(shè)定的時(shí)間內(nèi)不 能完成所述命令,則報(bào)告錯(cuò)誤;
[0092] _chanType_ (通道類型參數(shù)):用于記錄所述命令的通道類型、通道數(shù)量,以用于對(duì) 所述命令進(jìn)行校驗(yàn);
[0093] _bPara_ (命令參數(shù)):命令的參數(shù),用于實(shí)現(xiàn)命令的傳遞;
[0094] _bRetPara_ (命令反饋參數(shù)):命令的反饋參數(shù),用于實(shí)現(xiàn)命令返回的參數(shù)的傳遞;
[0095] _buf_ (命令緩沖參數(shù)):命令的緩沖區(qū),用于放置參數(shù)信息;
[0096] _retBuf_ (命令反饋緩沖參數(shù)):命令的反饋緩沖區(qū),用于放置返回參數(shù)等信息;
[0097] _func_ (執(zhí)行函數(shù)參數(shù)):命令對(duì)應(yīng)的實(shí)現(xiàn)功能的函數(shù)指針。
[0098] 其中_chanType_是可有可無的,其他的所有參數(shù)必不可少。但需要注意,有些命 令用不到_retBuf_ (命令反饋緩沖參數(shù)),_retBufj^t這些用不到_retBuf_的命令是沒有 用的,但對(duì)其他命令則可能是有用的。
[0099] 如上所述命令轉(zhuǎn)發(fā)矩陣表中的各參數(shù),命令轉(zhuǎn)發(fā)矩陣表記錄了命令所需的全部信 息。SDK通過ARM處理器向DSP下發(fā)命令時(shí)只需提供命令號(hào)及必要的設(shè)置參數(shù)即可,從而屏 蔽了命令設(shè)置的詳細(xì)細(xì)節(jié)。ARM處理器通過命令序號(hào)可在命令轉(zhuǎn)發(fā)矩陣表中查找到相應(yīng)命 令,該處詳細(xì)記錄了執(zhí)行該相應(yīng)命令的DSP子核、需要反饋信息的DSP子核、執(zhí)行命令的等 待時(shí)間、命令的類型(編碼、解碼或顯示)、執(zhí)行命令的函數(shù)指針等信息。進(jìn)而ARM處理器將 命令及相應(yīng)參數(shù)下發(fā)到對(duì)應(yīng)的DSP子核,并通過命令轉(zhuǎn)發(fā)矩陣表中的函數(shù)指針在該子核調(diào) 用相應(yīng)的函數(shù)完成命令。最后DSP子核將反饋信息寫入轉(zhuǎn)發(fā)矩陣表中命令的反饋緩沖區(qū)(_ retBuf_)和反饋參數(shù)(_bRetPara_),從而完成SDK和多核DSP的交互。
[0100] 本發(fā)明的方法,通過在第一操作系統(tǒng)和第二操作系統(tǒng)下的DSP之間增加 ARM處理 器,使得第一操作系統(tǒng)所發(fā)出的命令能夠通過該ARM處理器轉(zhuǎn)發(fā)到所述DSP,進(jìn)而可實(shí)現(xiàn)在 第一操作系統(tǒng)(如Windows系統(tǒng))下對(duì)所述DSP的控制,進(jìn)而使得Centaurus平臺(tái)的視音頻 板卡能夠應(yīng)用于Windows操作系統(tǒng)。
[0101] 依據(jù)上述方法,本發(fā)明還提供了一種第一操作系統(tǒng)對(duì)運(yùn)行于第二操作系統(tǒng)的DSP 進(jìn)行操作的系統(tǒng),如圖5所示,包括:第一操作系統(tǒng)的SDK,用于將命令寫入共享緩沖區(qū)并向 ARM處理器發(fā)送中斷通知;
[0102] ARM處理器,用于接收所述中斷通知,讀取所述共享緩沖區(qū)中的所述命令,并判斷 出實(shí)現(xiàn)所述命令功能的并運(yùn)行于第二操作系統(tǒng)下的具有多個(gè)DSP子核的DSP中的目的DSP 子核,并將所述命令轉(zhuǎn)發(fā)到所述目的DSP子核,以使所述目的DSP子核完成所述功能;以及
[0103] DSP,運(yùn)行于第二操作系統(tǒng)下,具有多個(gè)DSP子核,例如VID、VPS和C674X等。該 DSP為Centaurus平臺(tái)中的多核DSP。
[0104] 以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精 神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明保護(hù)的范圍之內(nèi)。
【權(quán)利要求】
1. 一種第一操作系統(tǒng)對(duì)運(yùn)行于第二操作系統(tǒng)的DSP進(jìn)行操作的方法,包括: 第一操作系統(tǒng)將命令寫入共享緩沖區(qū)并向ARM處理器發(fā)送中斷通知; 所述ARM處理器接收到所述中斷通知后,讀取所述共享緩沖區(qū)中的所述命令,并判斷 出實(shí)現(xiàn)所述命令的功能的并運(yùn)行于第二操作系統(tǒng)下的具有多個(gè)DSP子核的DSP中的目的 DSP子核; 所述ARM處理器將所述命令轉(zhuǎn)發(fā)到所述目的DSP子核,以使所述目的DSP子核完成所 述功能。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于:所述第一操作系統(tǒng)通過該第一操作系統(tǒng) 的SDK將命令寫入共享緩沖區(qū)并向ARM處理器發(fā)送中斷通知。
3. 根據(jù)權(quán)利要求2所述的方法,其特征在于,所述方法還包括: 所述ARM處理器設(shè)置等待接收中斷通知的超時(shí)時(shí)間; 當(dāng)所述ARM處理器等待接收所述中斷通知的等待時(shí)間達(dá)到了所設(shè)置的超時(shí)時(shí)間,并且 所述ARM處理器沒有接收到所述中斷通知時(shí),所述ARM處理器查詢所述共享緩沖區(qū)以確認(rèn) 所述共享緩沖區(qū)中是否有所述SDK寫入的新的命令; 若所述共享緩沖區(qū)中沒有所述新的命令,則所述ARM處理器繼續(xù)等待接收新的中斷通 知; 若所述共享緩沖區(qū)中有所述新的命令,則所述ARM處理器讀取所述共享緩沖區(qū)中的所 述新的命令并判斷出實(shí)現(xiàn)所述新的命令的功能的目的DSP子核;所述ARM處理器將所述新 的命令轉(zhuǎn)發(fā)到所述目的DSP子核,以使所述目的DSP子核完成所述功能。
4. 根據(jù)權(quán)利要求3所述的方法,其特征在于:所述超時(shí)時(shí)間為20ms。
5. 根據(jù)權(quán)利要求3所述的方法,其特征在于,在讀取所述共享緩沖區(qū)中的所述命令后, 判斷出實(shí)現(xiàn)所述命令的功能的目的DSP子核之前,還包括: 對(duì)所述命令進(jìn)行校驗(yàn); 若校驗(yàn)成功則判斷出實(shí)現(xiàn)所述命令的功能的目的DSP子核;否則,等待SDK再次向ARM 處理器發(fā)送中斷通知。
6. 根據(jù)權(quán)利要求1所述的方法,其特征在于:所述判斷出實(shí)現(xiàn)所述命令的功能的并運(yùn) 行于第二操作系統(tǒng)下的具有多個(gè)DSP子核的DSP中的目的DSP子核,是根據(jù)命令轉(zhuǎn)發(fā)矩陣 表判斷出實(shí)現(xiàn)所述命令的功能的目的DSP子核,以及命令執(zhí)行時(shí)間和需要反饋的目的DSP 子核實(shí)現(xiàn)的。
7. 根據(jù)權(quán)利要求6所述的方法,其特征在于,所述命令轉(zhuǎn)發(fā)矩陣表包括: _retCoreFlg_ :用于判斷實(shí)現(xiàn)所述命令的功能的目的DSP子核; _recevCoreFlg_ :用于判斷返回信息的DSP子核; _?&^_:用于記錄所述命令的等待時(shí)間,若在所設(shè)定的時(shí)間內(nèi)不能完成所述命令,則報(bào) 告錯(cuò)誤; _bPara_ :命令的參數(shù),用于實(shí)現(xiàn)命令參數(shù)的傳遞; _bRetPara_ :命令的反饋參數(shù),用于實(shí)現(xiàn)命令返回參數(shù)的傳遞; _buf_ :命令的緩沖區(qū),用于放置參數(shù)信息; :命令的反饋緩沖區(qū),用于放置返回參數(shù)等信息; _func_ :命令對(duì)應(yīng)的實(shí)現(xiàn)功能的函數(shù)指針。
8. 根據(jù)權(quán)利要求1至7任一項(xiàng)所述的方法,其特征在于,所述DSP子核包括:可編程高 清視頻影像協(xié)處理器VID、高清視頻處理子系統(tǒng)VPS和C674X。
9. 根據(jù)權(quán)利要求1至7任一項(xiàng)所述的方法,其特征在于:所述DSP為Centaurus平臺(tái) 中的多核DSP。
10. -種第一操作系統(tǒng)對(duì)運(yùn)行于第二操作系統(tǒng)的DSP進(jìn)行操作的系統(tǒng),其特征在于,包 括: 第一操作系統(tǒng)的SDK,用于將命令寫入共享緩沖區(qū)并向ARM處理器發(fā)送中斷通知; ARM處理器,用于接收所述中斷通知,讀取所述共享緩沖區(qū)中的所述命令,并判斷出實(shí) 現(xiàn)所述命令的功能的并運(yùn)行于第二操作系統(tǒng)下的具有多個(gè)DSP子核的DSP中的目的DSP子 核,并將所述命令轉(zhuǎn)發(fā)到所述目的DSP子核,以使所述目的DSP子核完成所述功能;以及 DSP,運(yùn)行于第二操作系統(tǒng)下,具有多個(gè)DSP子核。
【文檔編號(hào)】G06F15/163GK104102619SQ201310125921
【公開日】2014年10月15日 申請(qǐng)日期:2013年4月11日 優(yōu)先權(quán)日:2013年4月11日
【發(fā)明者】張海龍, 王微, 周春暉 申請(qǐng)人:杭州??低晹?shù)字技術(shù)股份有限公司