Huawei LiteOS是華為面向IoT領(lǐng)域,構(gòu)建的“統(tǒng)一物聯(lián)網(wǎng)操作系統(tǒng)和中間件軟件平臺(tái)”,以輕量級(jí)(內(nèi)核小于10k)、低功耗(1節(jié)5號(hào)電池最多可以工作5年),快速啟動(dòng),互聯(lián)互通,安全等關(guān)鍵能力,為開發(fā)者提供“一站式”完整軟件平臺(tái),有效降低開發(fā)門檻、縮短開發(fā)周期。
Huawei LiteOS五大內(nèi)核模塊
下面對(duì)LiteOS基礎(chǔ)內(nèi)核的任務(wù)管理、內(nèi)存管理、中斷管理、信號(hào)量、互斥鎖五大模塊進(jìn)行簡(jiǎn)單介紹。
01、LiteOS內(nèi)核的任務(wù)管理
任務(wù)是競(jìng)爭(zhēng)系統(tǒng)資源的最小運(yùn)行單元。任務(wù)可以使用或等待CPU、使用內(nèi)存空間等系統(tǒng)資源,并獨(dú)立于其它任務(wù)運(yùn)行。
Huawei LiteOS是一個(gè)支持多任務(wù)的操作系統(tǒng),一個(gè)任務(wù)就表示一個(gè)線程,任務(wù)之間可以進(jìn)行切換和通信。LiteOS的任務(wù)管理模塊提供任務(wù)創(chuàng)建、刪除、延時(shí)、掛起和恢復(fù)、更改任務(wù)優(yōu)先級(jí)、鎖定任務(wù)調(diào)度和解鎖任務(wù)調(diào)度、根據(jù)任務(wù)控制塊查詢?nèi)蝿?wù) ID、根據(jù) ID 查詢?nèi)蝿?wù)控制塊信息等功能。
因?yàn)長(zhǎng)iteOS內(nèi)核是搶占式調(diào)度內(nèi)核,所以高優(yōu)先級(jí)的任務(wù)可以打斷低優(yōu)先級(jí)任務(wù),低優(yōu)先級(jí)任務(wù)必須在高優(yōu)先級(jí)任務(wù)阻塞或結(jié)束后才能得到調(diào)度,同優(yōu)先級(jí)任務(wù)會(huì)進(jìn)行時(shí)間片輪轉(zhuǎn)調(diào)度。優(yōu)先級(jí)表示任務(wù)執(zhí)行的優(yōu)先順序,決定了在發(fā)生任務(wù)切換時(shí)即將要執(zhí)行的任務(wù)。LiteOS中的任務(wù)一共有32個(gè)優(yōu)先級(jí) (0-31),最高優(yōu)先級(jí)為 0,最低優(yōu)先級(jí)為31。
任務(wù)控制TCB
每一個(gè)任務(wù)都含有一個(gè)任務(wù)控制塊(TCB)。TCB 包含了任務(wù)上下文棧指針(stack pointer)、任務(wù)狀態(tài)(包括就緒、運(yùn)行、阻塞、退出4種狀態(tài))、任務(wù)棧大小(任務(wù)棧里保存著局部變量、寄存器、函數(shù)參數(shù)、函數(shù)返回地址等)、任務(wù)優(yōu)先級(jí)、任務(wù)ID、任務(wù)名等信息。TCB相當(dāng)于每個(gè)任務(wù)在內(nèi)核中的身份證,可以反映出每個(gè)任務(wù)運(yùn)行情況。
運(yùn)作機(jī)制
在任務(wù)模塊初始化時(shí),系統(tǒng)會(huì)先申請(qǐng)TCB需要的內(nèi)存空間。如果任務(wù)初始化成功,則系統(tǒng)對(duì)TCB內(nèi)容進(jìn)行初始化。用戶創(chuàng)建任務(wù)時(shí),系統(tǒng)會(huì)將任務(wù)棧進(jìn)行初始化,預(yù)置上下文。此外,系統(tǒng)還會(huì)將“任務(wù)入口函數(shù)”地址放在相應(yīng)位置。這樣在任務(wù)第一次啟動(dòng)進(jìn)入運(yùn)行態(tài)時(shí),將會(huì)執(zhí)行“任務(wù)入口函數(shù)”。
02、LiteOS內(nèi)核的內(nèi)存管理
Huawei LiteOS的內(nèi)存管理模塊管理系統(tǒng)的內(nèi)存資源,主要包括內(nèi)存的初始化、分配及釋放,是操作系統(tǒng)的核心模塊之一。在系統(tǒng)運(yùn)行過程中,內(nèi)存管理模塊通過對(duì)內(nèi)存的申請(qǐng)/釋放操作,來管理用戶和OS對(duì)內(nèi)存的使用,使內(nèi)存的利用率和使用效率達(dá)到最優(yōu),同時(shí)最大限度地解決系統(tǒng)的內(nèi)存碎片問題。
Huawei LiteOS的內(nèi)存管理分為動(dòng)態(tài)內(nèi)存管理和靜態(tài)內(nèi)存管理。
動(dòng)態(tài)內(nèi)存管理
在動(dòng)態(tài)內(nèi)存池中分配用戶指定大小的內(nèi)存塊。
o 優(yōu)點(diǎn):按需分配。
o 缺點(diǎn):內(nèi)存池中可能出現(xiàn)碎片。
靜態(tài)內(nèi)存管理
在靜態(tài)內(nèi)存池中分配用戶初始化時(shí)預(yù)設(shè)(固定)大小的內(nèi)存塊,初始化后塊大小不可變更。
o 優(yōu)點(diǎn):分配和釋放效率高,靜態(tài)內(nèi)存池中無碎片。
o 缺點(diǎn):只能申請(qǐng)到初始化預(yù)設(shè)大小的內(nèi)存塊,不能按需申請(qǐng)。
03、LiteOS內(nèi)核的中斷管理
中斷是指出現(xiàn)需要時(shí),CPU暫停執(zhí)行當(dāng)前程序,轉(zhuǎn)而執(zhí)行新程序的過程。即在程序運(yùn)行過程中,系統(tǒng)出現(xiàn)了一個(gè)必須由CPU立即處理的事務(wù)。此時(shí),CPU暫時(shí)中止當(dāng)前程序的執(zhí)行轉(zhuǎn)而處理這個(gè)事務(wù),這個(gè)過程就叫做中斷。
為什么需要中斷?
眾多周知,CPU的處理速度比外設(shè)的運(yùn)行速度快很多,外設(shè)可以在沒有CPU介入的情況下完成一定的工作,但某些情況下需要CPU為其做一定的工作。通過中斷機(jī)制,在外設(shè)不需要CPU介入時(shí),CPU可以執(zhí)行其它任務(wù),而當(dāng)外設(shè)需要CPU時(shí)通過產(chǎn)生中斷信號(hào)使CPU立即中斷當(dāng)前任務(wù)來響應(yīng)中斷請(qǐng)求。用戶通過中斷申請(qǐng),注冊(cè)中斷處理程序,可以指定CPU響應(yīng)中斷請(qǐng)求時(shí)所執(zhí)行的具體操作。這樣可以使CPU避免把大量時(shí)間耗費(fèi)在等待、查詢外設(shè)狀態(tài)的操作上,因此將大大提高系統(tǒng)實(shí)時(shí)性以及執(zhí)行效率。
相關(guān)的硬件
與中斷相關(guān)的硬件可以劃分為三類:設(shè)備、中斷控制器、CPU本身。
設(shè)備:發(fā)起中斷的源,當(dāng)設(shè)備需要請(qǐng)求CPU時(shí),產(chǎn)生一個(gè)中斷信號(hào),該信號(hào)連接至中斷控制器。
中斷控制器:中斷控制器是 CPU 眾多外設(shè)中的一個(gè),它一方面接收其它外設(shè)中斷引腳的輸入,另一方面,它會(huì)發(fā)出中斷信號(hào)給CPU。可以通過對(duì)中斷控制器編程實(shí)現(xiàn)對(duì)中斷源的優(yōu)先級(jí)、觸發(fā)方式、打開和關(guān)閉源等設(shè)置操作。常用的中斷控制器有VIC(Vector Interrupt Controller)和GIC(General Interrupt Controller),在 ARM Cortex-M 系列中使用的中斷控制器是NVIC(Nested Vector Interrupt Controller)。
CPU:CPU會(huì)響應(yīng)中斷源的請(qǐng)求,中斷當(dāng)前正在執(zhí)行的任務(wù),轉(zhuǎn)而執(zhí)行中斷處理程序。
主要功能
Huawei LiteOS支持:中斷初始化、中斷創(chuàng)建、開/關(guān)中斷、恢復(fù)中斷、中斷使能、中斷屏蔽。
04、LiteOS內(nèi)核的信號(hào)量
信號(hào)量(Semaphore)是一種實(shí)現(xiàn)任務(wù)間通信的機(jī)制,可以用于任務(wù)之間同步或臨界資源的互斥訪問。信號(hào)量可以被任務(wù)獲取或者申請(qǐng),不同的信號(hào)量通過信號(hào)量索引號(hào)來唯一確定,每個(gè)信號(hào)量都有一個(gè)計(jì)數(shù)值和任務(wù)隊(duì)列。通常信號(hào)量的計(jì)數(shù)值表示有效的資源數(shù),即剩下的可被占用的互斥資源數(shù)。當(dāng)任務(wù)申請(qǐng)(Pend)信號(hào)量時(shí),如果申請(qǐng)成功,則信號(hào)量的計(jì)數(shù)值遞減,如申請(qǐng)失敗,則掛起在該信號(hào)量的等待任務(wù)隊(duì)列上,一旦有任務(wù)釋放該信號(hào)量,則等待任務(wù)隊(duì)列中的任務(wù)被喚醒開始執(zhí)行。
信號(hào)量運(yùn)作示意圖:
使用場(chǎng)景
信號(hào)量是一種非常靈活的同步方式,可以運(yùn)用在多種場(chǎng)合中,實(shí)現(xiàn)鎖、同步、資源計(jì)數(shù)等功能,也能方便的用于任務(wù)與任務(wù),中斷與任務(wù)的同步中。
· 任務(wù)間互斥。用作互斥時(shí),信號(hào)量創(chuàng)建后記數(shù)是滿的,在需要使用臨界資源時(shí),先申請(qǐng)信號(hào)量,使其變空,這樣其他任務(wù)需要使用臨界資源時(shí)就會(huì)因?yàn)闊o法申請(qǐng)到信號(hào)量而阻塞,從而保證了臨界資源的安全。
· 任務(wù)間同步。用作同步時(shí),信號(hào)量在創(chuàng)建后被置為空,任務(wù)1申請(qǐng)信號(hào)量而阻塞,任務(wù)2在某種條件發(fā)生后,釋放信號(hào)量,于是任務(wù)1得以進(jìn)入READY或RUNNING態(tài),從而達(dá)到了兩個(gè)任務(wù)間的同步。
· 資源計(jì)數(shù)。用作資源計(jì)數(shù)時(shí),信號(hào)量的作用是一個(gè)特殊的計(jì)數(shù)器,可以遞增或者遞減,但是值永遠(yuǎn)不能為負(fù)值,典型的應(yīng)用場(chǎng)景是生產(chǎn)者與消費(fèi)者的場(chǎng)景。
· 中斷與任務(wù)的同步。用作中斷與任務(wù)的同步時(shí),可以在中斷未觸發(fā)時(shí)將信號(hào)量的值置為0,從而堵塞中斷服務(wù)處理任務(wù),一旦中斷被觸發(fā),則喚醒堵塞的中斷服務(wù)處理任務(wù)進(jìn)行中斷處理。
05、LiteOS內(nèi)核的互斥鎖
互斥鎖(mutex)又稱互斥型信號(hào)量,是一種特殊的二值信號(hào)量,用于實(shí)現(xiàn)對(duì)共享資源的獨(dú)占式處理。互斥鎖主要使用在多任務(wù)環(huán)境下,此時(shí)往往存在多個(gè)任務(wù)競(jìng)爭(zhēng)同一共享資源的應(yīng)用場(chǎng)景。另外,Huawei LiteOS通過優(yōu)先級(jí)繼承算法,解決了信號(hào)量存在的優(yōu)先級(jí)翻轉(zhuǎn)問題。
運(yùn)作機(jī)制
任意時(shí)刻互斥鎖只有兩種狀態(tài):開鎖或閉鎖。當(dāng)有任務(wù)持有時(shí),互斥鎖處于閉鎖狀態(tài),這個(gè)任務(wù)獲得該互斥鎖的所有權(quán)。當(dāng)該任務(wù)釋放它時(shí),該互斥鎖被開鎖,任務(wù)失去該互斥鎖的所有權(quán)。當(dāng)一個(gè)任務(wù)持有互斥鎖時(shí),其他任務(wù)將不能再對(duì)該互斥鎖進(jìn)行開鎖或持有,所以其他任務(wù)此時(shí)訪問這個(gè)公共資源將會(huì)被阻塞,直到互斥鎖被持有該鎖的任務(wù)釋放后,其他任務(wù)才能重新訪問該公共資源。
互斥鎖運(yùn)作示意圖:
圖解LiteOS開發(fā)環(huán)境快速搭建
下面介紹如何在Windows上搭建 LiteOS 的開發(fā)調(diào)試環(huán)境。基于的硬件平臺(tái)采用的是華為官方推薦的IoT開發(fā)板——小熊派(BearPi)。下面將首先介紹開發(fā)板與 Windows連接所需的驅(qū)動(dòng)安裝,再介紹用于開發(fā)LiteOS系統(tǒng)級(jí)別軟件的集成開發(fā)環(huán)境(IDE)。LiteOS開發(fā)可以使用兩種IDE開發(fā)環(huán)境,分別是華為提供的LiteOS Studio和Keil公司提供的MDK。主要介紹華為目前自研主推的LiteOS Studio,并通過一個(gè)簡(jiǎn)單的用例演示如何使用LiteOS Studio創(chuàng)建一個(gè)工程,并對(duì)其進(jìn)行編譯、燒錄和設(shè)備在線調(diào)試的具體操作步驟。
1、準(zhǔn)備環(huán)境
1.1 小熊派(BearPi)介紹
小熊派(BearPi)是一款基于STM32L431RCT6設(shè)計(jì)的高性能物聯(lián)網(wǎng)開發(fā)板。具有強(qiáng)大的可擴(kuò)展性,提供給開發(fā)者評(píng)估及快速設(shè)計(jì)相關(guān)物聯(lián)網(wǎng)的應(yīng)用產(chǎn)品。下圖展示了BearPi核心板的構(gòu)成:
圖 1 - BearPi 的核心板
出于演示多種物聯(lián)網(wǎng)解決方案的目的,以及擴(kuò)展性的需要,整個(gè)BearPi套件除了核心板外還提供有多款外擴(kuò)擴(kuò)展板插件,整體上這些外擴(kuò)插件板分為兩大類:
一類擴(kuò)展板上集成了多種 “傳感(Sensor)” 設(shè)備和 “動(dòng)作(Actuator)” 設(shè)備,“Sensor” 的主要職能是負(fù)責(zé)從周邊環(huán)境中采集信息并由MCU(圖 2 中標(biāo)號(hào)為 “2” 的黃色線框部分)進(jìn)行讀取,譬如溫度傳感器可以采集周邊環(huán)境的溫度值、光照傳感器可以采集周邊環(huán)境的光照值等等;而 “Actuator” 則指的是一些可以接受控制指令進(jìn)行動(dòng)作的元器件,譬如馬達(dá)用于執(zhí)行旋轉(zhuǎn)功能、燈泡可以發(fā)光,蜂鳴器可以發(fā)出聲音等等。這些 “Sensor” 和 “Acurator” 根據(jù)不同的應(yīng)用場(chǎng)景組合后集成在一系列的擴(kuò)展板上,可以通過標(biāo)準(zhǔn)的插口以插件的形式和 BearPi 的核心板進(jìn)行連接。參考圖2中標(biāo)號(hào)為1的紅色線框部分。
另一類擴(kuò)展板上集成了各種通訊芯片和射頻單元,譬如NB-IoT發(fā)射單元、Wi-Fi 發(fā)射單元等,這些擴(kuò)展板主要負(fù)責(zé)在MCU的控制下實(shí)現(xiàn)網(wǎng)絡(luò)連接,實(shí)現(xiàn)BearPi 和網(wǎng)絡(luò)云端設(shè)備的互聯(lián)互通。這些負(fù)責(zé)網(wǎng)絡(luò)通訊的擴(kuò)展板同樣通過標(biāo)準(zhǔn)的插口以插件的形式連接在BearPi的核心板上。參考圖2中標(biāo)號(hào)為“3” 的綠色線框部分。
圖 2 - BearPi 的三大組成部分
1.2 安裝驅(qū)動(dòng)
BearPi 開發(fā)板通過Micro USB線與PC連接,所以在具體開發(fā)調(diào)試前首先要在PC上為開發(fā)板安裝USB驅(qū)動(dòng)。BearPi 已經(jīng)提供了配套的驅(qū)動(dòng)和 LiteOS Studio 安裝包,不做特殊說明,以下安裝包采用的都是 BearPi 套件自帶的版本。
驅(qū)動(dòng)的安裝比較簡(jiǎn)單,解壓 “小熊派開發(fā)板資料1軟件資料” 目錄下的 “STLINK驅(qū)動(dòng).zip” 壓縮包,雙擊與自己系統(tǒng)對(duì)應(yīng)的安裝程序即可, 如圖3所示,32位系統(tǒng)選擇 X86 安裝程序,64位系統(tǒng)選擇64位安裝程序,并根據(jù)安裝程序提示安裝驅(qū)動(dòng)(也可以直接運(yùn)行stlink_winusb_install.bat這個(gè)批處理安裝腳本文件)。要注意的是,由于后面安裝的LiteOS Studio軟件包只支持64位的版本,所以建議大家開發(fā)調(diào)試時(shí)使用Windows 7版本以上64位的系統(tǒng),下面演示所使用的環(huán)境就是 Windows 7的64位系統(tǒng)。
圖 3 - STLINK驅(qū)動(dòng)的安裝
安裝完驅(qū)動(dòng)后,將開發(fā)板通過Micro USB線與PC電腦連接,同時(shí)打開Windows的 設(shè)備管理器。如果在設(shè)備管理器中能找到如圖四所示的COM端口,證明驅(qū)動(dòng)安裝成功。具體是 “COM3” 還是 “COM4”,這個(gè)值在不同的電腦上顯示的可能不同,記住這個(gè)值,后面使用LiteOS Studio設(shè)置串口參數(shù)的時(shí)候會(huì)有用。
圖 4 - STLINK 虛擬串口
但有時(shí)候插上USB線加載驅(qū)動(dòng)會(huì)碰到問題,驅(qū)動(dòng)提示安裝不成功。
圖 5 - 驅(qū)動(dòng)提示安裝不成功
同時(shí)設(shè)備管理器中出現(xiàn)惱人的黃色感嘆號(hào),并提示 “ST-Link VCP Ctrl”。
圖 6 - 設(shè)備管理器提示 “ST-Link VCP Ctrl” 失敗
這個(gè)問題據(jù)說多半是由于使用了非正版的Windows系統(tǒng)所致。
2、LiteOS Studio開發(fā)環(huán)境搭建
LiteOS Studio是華為基于LiteOS嵌入式系統(tǒng)軟件開發(fā)的工具,支持C、C++、匯編等多種開發(fā)語言,提供代碼編輯、編譯、燒錄及調(diào)試等一站式開發(fā)體驗(yàn)。目前支持 ARM Cortex-M0、Cortex-M4、Cortex-M7、Cortex-A7和ARM926EJ-S等芯片架構(gòu)。LiteOS Studio目前已經(jīng)適配了多種開發(fā)板,其中包括ST、HiSilicon、Fudan Microelectronics等主流廠商的開發(fā)板。BearPi基于ST的芯片方案,很方便地可以得到LiteOS Studio的支持。
2.1 安裝LiteOS Studio
解壓 “小熊派開發(fā)板資料1軟件資料” 目錄下的 “LiteOS_IDE.zip” 壓縮包 ,雙擊安裝程序,如 圖7 所示, 根據(jù)提示進(jìn)行安裝。
安裝過程中注意以下幾點(diǎn):
安裝路徑不能有中文路徑,否則即使安裝成功程序運(yùn)行也會(huì)異常。
目前IDE只支持 Win7 以上的64位操作系統(tǒng),所以安裝前請(qǐng)先確認(rèn) Windows 系統(tǒng)版本是否滿足。
圖 7 - 安裝 LiteOS Studio
2.2 創(chuàng)建LiteOS Studio工程
打開LiteOS Studio軟件,在首頁上單擊 “創(chuàng)建LiteOS Studio工程”。
圖 8 - 創(chuàng)建 LiteOS Studio 工程
然后LiteOS Studio會(huì)彈出 “配置工程界面”,此時(shí)可以對(duì)新創(chuàng)建的工程進(jìn)行基本配置。我們采用最簡(jiǎn)單的方式進(jìn)行演示,依次配置如下信息,參考圖9的紅色線框標(biāo)識(shí):
圖 9 - 配置LiteOS Studio工程信息
LiteOS SDK版本:即本工程基于的LiteOS的內(nèi)核和中間件的版本,對(duì)于LiteOS這樣的嵌入式系統(tǒng),應(yīng)用和內(nèi)核是一起參與編譯的。這里我們使用缺省版本,即LiteOS Studio安裝時(shí)自帶的一份SDK模版。
工程名稱:自己定義,本文填寫為 demo。
工程目錄:工程的父目錄,請(qǐng)選擇一個(gè)本機(jī)存在的目錄即可,本文填寫為 D:wsiot-dev。
工程類型:選擇 “端云最佳實(shí)踐”,這里L(fēng)iteOS Studio 自帶了一份配合BearPi 的樣例工程,我們直接使用即可。
配置好后直接點(diǎn)擊 “完成”,需要一些時(shí)間,完成后打開IDE的界面如下。
圖 10 - LiteOS Studio 界面布局
同時(shí)在你指定的 “工程目錄” 下創(chuàng)建名為demo的工程子目錄并拷貝了相應(yīng)的SDK和樣板工程的代碼在工程目錄里。
圖 11 - 創(chuàng)建的工程目錄
2.3 配置LiteOS Studio工程
工程打開后先不要急著編譯,正常流程中還需要先配置一下。菜單選擇 “工程” -> “工程配置”,或者直接點(diǎn)擊工具欄中的圖標(biāo)如下圖所示。
圖 12 - 配置LiteOS Studio工程
彈出如下 “工程配置” 對(duì)話框。由于這里我們使用的是樣板工程,這些內(nèi)容已經(jīng)都給我們配置好了,所以可以直接忽略這一步。
圖 13 - LiteOS Studio工程配置界面
2.4 編譯LiteOS Studio工程
菜單選擇 “工程” -> “編譯” 或者點(diǎn)擊工具欄上的圖標(biāo)如下圖所示。
圖 14 - 編譯LiteOS Studio工程
編譯會(huì)需要一點(diǎn)時(shí)間,但相對(duì)于Linux那樣的大型系統(tǒng)來說還是很快的。編譯完成后顯示 “編譯成功” 以及編譯花費(fèi)的時(shí)間。
圖 15 - 編譯成功
3.5 燒錄LiteOS Studio工程
無論是運(yùn)行還是調(diào)試,都需要將編譯好的程序先下載(習(xí)慣上稱之為 “燒錄”)到開發(fā)板上去。這里我們先確保使用Micro USB線將BearPi 開發(fā)板和PC連接好,確保設(shè)備管理器上的虛擬串口加載完成(即設(shè)備管理器中出現(xiàn)COM端口,如圖4所示),然后菜單選擇 “工程” -> “燒錄”,或者直接點(diǎn)擊工具欄中的圖標(biāo)如下圖所示。
圖 16 - 燒錄LiteOS Studio工程
等待燒錄完成,界面的控制臺(tái)中會(huì)輸出整個(gè)燒錄過程信息,直到完成后顯示 “燒錄成功”。
圖 17 - 燒錄成功
2.6 調(diào)試LiteOS Studio工程
簡(jiǎn)單介紹一下如何在 LiteOS 工程中通過串口打印實(shí)現(xiàn)日志跟蹤以及如何使用在線調(diào)試單步跟蹤。
2.6.1 串口打印
調(diào)試手段中最基本的就是加打印輸出,LiteOS也支持通過串口輸出跟蹤信息。下面介紹一下如何配置串口。注意:如果要確保下面的步驟中能夠在 “串口終端” 中看到打印輸出,需要檢查BearPi的AT開關(guān),確保其撥到MCU一側(cè),如下圖所示。
圖 18 - AT 開關(guān)
采用LiteOS Studio自帶的串口終端即可接收MCU發(fā)送的信息。第一次安裝后缺省不顯示串口終端,通過菜單選擇 “查看” -> “串口終端” 可以將該終端窗口顯示出來。
圖 19 - 顯示串口終端
串口終端顯示后還需要對(duì)LiteOS Studio做一些串口的基本配置才可以接收串口信息。點(diǎn)擊下圖中左上側(cè)的 “齒輪” 圖標(biāo)。
圖 20 - 配置串口終端
再次打開 “工程配置” 對(duì)話框,選擇 “串口配置” 項(xiàng)后配置如下信息:
圖 21 - 配置串口終端界面
端口:這里選擇在安裝驅(qū)動(dòng)時(shí)看到的COM的端口值,這里選擇COM3。
波特率:115200,缺省不變。
數(shù)據(jù)位:8,缺省不變。
停止位:1,缺省不變。
奇偶(校驗(yàn)):None,缺省不變。
流控:None,缺省不變。
此外還可以勾選是否自動(dòng)將串口輸出的內(nèi)容保存到日志文件中并指定日志文件的存放路徑。
點(diǎn)擊 “確認(rèn)” 后保存串口配置,但此時(shí)串口并未開始工作,需要繼續(xù)參考下圖將端口打開使能。這樣以后我們就可以看到 “串口終端” 中開始有內(nèi)容輸出了,左邊顯示的是可讀的ASCII字符信息,右邊顯示的是對(duì)應(yīng)的十六制輸出。之所以存在輸出是因?yàn)槲覀冞@里演示采用的例子中已經(jīng)有一些調(diào)用printf() 函數(shù)的輸出,以后我們?cè)趯?shí)驗(yàn)中也可以通過類似操作在這里查看程序的執(zhí)行過程。
圖 22 - 打開串口
2.6.2 單步跟蹤 LiteOS Studio工程
LiteOS Studio也支持在線單步調(diào)試程序。方法很簡(jiǎn)單。首先確保BearPi開發(fā)板通過 Micro USB線連接PC(這也是我們稱之為 “在線調(diào)試” 的原因),并將需要調(diào)試的程序下載燒錄到開發(fā)板中,然后菜單選擇 “調(diào)試” -> “開始/繼續(xù)”,或者直接點(diǎn)擊工具欄中的圖標(biāo)如下圖所示。
圖 23 - 調(diào)試LiteOS Studio工程
此時(shí)調(diào)試器會(huì)自動(dòng)加載對(duì)應(yīng)代碼并暫停在整個(gè)系統(tǒng)程序的入口處,接下來的操作和我們操作其他的IDE類似。
圖 24 - LiteOS Studio工程調(diào)試界面
審核編輯:湯梓紅
-
WINDOWS
+關(guān)注
關(guān)注
4文章
3569瀏覽量
89289 -
開發(fā)環(huán)境
+關(guān)注
關(guān)注
1文章
230瀏覽量
16695 -
Huawei
+關(guān)注
關(guān)注
1文章
177瀏覽量
20232 -
Liteos
+關(guān)注
關(guān)注
10文章
32瀏覽量
47620 -
內(nèi)核模塊
+關(guān)注
關(guān)注
0文章
10瀏覽量
3112
原文標(biāo)題:漫談Huawei LiteOS五大內(nèi)核模塊,圖解LiteOS開發(fā)環(huán)境快速搭建
文章出處:【微信號(hào):雨飛工作室,微信公眾號(hào):雨飛工作室】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論