基於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。git

安裝Qemu

在Windows上安裝Qemu。下載qemu-w64-setup-20201124.exe,默認安裝便可,再也不贅述。以下圖:github

LiteOS Studio安裝

HUAWEI LiteOS Studio 是以Visual Studio Code社區開源代碼爲基礎,根據LiteOS嵌入式系統軟件開發語言、業務場景等特色開發的一款輕量級定製集成開發環境解決方案。對於熟悉Visual Studio Code的開發者,很是容易上手。shell

訪問LiteOS Studio官網,下載LiteOS Studio安裝軟件,安裝過程很是簡單,直接看官網資料便可,不贅述。安裝完畢以後,須要參考官網文檔,搭建windows開發環境windows

(以下圖)。api

注意,新建工程時,須要git客戶端工具,請確保本地已安裝git for windows工具並添加環境變量。網絡

新建Qemu仿真工程

點擊新建工程圖標,打開新建工程界面。在使用LiteOS Studio新建工程時,確保網絡暢通,能夠訪問LiteOS開源社區站點https://gitee.com/LiteOS/LiteOS。工具

  • 工程名稱:填入自定義的工程名
  • 工程目錄:填入或選擇工程存儲路徑
  • SDK版本號:選擇Gitee-LiteOS-Master
  • 開發板列表:選擇Qemureakview-pbx-a9開發板

點擊確認,後臺將下載並保存所選目標板的SDK,下載完成後自動打開新建的工程。學習

編譯Qemu仿真工程

點擊工具欄上的編譯圖標, 開始編譯。編譯成功後,在控制檯輸出以下信息:ui

在編譯完畢,打開工程設置,在燒錄器Burner和調測器Debugger設置裏,分別設置須要燒錄的bin文件和調測使用的elf可執行文件,分別以下圖:
燒錄器Burner配置:spa

調試器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

 

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

相關文章
相關標籤/搜索