摘要:大家在學習物聯網作業系統開發的時候,都不得不準備一套開發板和仿真器,也是一筆不小的投資,LiteOS社區現在對外開放了對Qemu模擬器的適配工程,在不使用開發板的情況下,也可以搭建LiteOS開發環境,做到零成本,非常方便初學者學習,
Qemu簡介
Qemu是一套由FabriceBellard撰寫的以GPL許可證的模擬處理器,在GNU/Linux平臺上使用廣泛,也支持在X86環境上運行,有關Qemu的介紹可參考其github社區內容,LiteOS Stduio使用Qemu realview-pbx-a9開發板來模擬運行LiteOS開源工程,本文主要介紹Windows下基于Qemu運行LiteOS,
安裝Qemu
在Windows上安裝Qemu,下載qemu-w64-setup-20201124.exe,默認安裝即可,不再贅述,如下圖:

LiteOS Studio安裝
HUAWEI LiteOS Studio 是以Visual Studio Code社區開源代碼為基礎,根據LiteOS嵌入式系統軟體開發語言、業務場景等特點開發的一款輕量級定制集成開發環境解決方案,對于熟悉Visual Studio Code的開發者,非常容易上手,
訪問LiteOS Studio官網,下載LiteOS Studio安裝軟體,安裝程序非常簡單,直接看官網資料即可,不贅述,安裝完畢之后,需要參考官網檔案,搭建windows開發環境
(如下圖),

注意,新建工程時,需要git客戶端工具,請確保本地已安裝git for windows工具并添加環境變數,
新建Qemu仿真工程
點擊新建工程圖示,打開新建工程界面,在使用LiteOS Studio新建工程時,確保網路暢通,可以訪問LiteOS開源社區站點https://gitee.com/LiteOS/LiteOS,
- 工程名稱:填入自定義的工程名
- 工程目錄:填入或選擇工程存盤路徑
- SDK版本號:選擇Gitee-LiteOS-Master
- 開發板串列:選擇Qemureakview-pbx-a9開發板
點擊確認,后臺將下載并保存所選目標板的SDK,下載完成后自動打開新建的工程,

編譯Qemu仿真工程
點擊工具列上的編譯圖示, 開始編譯,編譯成功后,在控制臺輸出如下資訊:

在編譯完畢,打開工程設定,在燒錄器Burner和調測器Debugger設定里,分別設定需要燒錄的bin檔案和調測使用的elf可執行檔案,分別如下圖:
燒錄器Burner配置:

除錯器Debugger配置:

除了燒錄器、除錯器,LiteOS Studio工程設定還支持對開發板、編譯器、組件管理、串口等進行設定,大家可以自行查看相應的設定,本文使用默認設定即可,設定完畢后,點擊確認Comfirm保存,
運行Qemu仿真工程
對于真實開發板,需要把鏡像bin或者hex檔案燒錄到開發板,才能運行,使用Qemu模擬器好處是并不需要真實燒錄,啟動Qemu傳入鏡像引數即可,我們復用燒錄功能,點擊工具列上的圖示進行燒錄,啟動Qemu模擬器運行編譯的LiteOS工程,
運行成功的截圖如下:

默認的配置時,輸出啟動資訊后,就進入shell模式,我們可以輸入task,查看運行中的任務的資訊,更多LiteOS shell命令,請參考 https://gitee.com/LiteOS/LiteOS/tree/master/shell ,Shell命令輸出示例如下:

如果想退出Qemu運行,在Terminal終端視窗同時按Ctrl + A,然后按X鍵即可退出,
配置Qemu仿真工程運行Kernel Demo
LiteOS是高度可配置的系統,除了默認設定,我們可以在工程設定--組件管理中對系統組件配置進行定制,這里演示下如何開啟Kernel Demo在Qemu模擬器上運行,

開啟的這個Kernel Task DemoDemo代碼執行入口如下:
UINT32 Example_TskCaseEntry(VOID)
{
UINT32 ret;
TSK_INIT_PARAM_S stInitParam;
/* lock task shcedue */
printf("\nKernel task demo begin.\n");
LOS_TaskLock();
printf("LOS_TaskLock() ok.\n");
stInitParam.pfnTaskEntry = (TSK_ENTRY_FUNC)Example_TaskHi;
stInitParam.usTaskPrio = TSK_PRIOR_HI;
stInitParam.pcName = "HIGH_NAME";
stInitParam.uwStackSize = LOSCFG_BASE_CORE_TSK_DEFAULT_STACK_SIZE;
/* create high prio task */
ret = LOS_TaskCreate(&g_demoTaskHiId, &stInitParam);
if (ret != LOS_OK) {
LOS_TaskUnlock();
printf("Example_TaskHi failed.\n");
return LOS_NOK;
}
printf("Create Example_TaskHi ok.\n");
stInitParam.pfnTaskEntry = (TSK_ENTRY_FUNC)Example_TaskLo;
stInitParam.usTaskPrio = TSK_PRIOR_LO;
stInitParam.pcName = "LOW_NAME";
stInitParam.uwStackSize = LOSCFG_BASE_CORE_TSK_DEFAULT_STACK_SIZE;
/* create low prio task */
ret = LOS_TaskCreate(&g_demoTaskLoId, &stInitParam);
if (ret != LOS_OK) {
/* delete high prio task */
if (LOS_OK != LOS_TaskDelete(g_demoTaskHiId)) {
printf("Delete TaskHi failed.\n");
}
LOS_TaskUnlock();
printf("Create Example_TaskLo failed.\n");
return LOS_NOK;
}
printf("Create Example_TaskLo ok.\n");
/* unlock task schedue */
LOS_TaskUnlock();
LOS_TaskDelay(40);
return ret;
}
示例代碼先后創建了2個任務,一個名為HIGH_NAME、一個名為LOW_NAME,在兩個任務里,演示了Task相關的介面LOS_TaskSuspend、LOS_TaskResume、LOS_TaskDelay、LOS_TaskDelete的使用,更完整的示例請訪問https://gitee.com/LiteOS/LiteOS/blob/master/demos/kernel/api/los_api_task.c,
了解到Demo代碼后,重新編譯一下,編譯成功后,點擊燒錄按鈕運行,即可看到如下輸出:

看到實際運行的效果后,建議讀者們好好閱讀下相關的Demo代碼,包含任務、記憶體管理、中斷、IPC通信、時間管理、雙向鏈表、任務同步等,請參考:https://gitee.com/LiteOS/LiteOS/tree/master/demos/kernel
調測Qemu仿真工程
HUAWEI LiteOS Studio 調測非常簡單易用,點擊工具列上的調測按鈕即可開啟GDB圖形化調測,對于我們的Qemu工程,開始調測后的界面如下:

對界面上的區域進行介紹下:
- 變數Variable
展示區域變數、全域變數、靜態變數的值,
- 監視Watch
監視指定的運算式,可以輸入變數名稱或者運算式,實時計算結果,
- 呼叫堆疊Call Stack
展示當前運行狀態和暫停狀態的任務呼叫堆疊,
- 斷點Breakpoints
展示設定的斷點,
- 暫存器Registers
查看各個暫存器的數值,支持復制數值操作,
- 源代碼視窗
高亮顯示當前執行的源代碼行,
- 反匯編視窗
對應當前源代碼檔案行所在的反匯編代碼,
- 輸出Output
展示GDB客戶端的輸出日志,
- 除錯控制臺Debug Console
展示GDB Server的輸出日志,
讀者們可以繼續嘗試,繼續、單步、跳入、調測、停止等調測動作,更加詳細的調測介紹,請參考 ---除錯器-執行除錯,
本文演示了如何準備LiteOS Studio環境,如何新建Qemu工程,如何編譯、燒錄、如何組件配置Kernel Demo、如何GDB調測,
LiteOS Studio工具還是容易上手的,非常適合學習物聯網開發的,特別是對于初學者,不需要購買開發板,即可以學習、體驗LiteOS物聯網作業系統開發,通過對LiteOS開源社區提供的Kernel Demo的學習、實際上手練習,會對LiteOS作業系統內核會有個更深入的了解,
附資料:
LiteOS Studio社區資料:https://liteos.gitee.io/liteos_studio/#/
LieOS開源代碼:https://gitee.com/liteos
Qemu介紹: https://github.com/qemu/qemu
QEMU Binaries for Windows (64 bit)下載:https://qemu.weilnetz.de/w64/
Linux環境基于Qemu運行LiteOS,請參考:https://gitee.com/LiteOS/LiteOS/blob/master/targets/realview-pbx-a9/README_CN.md
點擊關注,第一時間了解華為云新鮮技術~
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/235571.html
標籤:其他
