色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于C8051F015芯片在開發(fā)板上實(shí)現(xiàn)μC/OS-II的移植

電子設(shè)計(jì) ? 來源:單片機(jī)與嵌入式系統(tǒng)應(yīng)用 ? 作者:江平新 , 容太平 ? 2020-09-11 17:40 ? 次閱讀

嵌入式應(yīng)用中,使用RTOS的最主要原因是提高系統(tǒng)的可靠性,其次是提高開發(fā)效率、縮短開發(fā)周期。μC/OS-II 是一個(gè)基于優(yōu)先級(jí)的搶占式實(shí)時(shí)內(nèi)核,支持56 個(gè)用戶任務(wù),90%的代碼使用標(biāo)準(zhǔn)的ANSI C語言書寫,程序可讀性強(qiáng),移植性好,代碼可固化,可裁剪,非常靈活。C8051F是美國Cygnal公司生產(chǎn)的與51系列兼容的微控制器,流水線指令結(jié)構(gòu)70%的指令的執(zhí)行時(shí)間為1個(gè)或2個(gè)系統(tǒng)時(shí)鐘周期。當(dāng)時(shí)鐘頻率為25MHz時(shí),速度可達(dá)25MIPS,是一款不錯(cuò)的片上系統(tǒng)。

1 開發(fā)工具和運(yùn)行環(huán)境

實(shí)現(xiàn)μC/OS-II的移植,要求所用的C編譯器支持混合編程KEIL C51可為眾多的8051派生器件編程。我們選用的是KEIL7.02集成開發(fā)環(huán)境,仿真板基于C8051F015芯片

2 移植中所需修改的文件

CPU相關(guān)的文件主要有三個(gè),分別是匯編文件OS_CPU_A.ASM、C語言文件 OS_CPU_C.C和頭文件OS_CPU.H。

2.1 OS_CPU.H文件

OS_CPU.H文件中定義了數(shù)據(jù)類型及與硬件相關(guān)的基本信息。其中改動(dòng)部分如下:

基于C8051F015芯片在開發(fā)板上實(shí)現(xiàn)μC/OS-II的移植

在C8051F中,堆棧都是按字節(jié)操作的,故數(shù)據(jù)類型OS_STK聲明為8位。方向從低地址向高地址方向遞增,所以O(shè)S_STK_GROWTH設(shè)置為 0。μC/OS-II在進(jìn)入系統(tǒng)臨界代碼區(qū)之前要關(guān)中斷,等到退出臨界區(qū)后再打開,以保護(hù)核心數(shù)據(jù)不被多任務(wù)環(huán)境下的其它任務(wù)或中斷破壞。開、關(guān)中斷可通過設(shè)置SFR中的中斷屏蔽位實(shí)現(xiàn)。在關(guān)中斷時(shí),先將IE的內(nèi)容保存在全局變量IE_ SHADOW中,然后關(guān)中斷;退出臨界區(qū)時(shí),還原IE_SHADOW的值。OS_TASK_SW()用來實(shí)現(xiàn)任務(wù)切換。就緒任務(wù)的堆棧初始化應(yīng)該模擬一次中斷發(fā)生后的樣子,堆棧中應(yīng)該按入棧次序設(shè)置好各個(gè)寄存器。OS_TASK_SW()函數(shù)模擬一次中斷過程,在中斷返回的時(shí)候進(jìn)行任務(wù)切換。由于 C8051F015沒有軟中斷,故直接定義宏OS_TASK_SW()為函數(shù)OSCtxSw()。

2.2 OS_CPU_A.ASM文件

編譯器將每個(gè)文件作為一個(gè)模塊,編譯模塊以主名命名,稱為編譯模塊名,用NAME 來聲明。因此,應(yīng)在文件頭部聲明NAME OS_CPU_A。

函數(shù)有程序部分和局部變量部分,它們分別放在獨(dú)立的段中。在大模式下,段名聲明的固定格式為 ?PR?函數(shù)名?模塊名 SEGMENT CODE。因此需要將OSStartHighRdy()、OSCtxSw()、OSIntCtxSw()和OSTickISR()用上面的格式一一聲明。如?PR?OSStartHighRdy?OS_CPU_A SEGMENT CODE,本模塊實(shí)現(xiàn)的函數(shù)需要用PUBLIC聲明,如PUBLIC OSStartHighRdy等。

C51將所有定義說明的數(shù)據(jù)標(biāo)識(shí)符轉(zhuǎn)換為大寫字符,對(duì)函數(shù)則根據(jù)有無寄存器參數(shù)傳送和函數(shù)是否可重入進(jìn)行換名,如:void OSIntEnter(void) reentrant函數(shù)的名字OSIntEnter換成_?OSIntEnter。這些規(guī)則可從編譯后的LST文件中看出。程序中聲明引用的五個(gè)全局變量為OSTCBCur、OSTCBHighRdy、OSRunning、OSPrioCur、OSPrioHighRdy,聲明格式是EXTRN IDATA (OSTCBCur)等。調(diào)用四個(gè)外部子程序OSTaskSwHook()、OSIntEnter()、OSIntExit()、 OSTimeTick(),固定格式為:EXTRN CODE (_?OSTaskSwHook)等。

由于C8051F的堆棧指針只有8位,只能指向內(nèi)部數(shù)據(jù)區(qū)的256個(gè)字節(jié),因此,當(dāng)前運(yùn)行的任務(wù)的堆棧在IDATA區(qū),堆棧大小為40H(64字節(jié)),堆棧起點(diǎn)由KEIL決定。通過標(biāo)號(hào)可以獲得KEIL分配的SP起點(diǎn),代碼如下:

?STACK SEGMENT IDATA

RSEG ?STACK

OSStack:

DS 40H

OSStkStart IDATA OSStack-1

為簡化子程序特定義壓棧出棧宏。壓棧的次序?yàn)镻SW、ACC、B、DPL、DPH、R0~R7,出棧的次序與入棧相反。

PUSHALL MACRO

IRP REG, 《SW,ACC, B, DPL, DPH, 0, 1, 2, 3, 4, 5, 6, 7》

PUSH REG

ENDM

POPALL MACRO

IRP REG, 《7, 6, 5, 4, 3, 2, 1, 0, DPH, DPL, B, ACC, PSW》

POP REG

ENDM

具體函數(shù)的修改部分見本刊網(wǎng)絡(luò)補(bǔ)充版(http://www.dpj.com.cn)。

2.3 OS_CPU_C.C文件

移植μC/OS-II 需要在OS_CPU_C.C中定義六個(gè)函數(shù),而實(shí)際上需要定義的只有OSTaskStkInit()一個(gè)函數(shù)。該函數(shù)用來初始化任務(wù)的堆棧。初始狀態(tài)的堆棧只須初始化?C_XBP (仿真堆棧指針)、任務(wù)地址及堆棧的長度。由于只有INC DPTR指令,故返回棧的最低地址,且最低地址處存放棧的長度,方便用匯編語言實(shí)現(xiàn)任務(wù)的切換。堆的大小可根據(jù)任務(wù)的實(shí)際情況自行確定,由參數(shù) ppdata所指的值確定。

void *OSTaskStkInit (void (*task)(void *pd), void *ppdata,

void *ptos, INT16U opt) reentrant

{

OS_STK *stk;

INT8U HeapSize;

HeapSize=*(INT8U *)ppdata;

opt = opt;

stk = (OS_STK *)ptos+HeapSize+2;

*stk++ = 15;

*stk++ = (INT16U)task & 0xFF;

*stk++ = (INT16U)task 》》 8;

stk = (OS_STK *)ptos+HeapSize+2;

*--stk = (INT16U) (ptos+HeapSize-1) 》》 8;

*--stk = (INT16U) (ptos+HeapSize-1) & 0xFF;

return ((void *)stk);

}

3 可重入函數(shù)

因?yàn)?1系列堆棧空間的限制, KEIL編譯器沒有像大系統(tǒng)那樣使用調(diào)用堆棧。一般C語言調(diào)用過程中,會(huì)把過程的參數(shù)和使用的局部變量入棧。為了提高效率,編譯器沒有提供這種堆棧,而是提供一種壓縮棧,每個(gè)過程被給定一個(gè)空間用于存放局部變量。過程中的每個(gè)變量都放在這個(gè)空間的固定位置,當(dāng)遞歸調(diào)用這個(gè)過程時(shí),會(huì)導(dǎo)致變量被覆蓋。編譯器允許將函數(shù)定義成可重入函數(shù),由reentrant關(guān)鍵字指定,可重入函數(shù)可被單獨(dú)保存。因?yàn)檫@些堆棧是模擬的,可重入函數(shù)一般都比較大,運(yùn)行起來也比較慢。模擬棧不允許傳遞bit類型的變量,也不能定義局部位標(biāo)量。移植中最好是將可能被多個(gè)任務(wù)使用的函數(shù)定義成可重入函數(shù)。

責(zé)任編輯:gt

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 微控制器
    +關(guān)注

    關(guān)注

    48

    文章

    7714

    瀏覽量

    152647
  • 芯片
    +關(guān)注

    關(guān)注

    459

    文章

    51568

    瀏覽量

    429783
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    5210

    瀏覽量

    99126
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于GP32開發(fā)板實(shí)現(xiàn)μC/OS-II內(nèi)核的移植

    80X86CPU移植,相信讀者通信學(xué)習(xí),已經(jīng)對(duì)移植的過程和步驟有了一定的了解。ΜC/OS-II最初是為摩托羅拉68HC11系列單片機(jī)設(shè)計(jì)
    的頭像 發(fā)表于 10-04 17:15 ?3305次閱讀
    基于GP32<b class='flag-5'>開發(fā)板</b><b class='flag-5'>上</b><b class='flag-5'>實(shí)現(xiàn)</b>μ<b class='flag-5'>C</b>/<b class='flag-5'>OS-II</b>內(nèi)核的<b class='flag-5'>移植</b>

    μC/OS-II在SOC芯片C8051F041移植

    C8051F041[6]。因此,本文將首先介紹壓力智能控制的硬件電路,然后針對(duì)硬件電路,將 μC/OS-II移植到單片機(jī)
    發(fā)表于 07-23 07:53

    如何實(shí)現(xiàn)μC/OS-II在AT89C51移植

    μC/OS-II在AT89C51移植實(shí)現(xiàn)過程是怎樣進(jìn)行的?μ
    發(fā)表于 04-27 07:08

    μC/OS-IIC8051F移植怎么進(jìn)行?

    μC/OS-IIC8051F移植怎么進(jìn)行?
    發(fā)表于 04-28 06:38

    如何實(shí)現(xiàn)μC/OS-II系統(tǒng)的移植

    如何實(shí)現(xiàn)μC/OS-II系統(tǒng)的移植
    發(fā)表于 04-28 06:01

    μC/OS-II 在Nios移植

    首先介紹嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS-II 和Nios 嵌入式處理器, 分析μC/OS-II 移植對(duì)目標(biāo)處理器的要求, 重點(diǎn)介紹
    發(fā)表于 03-08 09:31 ?90次下載

    μC/OS-II 實(shí)時(shí)內(nèi)核下的A/D驅(qū)動(dòng)程序設(shè)計(jì)

    詳細(xì)分析在μC/OS-II 實(shí)時(shí)內(nèi)核下驅(qū)功程序讀取A/D 的三種方法;闡述C8051F015 單片機(jī)的A/D 轉(zhuǎn)換器的配置、轉(zhuǎn)換特點(diǎn)及其驅(qū)動(dòng)程序讀取A/D 采用的方法; 針對(duì)C8051F015
    發(fā)表于 04-15 11:01 ?17次下載

    μC OS-II 在Nios 移植1

    首先介紹嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS-II 和Nios 嵌入式處理器, 分析μC/OS-II 移植對(duì)目標(biāo)處理器的要求, 重點(diǎn)介紹μ
    發(fā)表于 05-16 14:32 ?28次下載

    嵌入式μC/OS-II在LPC2104移植及通信設(shè)計(jì)

    分析了μC/OS-II 操作系統(tǒng)的特點(diǎn)及其在嵌入式系統(tǒng)應(yīng)用領(lǐng)域的優(yōu)勢(shì),探討了μC/OS-II 操作系統(tǒng)在LPC2104 處理器
    發(fā)表于 06-19 09:12 ?16次下載

    μC/OS-II 在LPC2210移植實(shí)現(xiàn)

    對(duì)嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS-II 的組成和LPC2210 微處理器進(jìn)行了簡單介紹。在此基礎(chǔ),詳細(xì)介紹了將μC/OS-II
    發(fā)表于 07-08 08:57 ?41次下載

    uC/OS-IIC8051F020 單片機(jī)上的移植

    詳細(xì)介紹了uC/OS-II 的V2.52 版本在C8051F020 單片機(jī)上的移植。相對(duì)V2.51之前的版本,對(duì)中斷任務(wù)切換函數(shù)的移植做了簡化。文章還詳細(xì)解釋了一些和編譯器相關(guān)的基本概
    發(fā)表于 08-15 09:01 ?71次下載

    μC/OS-II在PC機(jī)上移植的設(shè)計(jì)與實(shí)現(xiàn)

    本文介紹了μC/OS-II移植到PC機(jī)上的過程,使μC/OS-II應(yīng)用系統(tǒng)程序在PC機(jī)上脫離DOS或Windows環(huán)境運(yùn)行。著重介紹了Boo
    發(fā)表于 09-02 08:51 ?14次下載

    μC/OS-II在S3C44BOX處理器移植

     摘要:介紹實(shí)時(shí)操作系統(tǒng)μC/OS-II的特點(diǎn)和內(nèi)核結(jié)構(gòu),給出μC/OS-II在Samsung嵌入式S3C44BOX ARM7
    發(fā)表于 03-11 12:39 ?1361次閱讀
    μ<b class='flag-5'>C</b>/<b class='flag-5'>OS-II</b>在S3<b class='flag-5'>C</b>44BOX處理器<b class='flag-5'>上</b>的<b class='flag-5'>移植</b>

    實(shí)時(shí)嵌入式操作系統(tǒng)μCOS-II在MPC555移植

    摘要:介紹了實(shí)時(shí)操作系統(tǒng)μCOS-II的特點(diǎn)和內(nèi)核結(jié)構(gòu),并首次實(shí)現(xiàn)了μC/OS-II在摩托羅拉處理器MPC555
    發(fā)表于 03-11 12:42 ?835次閱讀
    實(shí)時(shí)嵌入式操作系統(tǒng)μ<b class='flag-5'>C</b>/<b class='flag-5'>OS-II</b>在MPC555<b class='flag-5'>上</b>的<b class='flag-5'>移植</b>

    μC/OS-II在EP7312移植

    μC/OS-II在EP7312移植首先介紹μC/OS-II操作系統(tǒng)的特點(diǎn),重點(diǎn)分析μ
    發(fā)表于 06-16 11:24 ?1199次閱讀
    μ<b class='flag-5'>C</b>/<b class='flag-5'>OS-II</b>在EP7312<b class='flag-5'>上</b>的<b class='flag-5'>移植</b>
    主站蜘蛛池模板: 日本中文字幕巨大的乳专区 | 口内射精颜射极品合集 | 美女白虎穴 | 亚洲熟女乱色一区二区三区 | 青青青青青青青草 | 亚洲精品久久久WWW游戏好玩 | 97久久精品人人槡人妻人 | 久久是热频国产在线 | 日本红怡院亚洲红怡院最新 | 秋葵app秋葵官网18在线观看 | 在线不卡中文字幕 | 伊人色综合久久天天网 | 亚洲2017天堂色无码 | 国产福利秒拍weipai.ee | 一道精品视频一区二区 | 插骚妇好爽好骚 | 91免费网站在线看入口黄 | 欧美成人亚洲高清在线观看 | 国产内射AV徐夜夜 | 黄色毛片a| 日本欧美久久久久免费播放网 | 879影视动漫h免费观看 | 中国xxxxx69| 国产私拍福利精品视频 | 男女夜晚在爽视频免费观看 | 日韩中文网 | 国产精品一区第二页 | 菠萝菠萝蜜视频在线看1 | 两个奶被男人揉了一个晚上 | 在线亚洲精品福利网址导航 | 69xx欧美| 国内精品乱码卡一卡2卡三卡 | 久久成人伊人欧洲精品AV | 99精品中文字幕在线观看 | 青青视频 在线 在线播放 | 秋葵app秋葵官网18在线观看 | 久久草香蕉频线观 | 受被三个攻各种道具PLAY | 伊人青青操 | 亚洲视频在线观看网站 | 国产在线观看免费 |