學(xué)習(xí)筆記20170601">【PMP】學(xué)習(xí)筆記20170601
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仿真工程
點(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)容。