OMAPL138雙核系統的調試方案設計
GPP端按如下順序開(kāi)通消息隊列:
①PROC_setup()。采用ARM端應用程序載入DSP程序到DSP中運行的方法啟動(dòng)DSP,由于PROC組件被用于模擬DSP,首先要針對PROC進(jìn)行創(chuàng )建和初始化。
②PROC_attach(processorId,NULL)。在DSP端運行之前,需要建立與GPP端通信的DSP的關(guān)聯(lián),其中指定的processorId為與之通信的DSP的編號,防止ARM與多DSP通信時(shí)造成連接混亂。
③POOL_open(POOL_makePoolId(processorId,POOL_ID),&SamplePoolAttrs)。打開(kāi)共享內存池,內存緩沖區同樣需要一個(gè)ID來(lái)進(jìn)行不同的分工。SamplePoolAttrs用來(lái)指定緩沖區大小、buffer個(gè)數等屬性。
④MSGQ_open(SampleGppMsgqName,&SampleGppMsgq,NULL)。在進(jìn)行MSGQ通信之前的一個(gè)前提是處理器雙方都需要各自打開(kāi)一個(gè)消息隊列,每個(gè)消息隊列擁有各自的name,只有當連接方提出的name與消息隊列的name相吻合的時(shí)候,消息隊列才得到建立。利用該API打開(kāi)消息隊列,SampleGppMsgqName指代的是GPP端消息隊列的name。
⑤PROC_load(processorId,(Char8*)&imageInfo,numArgs,args)。將編譯好的DSP程序載入DSP中,相關(guān)參數為DSP的編號、DSP可運行程序名字、參數的個(gè)數和運行參數。
⑥PROC_start(processorId)。開(kāi)始運行編號為processorId的DSP。
⑦M(jìn)SGQ_locate(dspMsgqName,&SampleDspMsgq,&syncLocateAttrs)。等待需要建立的消息隊列打開(kāi)。由于通信時(shí)需要將一條消息隊列的兩個(gè)端口都關(guān)聯(lián)到指定的處理器,只有name為dspMsgqName的消息隊列一邊已經(jīng)打開(kāi)后,才能連接指定要連接的消息隊列,該消息隊列才真正建立起來(lái),并進(jìn)行通信。該接口函數與MSGQ_open相呼應。syncLocateAttrs為指定等待的相關(guān)屬性,例如指定該屬性為syncLocateAttr s.timeout=WAIT_FOREVER時(shí),程序一旦運行到此函數處,如果另一方處理器還沒(méi)有MSGQ_open的name為dspMsgqName的消息隊列,便會(huì )阻塞在此處,直到打開(kāi)為止。至此GPP端的消息隊列已經(jīng)完成設置,等待DSP端消息隊列的建立。
DSP端按如下順序開(kāi)通隊列:
①建立TASK任務(wù)。由于DSPLink是基于處理器兩端操作系統進(jìn)行的連接,因此,在DSP端同樣必須采用操作系統作為通信的媒介,采用DSP/BIOS操作系統,以任務(wù)的形式運行程序。
②創(chuàng )建和初始化MSGQ傳輸屬性。在進(jìn)行MSGQ的創(chuàng )建打開(kāi)之前,要先指定MSGQ的相關(guān)屬性。
③MSGQ_open((String)dspMsgQName,&info->localMsgq,&msgqAttrs)創(chuàng )建DSP端消息隊列,原理如同GPP端。
④MSGQ_locate(GPP_MSGQNAME,&info->locatedMsgq,&syncLocateAttrs)等待連接GPP端打開(kāi)的消息隊列,原理如同GPP端。
⑤當GPP和DSP端消息隊列都建立完畢,并且關(guān)聯(lián),通信即建立,可以采用MSGQ_put和MSGQ_get發(fā)送和接收數據。
3 基于MSGQ雙核調試方案
MSGQ組件在實(shí)際的應用中因其數據長(cháng)度的可變性,對DSP端應用程序的調試提供了強大的解決方案。通過(guò)MSGQ的分析可以發(fā)現,采用ARM和DSP端聯(lián)合,通過(guò)log打印的方式可以方便地對DSP端的運行情況進(jìn)行一定的了解。
在GPP端和DSP端應用程序中建立獨立線(xiàn)程和任務(wù)。由于只需要將DSP信息傳輸到GPP端而不需要GPP端的反饋信息,因此只需要設計單向傳輸,創(chuàng )建一條消息隊列即可。當DSP端運行到需要打印的信息時(shí),將消息暫存于指定的內存空間,當任務(wù)切換到調試任務(wù)時(shí),將暫存的消息發(fā)送到GPP端,GPP端接收到消息后在終端打印。調試建立流程如圖3所示。本文引用地址:http://dyxdggzs.com/article/149121.htm
linux相關(guān)文章:linux教程
評論