OMAPL138雙核系統(tǒng)的調(diào)試方案設(shè)計(jì)
(3)釋放內(nèi)存
主要采用MSGQ_Close(GppMsgq);釋放建立的消息隊(duì)列。
根據(jù)圖3,在DSP端,首先需要建立調(diào)試打印任務(wù)并且為所需要傳輸?shù)膌og長(zhǎng)度分配內(nèi)存空間,隨后在log發(fā)送端初始化中進(jìn)行MSGQ的定位MSGQ_locate(),通過(guò)定位將指定連接DSP與GPP端的消息傳輸隊(duì)列。消息就通過(guò)此隊(duì)列進(jìn)行傳輸,采用MSGQ_put()將DSP端的調(diào)試信息發(fā)送到GPP端。在多次傳輸調(diào)試信息后,占用過(guò)多的內(nèi)存空間會(huì)導(dǎo)致內(nèi)存泄露。為防止這種狀況的發(fā)生,要在傳輸完畢后進(jìn)行空間的釋放,在下次傳輸時(shí)再重新創(chuàng)建。雖然這會(huì)影響到傳輸時(shí)間,但是為了內(nèi)存空間更加便利安全的管理,在傳輸結(jié)束后應(yīng)立即釋放。
在GPP端,為了使MSGQ調(diào)試程序與主程序的運(yùn)行互不干擾,創(chuàng)建單獨(dú)線程進(jìn)行調(diào)試使用。在接收內(nèi)存空間分配好后,采用MSGQ_open()打開(kāi)已經(jīng)創(chuàng)建的MSGQ,使用MSGQ_get()消息接收。在接收完調(diào)試信息后,可以直接利用printf將調(diào)試信息通過(guò)串口打印在調(diào)試工具上。GPP端打印完成后,同樣需要對(duì)分配內(nèi)存空間進(jìn)行釋放。至此完成調(diào)試。
該調(diào)試方法同樣存在著缺陷:DSP端正在運(yùn)行的任務(wù)無(wú)法直接顯示消息,需要將消息暫存,隨后進(jìn)行任務(wù)切換傳輸,因此無(wú)法即時(shí)進(jìn)行調(diào)試信息的顯示。但對(duì)于開(kāi)發(fā)者來(lái)說(shuō),常常只是需要知道變量的數(shù)值或者程序運(yùn)行的進(jìn)度,所以此缺陷不會(huì)成為影響調(diào)試的大障礙,可以接受。
4 測(cè)試驗(yàn)證
采用DVSDK中提供的exanlple進(jìn)行更改,更改上述調(diào)試模塊,對(duì)MSGQ的雙核調(diào)試信息進(jìn)行測(cè)試,打印出通過(guò)與EMIFA相連接的LED的值,如圖4所示。本文引用地址:http://www.ex-cimer.com/article/149121.htm
采用insmod dsplinkk.ko將編譯好的內(nèi)核模塊加載進(jìn)系統(tǒng)中,然后利用GPP端應(yīng)用程序載入DSP端應(yīng)用,在DSP端中,將string為“led test reg=”作為msg->str參數(shù),將控制LED的寄存器作為arg[]參數(shù),傳入GPP端打印出來(lái)。
結(jié)語(yǔ)
本文針對(duì)OMAP雙核體系分析了在TI雙核體系中雙核進(jìn)行通信的方式,又分析了DVSDK中雙核通信底層模塊DSPLink在Linux操作系統(tǒng)中的搭建和以MSGQ通信時(shí)的過(guò)程。雙核體系硬件擬合性好,功耗低,有很好的應(yīng)用前景。針對(duì)的雙核開(kāi)發(fā)過(guò)程中調(diào)試難的特點(diǎn)設(shè)計(jì)了log打印的調(diào)試方式,在實(shí)際的應(yīng)用中有較大的意義。
linux相關(guān)文章:linux教程
評(píng)論