基于LiteOS Studio零成本學(xué)習(xí)LiteOS物聯(lián)網(wǎng)操作系統(tǒng)

      網(wǎng)友投稿 657 2022-05-30

      基于LiteOS Studio零成本學(xué)習(xí)LiteOS物聯(lián)網(wǎng)操作系統(tǒng)

      大家在學(xué)習(xí)物聯(lián)網(wǎng)操作系統(tǒng)開發(fā)的時(shí)候,都不得不準(zhǔn)備一套開發(fā)板和仿真器,也是一筆不小的投資。LiteOS社區(qū)現(xiàn)在對(duì)外開放了對(duì)Qemu模擬器的適配工程,在不使用開發(fā)板的情況下,也可以搭建LiteOS開發(fā)環(huán)境,做到零成本,非常方便初學(xué)者學(xué)習(xí)。

      Qemu簡介

      Qemu是一套由FabriceBellard編寫的以GPL許可證的模擬處理器,在GNU/Linux平臺(tái)上使用廣泛,也支持在X86環(huán)境上運(yùn)行。有關(guān)Qemu的介紹可參考其github社區(qū)內(nèi)容。LiteOS Stduio使用Qemu realview-pbx-a9開發(fā)板來模擬運(yùn)行LiteOS開源工程。本文主要介紹Windows下基于Qemu運(yùn)行LiteOS。

      安裝Qemu

      在Windows上安裝Qemu。下載qemu-w64-setup-20201124.exe,默認(rèn)安裝即可,不再贅述。如下圖:

      LiteOSStudio安裝

      HUAWEI LiteOS Studio?是以VisualStudio Code社區(qū)開源代碼為基礎(chǔ),根據(jù)LiteOS嵌入式系統(tǒng)軟件開發(fā)語言、業(yè)務(wù)場景等特點(diǎn)開發(fā)的一款輕量級(jí)定制集成開發(fā)環(huán)境解決方案。對(duì)于熟悉Visual Studio Code的開發(fā)者,非常容易上手。

      訪問LiteOS Studio官網(wǎng),下載LiteOS Studio安裝軟件,安裝過程非常簡單,直接看官網(wǎng)資料即可,不贅述。安裝完畢之后,需要參考官網(wǎng)文檔,搭建windows開發(fā)環(huán)境

      (如下圖)。

      注意,新建工程時(shí),需要git客戶端工具,請(qǐng)確保本地已安裝git for windows工具并添加環(huán)境變量。

      新建Qemu仿真工程

      點(diǎn)擊新建工程圖標(biāo),打開新建工程界面。在使用LiteOS Studio新建工程時(shí),確保網(wǎng)絡(luò)暢通,可以訪問LiteOS開源社區(qū)站點(diǎn)https://gitee.com/LiteOS/LiteOS。

      工程名稱:填入自定義的工程名

      工程目錄:填入或選擇工程存儲(chǔ)路徑

      SDK版本號(hào):選擇Gitee-LiteOS-Master

      開發(fā)板列表:選擇Qemureakview-pbx-a9開發(fā)板

      點(diǎn)擊確認(rèn),后臺(tái)將下載并保存所選目標(biāo)板的SDK,下載完成后自動(dòng)打開新建的工程。

      編譯Qemu仿真工程

      基于LiteOS Studio零成本學(xué)習(xí)LiteOS物聯(lián)網(wǎng)操作系統(tǒng)

      點(diǎn)擊工具欄上的編譯圖標(biāo),?開始編譯。編譯成功后,在控制臺(tái)輸出如下信息:

      在編譯完畢,打開工程設(shè)置,在燒錄器Burner和調(diào)測器Debugger設(shè)置里,分別設(shè)置需要燒錄的bin文件和調(diào)測使用的elf可執(zhí)行文件,分別如下圖:

      燒錄器Burner配置:

      調(diào)試器Debugger配置:

      除了燒錄器、調(diào)試器,LiteOS Studio工程設(shè)置還支持對(duì)開發(fā)板、編譯器、組件管理、串口等進(jìn)行設(shè)置,大家可以自行查看相應(yīng)的設(shè)置。本文使用默認(rèn)設(shè)置即可,設(shè)置完畢后,點(diǎn)擊確認(rèn)Comfirm保存。

      運(yùn)行Qemu仿真工程

      對(duì)于真實(shí)開發(fā)板,需要把鏡像bin或者h(yuǎn)ex文件燒錄到開發(fā)板,才能運(yùn)行。使用Qemu模擬器好處是并不需要真實(shí)燒錄,啟動(dòng)Qemu傳入鏡像參數(shù)即可。我們復(fù)用燒錄功能,點(diǎn)擊工具欄上的圖標(biāo)進(jìn)行燒錄,啟動(dòng)Qemu模擬器運(yùn)行編譯的LiteOS工程。

      運(yùn)行成功的截圖如下:

      默認(rèn)的配置時(shí),輸出啟動(dòng)信息后,就進(jìn)入shell模式,我們可以輸入task,查看運(yùn)行中的任務(wù)的信息。更多LiteOS shell命令,請(qǐng)參考 https://gitee.com/LiteOS/LiteOS/tree/master/shell 。Shell命令輸出示例如下:

      如果想退出Qemu運(yùn)行,在Terminal終端窗口同時(shí)按Ctrl + A,然后按X鍵即可退出。

      配置Qemu仿真工程運(yùn)行Kernel Demo

      LiteOS是高度可配置的系統(tǒng),除了默認(rèn)設(shè)置,我們可以在工程設(shè)置--組件管理中對(duì)系統(tǒng)組件配置進(jìn)行定制。這里演示下如何開啟Kernel Demo在Qemu模擬器上運(yùn)行。

      開啟的這個(gè)Kernel Task DemoDemo代碼執(zhí)行入口如下:

      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; }

      示例代碼先后創(chuàng)建了2個(gè)任務(wù),一個(gè)名為HIGH_NAME、一個(gè)名為LOW_NAME。在兩個(gè)任務(wù)里,演示了Task相關(guān)的接口LOS_TaskSuspend、LOS_TaskResume、LOS_TaskDelay、LOS_TaskDelete的使用。更完整的示例請(qǐng)?jiān)L問https://gitee.com/LiteOS/LiteOS/blob/master/demos/kernel/api/los_api_task.c。

      了解到Demo代碼后,重新編譯一下。編譯成功后,點(diǎn)擊燒錄按鈕運(yùn)行,即可看到如下輸出:

      看到實(shí)際運(yùn)行的效果后,建議讀者們好好閱讀下相關(guān)的Demo代碼,包含任務(wù)、內(nèi)存管理、中斷、IPC通信、時(shí)間管理、雙向鏈表、任務(wù)同步等。請(qǐng)參考:https://gitee.com/LiteOS/LiteOS/tree/master/demos/kernel

      調(diào)測Qemu仿真工程

      HUAWEI LiteOS Studio 調(diào)測非常簡單易用,點(diǎn)擊工具欄上的調(diào)測按鈕即可開啟GDB圖形化調(diào)測。對(duì)于我們的Qemu工程,開始調(diào)測后的界面如下:

      對(duì)界面上的區(qū)域進(jìn)行介紹下:

      變量Variable

      展示局部變量、全局變量、靜態(tài)變量的值。

      監(jiān)視Watch

      監(jiān)視指定的表達(dá)式,可以輸入變量名稱或者表達(dá)式,實(shí)時(shí)計(jì)算結(jié)果。

      調(diào)用堆棧Call Stack

      展示當(dāng)前運(yùn)行狀態(tài)和暫停狀態(tài)的任務(wù)調(diào)用堆棧。

      斷點(diǎn)Breakpoints

      展示設(shè)置的斷點(diǎn)。

      寄存器Registers

      查看各個(gè)寄存器的數(shù)值,支持復(fù)制數(shù)值操作。

      源代碼窗口

      高亮顯示當(dāng)前執(zhí)行的源代碼行。

      反匯編窗口

      對(duì)應(yīng)當(dāng)前源代碼文件行所在的反匯編代碼。

      輸出Output

      展示GDB客戶端的輸出日志。

      調(diào)試控制臺(tái)Debug Console

      展示GDB Server的輸出日志。

      讀者們可以繼續(xù)嘗試,繼續(xù)、單步、跳入、調(diào)測、停止等調(diào)測動(dòng)作。更加詳細(xì)的調(diào)測介紹,請(qǐng)參考 ---調(diào)試器-執(zhí)行調(diào)試。

      本文演示了如何準(zhǔn)備LiteOS Studio環(huán)境,如何新建Qemu工程,如何編譯、燒錄、如何組件配置Kernel Demo、如何GDB調(diào)測。

      LiteOS Studio工具還是容易上手的,非常適合學(xué)習(xí)物聯(lián)網(wǎng)開發(fā)的。特別是對(duì)于初學(xué)者,不需要購買開發(fā)板,即可以學(xué)習(xí)、體驗(yàn)LiteOS物聯(lián)網(wǎng)操作系統(tǒng)開發(fā)。通過對(duì)LiteOS開源社區(qū)提供的Kernel Demo的學(xué)習(xí)、實(shí)際上手練習(xí),,會(huì)對(duì)LiteOS操作系統(tǒng)內(nèi)核會(huì)有個(gè)更深入的了解。

      附資料:

      LiteOS Studio社區(qū)資料: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環(huán)境基于Qemu運(yùn)行LiteOS,請(qǐng)參考:https://gitee.com/LiteOS/LiteOS/blob/master/targets/realview-pbx-a9/README_CN.md

      輕量級(jí)操作系統(tǒng) LiteOS

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:kubernetes1.11手動(dòng)搭建
      下一篇:【實(shí)操指南】一分鐘學(xué)會(huì)技術(shù)文章的排版
      相關(guān)文章
      国产精品亚洲w码日韩中文| 亚洲美国产亚洲AV| 亚洲AV无码专区日韩| 亚洲熟妇成人精品一区| 亚洲五月丁香综合视频| 亚洲精品蜜桃久久久久久| 中文字幕精品亚洲无线码一区| 精品国产亚洲AV麻豆 | 亚洲 日韩经典 中文字幕 | 亚洲精品天堂在线观看| 久久综合亚洲色一区二区三区| 久久久久无码精品亚洲日韩| 亚洲日韩一页精品发布| 亚洲精品乱码久久久久久蜜桃不卡 | 国产亚洲情侣一区二区无码AV| 亚洲国产精品日韩| 亚洲一区日韩高清中文字幕亚洲| 亚洲精品无码你懂的网站| 国产偷窥女洗浴在线观看亚洲| 亚洲人妻av伦理| 精品亚洲一区二区三区在线播放| 精品国产亚洲一区二区在线观看 | 久久亚洲精品成人无码网站| 91亚洲导航深夜福利| 亚洲综合小说久久另类区| 亚洲国产美女视频| 国产亚洲精品bv在线观看| 亚洲日本一线产区和二线 | 亚洲AV第一成肉网| 亚洲AV成人片无码网站| 亚洲Av无码乱码在线播放| 国产亚洲精品精品国产亚洲综合| 亚洲综合伊人久久大杳蕉| 国产亚洲精品美女久久久 | 黑人粗长大战亚洲女2021国产精品成人免费视频 | 亚洲乱码无限2021芒果| 亚洲日韩中文字幕无码一区| 在线观看免费亚洲| 国产综合精品久久亚洲| 亚洲A∨无码无在线观看| 亚洲国产精品成人精品软件|