91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么遠程調試在Linux車機中的應用

發布時間:2021-10-22 11:24:22 來源:億速云 閱讀:146 作者:柒染 欄目:互聯網科技

本篇文章為大家展示了怎么遠程調試在Linux車機中的應用,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

導讀

在軟件開發過程中,調試是必不可少的環節,嵌入式操作系統的調試與桌面操作系統的調試相比有很大差別,嵌入式系統的可視化調試能力比桌面操作系統要弱一點。對于導航這種業務場景比較復雜的程序開發,可視化調試環境能讓我們業務場景開發事半功倍,也能快速定位導航業務與車機中其他模塊交互出現的問題,提高開發過程中的調試效率。

遠程調試是真機調試中最便捷的一種,開發者只需借用在PC端強大的調試器就能完成業務場景的調試。

背景

Thrift是一種接口描述語言和二進制通訊協議,它被用來定義和創建跨語言的服務,是一種RPC(遠程過程調用)通信框架,由Facebook為“大規模跨語言服務開發”。在車機系統中,各模塊之間也可以使用Thrift通信框架進行通信。導航作為一個單獨的為進程提供服務的模塊,只提供導航相關的業務以及地圖渲染的能力,導航的HMI界面是車機系統中統一的操作界面,系統HMI界面與導航之間的交互接口則是通過已經定義好的接口描述語言(IDL),使用自動化工具生成本地可調用的接口,然后使用Thrift框架傳輸完成系統HMI與導航之間的通信。

 怎么遠程調試在Linux車機中的應用

調試手段

為了開發過程中調試方便,我們在PC上做了一套模擬器,能在PC上進行地圖渲染。還實現了一套在PC上使用的系統HMI模擬命令發送工具,模擬工具是作為客戶端連接導航提供的服務,這樣能在PC端模擬發送命令,幫助導航簡單業務的開發,但這種方式存在著以下弊端

  • 模擬命令工具,只能模擬簡單的業務場景,有多個交互的場景無法模擬。

  • 無法操作地圖HMI,也看不到HMI界面顯示以及過程中的反饋。

  • 無法滾動地圖,后面接了Win32上面的鼠標事件,能用鼠標實現滾動,但這種方式與車機中滾動流程不一致。 

  • PC端無法使用車機中的設備,如導航過程中沒有導航音,無法使用USB等。 

  • PC端拿不到車機中的數據,比如車身數據、GPS信號等。

調試方案優化

針對當前調試手段存在的以上問題。我們對調試方案進行了優化,我們可以借助車機中系統HMI來與導航進行交互。實現了使用車機環境中的信號對PC端導航業務場景進行調試。主要有以下幾點功能:

1.PC端模擬器接收車機發來的信號

在該項目中,導航的相關業務都是作為服務端向車機中其他模塊提供服務,在車機系統中,系統HMI連接導航服務的地址是固定的,我們在車機中開發了一個代理--Sandwich,主要作用是啟動導航服務,這個導航服務并不實現真正的導航業務,而是啟動了一個空服務,讓車機中其他模塊能成功建立連接,同時Sandwich作為客戶端連接PC端模擬器提供的導航服務,PC端的導航服務真正實現導航業務,Sandwich負責接收車機發送過來的業務請求,并將請求轉發給PC端模擬器,這樣PC端模擬器就能接收到車機中的信號,收到的業務請求并做處理再將處理結果通過Thrift反饋到車機端。

這個流程我們打通了車機中信號發送到PC端模擬器,并可以將處理完的數據反饋給車機端。

 怎么遠程調試在Linux車機中的應用

3. 將PC端模擬器中顯示的地圖投射到車機端顯示

實現了以上兩步,一個使用車機信號調試PC端導航程序的環境基本完成了。已經能實現車機信號與PC進行雙向接收,但是此時導航的渲染能力還是停留在PC端,車機中還只是顯示了一個系統HMI界面,無法看到導航地圖展現的效果,這樣就會帶來一個問題,一些需要強依賴地圖的操作可能就無法精準操作,比如點擊地圖上某個POI等。此時需要將PC端的展現同步到車機側。

要實現這一目的,一般我們有兩種方法:

  • 車機與PC同步渲染

車機中的導航正常運行,當導航接收到系統模塊業務請求時,先是車機導航進行處理,處理完畢后將信號轉發到PC端處理,這種方案兩端導航業務邏輯并行運行,復雜的業務場景下,兩端會同時跟車機進行交互,此時可能會產生互斥,會有兩端邏輯不同步的場景,達不到預期效果。

  • 將車機中渲染的數據投射到車機端

在這里我們可以將PC上程序每渲染一幀地圖則將結果傳到車機端,由車機端Sandwich負責接收,當Sandwich接收到一幀地圖像素數據后,負責將此幀數據渲染到車機屏幕上,此時車機中呈現的效果跟PC端一致。在該項目中我們采用了這一方案,這種方案中,真正的導航業務邏輯是來自PC端,車機中只是一個轉發過程,所以不會存在第一種方案中的問題。

 

但在某些特定的環境下,導航描畫會很頻繁,發送給車機的數據也會很多,頻繁的數據發送可能會帶來一定的性能開銷,表現上可能會出現延遲。這里可以使用降低圖像質量來減少圖像數據,例如,可以使用16位或者8位BMP來傳輸,還可以壓縮傳輸,這樣1920*720分辨率圖像傳輸大小能控制在30-50k左右。

小結

基于車機系統中Thrift通信框架,實現的這套遠程調試方案,實質是在車機中使用Sandwich程序接管車機系統中與導航有交互的全部接口處理,通過RPC通信轉發,實現了使用真實車機信號調試導航的目的。有了這套調試環境,我們甚至可以直接在真車上邊路測邊調試,跟以前的路測拿Log回來分析、重現相比,整個調試過程,簡單,便捷,直觀。大大提高了開發效率。

基于RPC通信的特性,我們還可以對調試方案再進一步優化,可以加入多客戶端調試功能,使用同一臺車機環境,不同的模塊負責人可以同時進行復雜業務場景的聯合調試。

上述內容就是怎么遠程調試在Linux車機中的應用,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

潍坊市| 固始县| 龙川县| 翼城县| 铜鼓县| 社旗县| 蛟河市| 邳州市| 萨嘎县| 西昌市| 永嘉县| 克什克腾旗| 吴旗县| 项城市| 固安县| 淮滨县| 五家渠市| 永修县| 呈贡县| 芜湖市| 宁南县| 哈密市| 黔西| 明光市| 南汇区| 五常市| 同江市| 浮梁县| 嘉荫县| 翼城县| 波密县| 岳阳县| 佛冈县| 林口县| 三原县| 连平县| 阿拉善左旗| 南郑县| 瑞安市| 三台县| 和林格尔县|