基於LiteOS Studio零成本學習LiteOS物聯網操作系統

摘要:大家在學習物聯網操作系統開發的時候,都不得不準備一套開發板和仿真器,也是一筆不小的投資。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

 

 

點擊關注,第一時間瞭解華爲雲新鮮技術~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章