任務(wù)一:
本實(shí)驗(yàn)中將創(chuàng)建兩個(gè)任務(wù),一個(gè)低優(yōu)先級(jí)任務(wù)task1,一個(gè)高優(yōu)先級(jí)任務(wù)task2,兩個(gè)任務(wù)都會(huì)每隔2s在串口打印自己的任務(wù)id號(hào),在串口終端中觀(guān)察兩個(gè)任務(wù)的運(yùn)行情況。
首先打開(kāi) HelloWorld 工程,在Demo文件夾右擊,選擇新建文件夾:

新建osal_kernel_demo文件夾,用于存放內(nèi)核的實(shí)驗(yàn)文件:

接下來(lái)在此osal_kernel_demo文件夾中新建第一個(gè)實(shí)驗(yàn)文件osal_task_demo.c文件,添加以下代碼:

編寫(xiě)完成之后,要將我們編寫(xiě)的osal_task_demo.c文件添加到makefile中,加入整個(gè)工程的編譯。
這里有個(gè)較為簡(jiǎn)單的方法,直接修改Demo文件夾下的user_demo.mk配置文件,添加代碼:

這段代碼的意思是:

如果 CONFIG_USER_DEMO 宏定義的值是osal_task_demo,則將osal_task_demo.c文件加入到makefile中進(jìn)行編譯。
那么,如何配置 CONFIG_USER_DEMO 宏定義呢?在工程根目錄下的.sdkconfig文件中的末尾即可配置:

程序燒錄之后,即可看到程序已經(jīng)開(kāi)始運(yùn)行,在串口終端中可看到實(shí)驗(yàn)的輸出內(nèi)容:

系統(tǒng)啟動(dòng)后,首先打印版本號(hào),串口shell的優(yōu)先級(jí)為10。最先打印shell信息,接下來(lái)task1先創(chuàng)建,但是優(yōu)先級(jí)較低,所以后創(chuàng)建的task2搶占執(zhí)行,task2獲取到互斥鎖,對(duì)共享資源進(jìn)行操作,操作完畢解鎖,然后主動(dòng)掛起,task1獲取到互斥鎖,對(duì)共享資源進(jìn)行另一個(gè)操作,操作完畢解鎖,在task1操作的時(shí)候,task2早已掛起完畢,但是獲取不到互斥鎖,所以?huà)炱鸬却?,在task1解鎖后,堵塞的task2被喚醒開(kāi)始執(zhí)行。
任務(wù)二:
在osal_kernel_demo文件夾中新建一個(gè)實(shí)驗(yàn)文件 osal_mem_demo.c,打開(kāi)新建實(shí)驗(yàn)文件并編寫(xiě)如下代碼:

修改Demo文件夾下的user_demo.mk配置文件,添加如下代碼

配置 CONFIG_USER_DEMO 宏定義:

程序燒錄之后,即可看到程序已經(jīng)開(kāi)始運(yùn)行,在串口終端中可看到實(shí)驗(yàn)的輸出內(nèi)容:

可以看到,系統(tǒng)啟動(dòng)后,首先打印版本號(hào),串口shell的優(yōu)先級(jí)為10,最先打印shell信息,接下來(lái)task1先創(chuàng)建,但是優(yōu)先級(jí)較低,所以后創(chuàng)建的task2搶占執(zhí)行,task2獲取到互斥鎖,對(duì)共享資源進(jìn)行操作,操作完畢解鎖,然后主動(dòng)掛起,task1獲取到互斥鎖,對(duì)共享資源進(jìn)行另一個(gè)操作,操作完畢解鎖,在task1操作的時(shí)候,task2早已掛起完畢,但是獲取不到互斥鎖,所以?huà)炱鸬却?,在task1解鎖后,堵塞的task2被喚醒開(kāi)始執(zhí)行。
實(shí)驗(yàn)3:
在osal_kernel_demo文件夾中新建一個(gè)實(shí)驗(yàn)文件 osal_mem_demo.c,并打開(kāi)文件夾,填寫(xiě)如下代碼:

編寫(xiě)完成之后,將編寫(xiě)的 osal_mem_demo.c文件添加到makefile中,加入整個(gè)工程進(jìn)行編譯。
修改Demo文件夾下的user_demo.mk配置文件,添加如下代碼:

配置 CONFIG_USER_DEMO 宏定義,在工程根目錄下的.sdkconfig文件中的末尾即可配置:

程序燒錄之后,即可看到程序已經(jīng)開(kāi)始運(yùn)行,在串口終端中可看到實(shí)驗(yàn)的輸出內(nèi)容:

可以看到,系統(tǒng)啟動(dòng)后,首先打印版本號(hào),串口shell的優(yōu)先級(jí)為10,最先打印shell信息,接下來(lái)內(nèi)存申請(qǐng)任務(wù)創(chuàng)建開(kāi)始執(zhí)行,在該芯片上最大能申請(qǐng)的空間為 16384 字節(jié)。