日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

ucos ii 文件分析

發(fā)布時(shí)間:2023/12/15 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ucos ii 文件分析 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.?平臺(tái)介紹

本文檔為基于uCOSII操作系統(tǒng)做開(kāi)發(fā)的人員描述了一些uCOSII操作系統(tǒng)的基本特征。?

1.1?結(jié)構(gòu)圖

?

1 ?整體結(jié)構(gòu)圖

2.?基本特征

2.1?uCOSII基本特征

uCOSII操作系統(tǒng)目前支持如下的基本特征:

1.?提供搶占式任務(wù)調(diào)度服務(wù)

2.?提供任務(wù)間同步與通信服務(wù)(如郵箱、消息隊(duì)列、信號(hào)量、內(nèi)存管理等)

3.?提供任務(wù)管理服務(wù)

4.?中斷管理支持嵌套(中斷嵌套層數(shù)最多255

2.2?uCOSII存儲(chǔ)配置

當(dāng)前uCOSII的配置如下:

配置項(xiàng)

配置值

OS_MAX_EVENTS

10

OS_MAX_FLAGS

5

OS_MAX_MEM_PART

5

OS_MAX_QS

4

OS_MAX_TASKS

20

OS_TASK_TMR_STK_SIZE

128

OS_TASK_STAT_STK_SIZE

128

OS_TASK_IDLE_STK_SIZE

128

在上述配置情況下,在metaWare IDE優(yōu)化選項(xiàng)為-O1的情況下,代碼大小為19K左右,數(shù)據(jù)大小為8K左右。

2.3?uCOSIItick配置

?????????如無(wú)特殊要求,性能功能不受影響情況下,配置1 tick/ms,具體可根據(jù)實(shí)際應(yīng)用的性能功能要求和HCLKTimer0的時(shí)鐘情況來(lái)調(diào)整bsp_os.c中全局變量unsigned int cyc = 0xXXXXX;?的值來(lái)改變Tick的頻率。

3.?任務(wù)的建立???????

1.?任務(wù)棧的建立

每個(gè)任務(wù)都需要自己的棧空間,因此在建立任務(wù)之前,先給任務(wù)開(kāi)辟一塊RAM作為該任務(wù)的棧空間。示例如下:

OS_STK ?task1_stk[TASK_STK_SIZE];

2.?任務(wù)實(shí)體的編寫(xiě)

編寫(xiě)任務(wù)函數(shù)及實(shí)體,一個(gè)任務(wù)通常是一個(gè)無(wú)限的循環(huán)。示例如下:

static void task1(void * par)

{

#if OS_CRITICAL_METHOD == 3u ???????

??????OS_CPU_SR ?cpu_sr = 0u;

#endif

unsigned int cnt = (unsigned int) par;

while(1) {

OSTimeDlyHMSM(0, 0, 0, 3000);

OSTaskResume(TASK2_PRI);

}

}

3.?將任務(wù)加入任務(wù)管理行列

使用OSTaskCreate接口函數(shù)來(lái)將任務(wù)加入任務(wù)管理行列,需要注意,此處要提供任務(wù)函數(shù)實(shí)體的入口地址,任務(wù)的棧空間的TOP地址及任務(wù)優(yōu)先級(jí)。

初始任務(wù)的創(chuàng)建OSTaskCreate必須在OSInit接口函數(shù)之后和OSStart接口函數(shù)之前,其他任務(wù)的創(chuàng)建可在任務(wù)實(shí)體中調(diào)用OSTaskCreate接口函數(shù)來(lái)建立新任務(wù)。示例如下:

OSInit();

os_err = OSTaskCreate(task1, (void *)1, p_task1_stk, TASK1_PRI);

os_err = OSTaskCreate(task2, (void *)2, p_task2_stk, TASK2_PRI);

OSTaskSuspend(TASK2_PRI);

OSStart();

或者如下所示:

static void task1(void * par)

{

#if OS_CRITICAL_METHOD == 3u ???????

??????OS_CPU_SR ?cpu_sr = 0u;

#endif

unsigned int cnt = (unsigned int) par;

os_err = OSTaskCreate(task3, (void *)1, p_task3_stk, TASK3_PRI);

os_err = OSTaskCreate(task2, (void *)2, p_task2_stk, TASK2_PRI);

while(1) {

OSTimeDlyHMSM(0, 0, 0, 3000);

OSTaskResume(TASK2_PRI);

}

}

4.?中斷與異常處理函數(shù)的建立

4.1?中斷與異常的處理過(guò)程

???????系統(tǒng)將所有的中斷入口統(tǒng)一為函數(shù)cpu_int_entry的入口地址,將所有的異常入口統(tǒng)一為函數(shù)cpu_exc_entry的入口地址。用戶無(wú)需修改os_cpu_a.s文件中cpu_int_entrycpu_exc_entry的函數(shù)實(shí)體內(nèi)容。在cpu_int_entrycpu_exc_entry中,系統(tǒng)做完相關(guān)處理后,會(huì)根據(jù)當(dāng)前中斷或異常優(yōu)先級(jí)來(lái)決定跳轉(zhuǎn)到中斷異常處理函數(shù)列表_kernel_exc_tbl的相應(yīng)入口去執(zhí)行中斷或異常處理函數(shù)。而中斷異常處理函數(shù)列表_kernel_exc_tbl中的具體的函數(shù)入口則需要用戶建立。

4.2?用戶的中斷與異常處理函數(shù)的建立

1.?中斷與異常處理函數(shù)實(shí)體的編寫(xiě)

如下所示:

static void OSTickISR( void )

{

/* clear timer interrupt */

write_aux_reg(ARC_REG_TIMER0_CTRL, TIMER_CTRL_IE | TIMER_CTRL_NH);

OSTimeTick();

}

2.?將函數(shù)入口地址加入中斷異常處理函數(shù)列表_kernel_exc_tbl

初始化設(shè)備后,將中斷或異常處理函數(shù)的入口加入中斷異常處理函數(shù)列表_kernel_exc_tbl中,如下所示:

arc_install_exc(INHNO_TIMER, (EXC_HANDLER)OSTickISR);

其中INHNO_TIMERTimer在芯片內(nèi)核中的中斷異常號(hào),OSTickISR則為Timer中斷對(duì)應(yīng)的中斷處理函數(shù)入口地址。

然后使能中斷即可。

5.?主要文件說(shuō)明??

uCOSII內(nèi)核又可區(qū)分為兩塊:

1. 內(nèi)核跟移植相關(guān)的部分,包括對(duì)中斷和異常的處理、任務(wù)切換及臨界段等

文件名

文件說(shuō)明

os_cpu_a.s

uCOS內(nèi)核中需要用戶參與修改的部分,包括任務(wù)切換代碼、中斷處理代碼、異常處理代碼等(目前已移植完畢,用戶不需要修改)

os_cpu_c.c?

uCOS內(nèi)核中,提供給用戶編寫(xiě)用戶的鉤子程序的文件

os_cpu.h

與移植相關(guān)的函數(shù)聲明

os_cfg_r.h

與移植相關(guān)的操作系統(tǒng)資源配置

2.其他的uc/os-ii文件

uC/OS-II內(nèi)核與體系結(jié)構(gòu)無(wú)關(guān)的服務(wù)代碼,不需要做任何修改的部分

文件名

文件說(shuō)明

os_dbg.c

uCOS內(nèi)核中,提供給用戶用于配置調(diào)試的文件

os_core.c

uCOS內(nèi)核的功能函數(shù),用戶不需要修改

os_flag.c

uCOS提供的時(shí)間標(biāo)志組管理,用戶不需要修改

os_mbox.c

uCOS提供的消息郵箱管理,用戶不需要修改

os_mem.c

uCOS提供的內(nèi)存管理,用戶不需要修改

os_mutex.c

uCOS提供的互斥信號(hào)量管理,用戶不需要修改

os_q.c

uCOS提供的隊(duì)列管理,用戶不需要修改

os_sem.c

uCOS提供的信號(hào)量管理,用戶不需要修改

os_Task.c

uCOS提供的任務(wù)管理,用戶不需要修改

os_time.c

uCOS提供的時(shí)間管理,用戶不需要修改

os_tmr.c

uCOS提供的軟Timer管理,用戶不需要修改

總結(jié)

以上是生活随笔為你收集整理的ucos ii 文件分析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 人人爽久久涩噜噜噜网站 | 97在线视频观看 | 成年人在线播放 | 国产一区二区三区中文字幕 | av免费大片 | 农村少妇无套内谢粗又长 | 亚洲激情一区二区 | 久久人人爽天天玩人人妻精品 | 大尺度电影在线 | 日韩深夜视频 | 日本激情一区二区 | 黑人极品ⅴideos精品欧美棵 | av 日韩 人妻 黑人 综合 无码 | 国产一区二区三区视频播放 | 91资源站| 精品一区二区三区无码按摩 | 久久精品黄 | 国产成人无码一区二区在线播放 | 国产激情第一页 | 色播放| 天堂av一区二区三区 | 女性裸体瑜伽无遮挡 | 国产精品日韩在线观看 | 亚洲国产av一区二区三区 | 天天干夜夜欢 | av视屏在线| 日本精品影院 | jizz中国少妇高潮出水 | 日韩成人中文字幕 | 亚洲偷 | 最新国产露脸在线观看 | 91在线导航| 日韩av电影网站 | 波多野结衣二区三区 | 在线观看国产亚洲 | 91午夜影院 | 色欲av无码精品一区 | 午夜国产一级 | 午夜试看120秒 | 午夜精品一区二区三区在线观看 | 午夜不卡福利 | 美女扒开腿让男人捅 | 越南a级片| 久久av一区二区三 | 黑人满足娇妻6699xx | 黄色一级视频免费观看 | 老司机在线永久免费观看 | 久久香焦 | 神马午夜电影一区二区三区在线观看 | 久久伊人精品 | 性欧美videos高清hd4k | 久久久久99精品成人片试看 | 综合色88| 三级理伦 | 日日草日日干 | 久久人成 | 亚洲日本中文 | 在线观看日本中文字幕 | 8x8ⅹ国产精品一区二区二区 | 成人av一区 | 国产一区二区激情视频 | 性视频久久 | 亚洲经典一区二区三区四区 | 黄色av一级片 | 五月婷婷丁香网 | 日本www| 久久精品性 | 黄色小视频免费观看 | www婷婷| 精品国产一区二区三区四区精华 | 热玖玖| 国产黄色精品网站 | 成人免费视频观看 | 日韩国产精品一区 | 国产主播精品在线 | 欧美成人精品一区 | 日本护士做爰视频 | 亚洲久久久久 | 亚洲精品成人久久 | 欧美日韩1区 | 成人二三区 | 亚洲gay视频 | 天天舔天天摸 | 4hu在线观看 | 国产经典一区二区三区 | 中国一级黄色 | 亚洲福利电影 | 欧美日韩在线视频观看 | 2023毛片| 国产精品探花一区二区三区 | 性生交大片免费看视频 | 特黄色一级片 | 精品一区李梓熙捆绑 | 在线观看亚洲大片短视频 | 亚洲香蕉视频 | 午夜激情久久久 | 欧美激情电影一区二区 | 精品人妻无码专区视频 | 九色首页 |