您現在的位置:首頁 > 產業 > 技術 > 技術動態
技術干貨:采用Renode 在無物理硬件的情況下運行真正的多節點 Zephyr設置
http://www.gcppfm.live 物聯中國
日期:2018-03-22 17:08:07來源:中國網 點擊:565
核心提示:作者:Michael Gielda Zephyr項目社區成員,Antmicro業務拓展及董事會成員如果你在工作中使用多節點物聯網系統,你可能在構建實際網絡時遇到過與測試、安全性、互操作性、復用性、產品周期管理以及代碼質量相關的問題。為了解決這些問題,需要新的工具和工作流程,以便開發者圍繞代碼更有效地協作。這些工具和工作流程必...

作者:Michael Gielda  Zephyr項目社區成員,Antmicro業務拓展及董事會成員 

如果你在工作中使用多節點物聯網系統,你可能在構建實際網絡時遇到過與測試、安全性、互操作性、復用性、產品周期管理以及代碼質量相關的問題。 

為了解決這些問題,需要新的工具和工作流程,以便開發者圍繞代碼更有效地協作。這些工具和工作流程必須增加測試范圍并加深對運行在該設備上的軟件和協議的理解,無論現在或是未來, 我們的家庭、辦公室、工廠和城市都主要由這些設備來組成并支持。 

聽起來很有前途?我們希望是的。它并不像聽說的那樣復雜。在這篇文章中,我們將解釋Renode如何在你的日常研發中幫助你,而不是強迫你重寫軟件或放棄你所熟悉的工具集。 

Renode能模擬物理硬件系統—包括CPU、外圍設備、傳感器、環境及節點間的無線媒介。盡管開發你的物聯網軟件,包括使用你熟悉的流程,基于Zephyr實時操作系統的軟件,然后在不同情況下使用Renode進行調試和測試。測試包括跨多個節點的協議和應用程序。你可以在具有完全確定性的聯合虛擬環境中運行測試,并控制執行參數。 

例如,在2017年的歐洲嵌入式Linux大會(ELC)上,Renode和Zephyr團隊聯合展示了一個相當復雜的模擬無線設置。該演示展示了基于兩種架構(x86和ARM)的節點且運行于兩種不同的RTOS(Zephyr和Contiki)上,演示了采用Renode執行互操作性測試是多么的簡單。 

在本文中,我希望重點講一下重現一個簡單的多節點設置有多簡單。這個簡短的教程能作為你采用Renode和Zephyr進行開發的起點。 

1、  安裝Renode

Renode框架托管在GitHub上:https://github.com/renode/renode。你可以使用README文件夾下載并且安裝它,但是最簡單的方式是通過https://github.com/renode/renode/releases下載二進制發行版。所提供的預編譯軟件包中,為Linux提供deb和rpm軟件包,為macOS提供dmg軟件包,為Windows提供Zip壓縮包。 

2、  啟動Renode

本教程使用Renode的命令行界面,這是與Renode交互的多種方式之一。安裝完成以后,運行renode命令。或者,查找Renode.exe二進制文件。一旦Renode啟動,你將看到兩個窗口:一個是Renode的智能記錄儀(你能控制記錄什么),另一個用于稱為Monitor的命令行接口(CLI)。 

在此CLI窗口中,你可以創建和控制整個仿真環境。 

3、  腳本

雖然你可以交互式輸入所有命令,但是把它們組合成可重復應用的Renode腳本是一個很好的想法,這些腳本通常具有.resc的擴展名。這些腳本可用于加載二進制文件,設置啟動條件,準備環境,將機器連接到網絡以及其它任務。

 本教程使用Renode包中提供的腳本:scripts/many-nodes/quark-c1000-zephyr/demo.resc scripts/many-nodes/quark-c1000-zephyr/quark_c1000.resc。關于腳本的詳細信息請查看Renode安裝目錄中的注釋文件(對于Linux、opt/renode/script是默認設置)。 

4、  加載我們的設置

教程設置包括兩個英特爾Quark C1000節點,通過SPI與一個TI的CC2520無線模塊連接。節點運行基于Zephyr演示的應用、echo_server和echo_client,對目標硬件進行常規編譯。(提供的腳本采用在線托管的預編譯二進制文件,但是你可以通過在腳本中更改相關的$BIN變量提供自己的二進制文件)。

 Renode中,點在虛3D間中被分配坐標。通過操縱無線媒介或者移動節點的最大范圍,我們可以將它們放進或移出彼此的范圍,形成不同的拓撲結構,構建各種復雜的路由場景。在這個簡單的例子中,節點在彼此的范圍內,我們不會移動它們或者使它們丟數據包。

 要運行一個腳本,請使用include命令(或簡稱為i)和加載腳本的路徑,前綴為@符號,像這樣:include @scripts/many-nodes/quark-c1000-zephyr/demo.resc 

腳本加載之后,你將看到兩個新的終端窗口。這些是為每臺機器打開的UART窗口。 

仿真現在已經加載,但是沒有啟動。你可以使用開啟或暫停,以及下一段中講到的其他命令來控制它。 

簡單命令

a)開始及暫停

要控制模擬是否運行,請使用開啟和暫停。 

機器

在提供的腳本中,我們使用mach create命令來創建新機器。這會在監控器中切換文本。所有的后續命令都針對當前機器執行。

 要更換機器,請使用mach set命令。使用機器編號或名字,例如:mach set 1或者mach set servername。 

所有的機器能用match命令列出。要清除當前的選擇,請使用mach clear。

 b)訪問圍設備

所有的外圍設備都可以在監控器中訪問,其中大部分方式和屬性都開放給用戶。要列出所有可用的外圍設備,請使用peripherals命令。 

c)外設方法和屬性

要訪問外設,你必須提供它的路徑。所有的外圍設備都在sysbus中注冊,所以請使用sysbus.uartB訪問第二個UART或者使用sysbus.spi1.radio訪問CC2520。在提供的大部分示例中使用sysbus,允許你刪除sysbus. Prefix。鍵入一個外圍設備的名字,將為你列出可用的方式、域和屬性列表。該列表是自動生成的,并且大部分可訪問的成員不是為終端用戶所設計。該列表為每種成員類型顯示了正確的Monitor語法示例。 

d)其它命令

為了查找關于內置Monitor的信息,請鍵入“help”并參考文檔。運行幫助打印給定命令的幫助

 5、  調試檢查

Renode提供很多方法來驗證你的應用程序的行為,由于完全控制了環境,你可以通過對仿真應用程序完全透明的方式添加記錄日志、掛鉤事件,交互式代碼調試等。由于這是一個簡單的教程,因此只在下面列出少數調試選項,還有很多可用的選項。 

a)        函數名稱記錄

用程序卡住或運行錯誤時,檢查函數調用的跟蹤是一個好方法。要在選擇的機器中啟用函數名稱記錄,請運行cpu LogFunctionNames true (使用false來關)。由于記錄數據的數量可能太多而是無用的,你可以把以特定前綴開始的記錄功能進行過濾,例如cpu LogFunctionNames true“uart_ qm_”只記錄以uart_或qm_前的函數。 

b)        記錄外設訪問

如果你的驅動程序不能正確運行,查看與它控制的設備的通信會有所幫助。要啟用CPU和UART外圍設備間的每次交互日志,請運行sysbus LogPeripheralAccess uartB指令。該功能僅適用于直接在系統總線上注冊的外圍設備。 

c)        Wireshark

網絡流量分析是每個多節點系統中的常見任務。由于Wiresshark是程序員選擇的工具,Renode對它的支持既包括以太網也包括無線網絡。有多種選項來選擇記錄哪種接口,但是觀察IEEE 802.15.4網絡的所有數據的最簡單方法是運行LogWirelessTraffic命令。 

這個命令打開一個新的Wireshark窗口。如果關閉它,你可以通過運行host.wireshark-allWirelessTraffic Run重新打開它。

 d)       GDB (GNU Project Debugger)

作為一款流行的調試工具,GDB被用來分析運行于Renode的應用程序,它使用與OpenOCD相同的遠程協議,因此它可以很容易地與大多數基于GDB的IDE集成,比如Eclipse。要在Renode中啟動一個GDB 存根,請運行pu StartGDBServer 3333 (其中3333是一個示例端口號) ,并通過調用target remote :3333從 GDB進行連接。要開啟仿真,你必須在Renode中啟動并在GDB中繼續。 

你可以使用GDB的大部分常規功能:斷點、觀察點、步進、讀/寫變量等,你也可以在GDB使用Monitor命令,將命令直接發到Renode CLI,以避免在兩個控制窗口之間進行切換。 

我們希望這個簡短的教程能幫助你開始使用Zephyr和Renode,它最近成為Zephyr推薦的開發者工具之一。

地址:https://www.zephyrproject.org/developers/developer-tools/。

在未來的文章中,我們將繼續本教程,詳細介紹更復雜的無線設置--敬請期待! 

RenodeTM是Antmicro的一個軟件開發者框架,Antmicro是一家致力于構建軟件驅動物聯網系統的技術公司。如果你需要在Renode中實施你的平臺及設置方面的幫助,在你的組織中采用持續集成工作流程,與現有工具集成或者構建自定義工具,或采用Renode方式進行物聯網系統開發服務集成,請通過郵箱[email protected]聯系他們。

關于Zephyr

Zephyr 項目是一款小型且可擴展的操作系統,尤其適用于資源受限的硬件系統,可支持多種架構;該系統高度開源,對于開發人員社區完全開放,開發人員可根據需要對該系統進行二次開發,以支持最新硬件、工具和設備驅動程序;該系統高度模塊化平臺,可輕松集成任何架構的第三方庫和嵌入式設備。


出處:中國網
鄭重聲明:本文僅代表作者個人觀點,與物聯中國(www.gcppfm.live)無關。其原創性以及文中陳述文字和內容未經本站證實,對本文以及其中全部或者部分內容、文字的真實性、完整性、及時性本站不作任何保證或承諾,請讀者僅作參考,并請自行核實相關內容。
分享到:
  • 資訊
  • 產業
  • 服務
  • 應用
浙江11选5征集