浓毛老太交欧美老妇热爱乱,蜜臀性色av免费,妺妺窝人体色www看美女,久久久久久久久久久大尺度免费视频,麻豆人妻无码性色av专区

位置:51電子網(wǎng) » 技術(shù)資料 » 其它綜合

在MC68HC908GP32上移植μC/OS-II

發(fā)布時(shí)間:2007/8/28 0:00:00 訪問(wèn)次數(shù):975

在前幾講中,介紹了μC/OS-II的概念、工作機(jī)制,還介紹了μC/OS-II在Intel 80X86CPU上的移植,相信讀者通信學(xué)習(xí),已經(jīng)對(duì)移植的過(guò)程和步驟有了一定的了解。ΜC/OS-II最初是為摩托羅拉68HC11系列單片機(jī)設(shè)計(jì)的。68HC11系列單片機(jī)有外部總線,可以外接RAM和ROM;而沒(méi)有外部總線8位MCU。由于RAM容量的限制,移植就存在一定的困難;但對(duì)于有些8位的MCU,將μC/OS-II移植到MOTOROLA MC68H908GP32(以下簡(jiǎn)稱(chēng)GP32)上。

一、在GP32上移植μC/OS-11的主要問(wèn)題

在第(4)講中,介紹過(guò)要移植μC/OS-11,目標(biāo)處理必須滿足以下要求:

(1)處理器的C編譯器能產(chǎn)生可重入代碼;

(2)用C語(yǔ)言就可以打開(kāi)和關(guān)閉中斷;

(3)處理器支持中斷,并且能產(chǎn)生定時(shí)中斷(通常在10~100Hz之間);

(4)處理器支持足夠的RAM,保存全局變量和作為多任務(wù)環(huán)境下的任務(wù)堆棧。

(5)處理器有將堆棧指針和其他CPU寄存器讀出和存儲(chǔ)到堆棧或內(nèi)存中的指令。

編譯后的μC/OS-II的內(nèi)核大約有6~10KB;如果只保留最核心的代碼,則最小可壓縮到2KB。RAM的占用與系統(tǒng)中的任務(wù)數(shù)有關(guān),任務(wù)堆棧要占用大量的RAM空間,堆棧的大小取決于任務(wù)的局部變量、緩沖區(qū)大小及可能的中斷嵌套的層數(shù)。所以,所要移植的系統(tǒng)中必須有足夠的RAM資源。而像MOTOROLA6805系列的8位MCU,由于RAM資源太小且堆棧指針是固定的,不能滿足上面的第(4)條和第(5)條要求,所以μC/OS-II不能在這類(lèi)處理器上運(yùn)行。

GP32是68HC08家庭的成員,具有512字節(jié)的片內(nèi)RAM,32K字節(jié)的片內(nèi)Flash,8MHz總線時(shí)鐘。內(nèi)部寄存器包括1個(gè)8位累加器A,1個(gè)16位索引寄存器X,1個(gè)16位堆棧指針寄存器SP,1個(gè)16位程序指針寄存器PC及1個(gè)8位標(biāo)志寄存器CCR。與6805系列MCU相比,68HC08系列MCU的堆棧指針為16位,可以自由尋址。這就滿足了移植條件(5),且可以使用C編譯器生成代碼。GP32的用戶手冊(cè)可以在摩托羅拉公司的主頁(yè)上下載,http://www.motorola.com。

在GP32上移植μC/OS-II的主要困難還是RAM資源太少。為了移植成功,必須采取措施減少RAM的用量,包括限制系統(tǒng)中的任務(wù)數(shù)量、仔細(xì)修改μC/OS-II內(nèi)核、去掉不使用的部分、限制任務(wù)的斷嵌套層數(shù)、在任務(wù)中盡量減少使用局部變量等等。在采取了上述措施后,可將RAM用量減少到最低。但需要提醒的是,為了節(jié)省堆棧空間而采用的限制中斷嵌套層數(shù)的方法將影響系統(tǒng)的實(shí)時(shí)性能。所以,在GP32上移植μC/OS-II更多的是一種演示,能更好地說(shuō)明μC/OS-II內(nèi)核的可裁剪性和靈活性。

在本講中將介紹一個(gè)移植實(shí)例。為了減少RAM用量,在本例中只運(yùn)行了2個(gè)用戶任務(wù)。盡量減池一內(nèi)核中不必要的模塊(包括由箱、消息隊(duì)列、內(nèi)存管理等),去掉了任務(wù)掛起、喚醒和刪除等擴(kuò)展功能,但仍然支持任務(wù)的創(chuàng)建和管理,也保留了信號(hào)量模塊來(lái)用來(lái)任務(wù)間的通訊。

二、工具和運(yùn)行環(huán)境

要實(shí)現(xiàn)μC/OS-II向GP32的移植,需要一個(gè)面向MC68HC08的C編譯器。筆者使用的是HIWARE公司的C編譯器。移植過(guò)程同樣適用于MC68HC08家庭的其他成員。

三、移植中所需修改的文件

首先是編寫(xiě)整個(gè)項(xiàng)目的公共頭文件include.h,這個(gè)文件定義使用內(nèi)核中的哪些模塊。Include.h會(huì)被所有的C源程序引用。還要修改和CPU相關(guān)的三個(gè)文件,分別是頭文件OS_CPU08.H、匯編代碼文件OS_CPU08.ASM和C代碼文件OS_CPU08.C。

1.include.h文件

include.h是主頭文件,在所有后綴名為.C的文件的開(kāi)始都包含include.h文件。文件中可以?xún)?nèi)核進(jìn)行裁剪。在本例中定義如下:

#define OS_MAX_EVENTS 2 /*共用了2個(gè)信號(hào)量*/

#define OS_MAX_MEM_PART 0 /*不使用內(nèi)存塊功能*/

#define OS_MAX_QS 0 /*不使用消息隊(duì)列功能*/

#define OS_MAX_TASKS 3 /*共有3個(gè)任務(wù)(包括空閑任務(wù))*/

#define OS_LOWEST_PRIO 20 /*定義最低優(yōu)先級(jí)20*/

在前幾講中,介紹了μC/OS-II的概念、工作機(jī)制,還介紹了μC/OS-II在Intel 80X86CPU上的移植,相信讀者通信學(xué)習(xí),已經(jīng)對(duì)移植的過(guò)程和步驟有了一定的了解。ΜC/OS-II最初是為摩托羅拉68HC11系列單片機(jī)設(shè)計(jì)的。68HC11系列單片機(jī)有外部總線,可以外接RAM和ROM;而沒(méi)有外部總線8位MCU。由于RAM容量的限制,移植就存在一定的困難;但對(duì)于有些8位的MCU,將μC/OS-II移植到MOTOROLA MC68H908GP32(以下簡(jiǎn)稱(chēng)GP32)上。

一、在GP32上移植μC/OS-11的主要問(wèn)題

在第(4)講中,介紹過(guò)要移植μC/OS-11,目標(biāo)處理必須滿足以下要求:

(1)處理器的C編譯器能產(chǎn)生可重入代碼;

(2)用C語(yǔ)言就可以打開(kāi)和關(guān)閉中斷;

(3)處理器支持中斷,并且能產(chǎn)生定時(shí)中斷(通常在10~100Hz之間);

(4)處理器支持足夠的RAM,保存全局變量和作為多任務(wù)環(huán)境下的任務(wù)堆棧。

(5)處理器有將堆棧指針和其他CPU寄存器讀出和存儲(chǔ)到堆棧或內(nèi)存中的指令。

編譯后的μC/OS-II的內(nèi)核大約有6~10KB;如果只保留最核心的代碼,則最小可壓縮到2KB。RAM的占用與系統(tǒng)中的任務(wù)數(shù)有關(guān),任務(wù)堆棧要占用大量的RAM空間,堆棧的大小取決于任務(wù)的局部變量、緩沖區(qū)大小及可能的中斷嵌套的層數(shù)。所以,所要移植的系統(tǒng)中必須有足夠的RAM資源。而像MOTOROLA6805系列的8位MCU,由于RAM資源太小且堆棧指針是固定的,不能滿足上面的第(4)條和第(5)條要求,所以μC/OS-II不能在這類(lèi)處理器上運(yùn)行。

GP32是68HC08家庭的成員,具有512字節(jié)的片內(nèi)RAM,32K字節(jié)的片內(nèi)Flash,8MHz總線時(shí)鐘。內(nèi)部寄存器包括1個(gè)8位累加器A,1個(gè)16位索引寄存器X,1個(gè)16位堆棧指針寄存器SP,1個(gè)16位程序指針寄存器PC及1個(gè)8位標(biāo)志寄存器CCR。與6805系列MCU相比,68HC08系列MCU的堆棧指針為16位,可以自由尋址。這就滿足了移植條件(5),且可以使用C編譯器生成代碼。GP32的用戶手冊(cè)可以在摩托羅拉公司的主頁(yè)上下載,http://www.motorola.com。

在GP32上移植μC/OS-II的主要困難還是RAM資源太少。為了移植成功,必須采取措施減少RAM的用量,包括限制系統(tǒng)中的任務(wù)數(shù)量、仔細(xì)修改μC/OS-II內(nèi)核、去掉不使用的部分、限制任務(wù)的斷嵌套層數(shù)、在任務(wù)中盡量減少使用局部變量等等。在采取了上述措施后,可將RAM用量減少到最低。但需要提醒的是,為了節(jié)省堆?臻g而采用的限制中斷嵌套層數(shù)的方法將影響系統(tǒng)的實(shí)時(shí)性能。所以,在GP32上移植μC/OS-II更多的是一種演示,能更好地說(shuō)明μC/OS-II內(nèi)核的可裁剪性和靈活性。

在本講中將介紹一個(gè)移植實(shí)例。為了減少RAM用量,在本例中只運(yùn)行了2個(gè)用戶任務(wù)。盡量減池一內(nèi)核中不必要的模塊(包括由箱、消息隊(duì)列、內(nèi)存管理等),去掉了任務(wù)掛起、喚醒和刪除等擴(kuò)展功能,但仍然支持任務(wù)的創(chuàng)建和管理,也保留了信號(hào)量模塊來(lái)用來(lái)任務(wù)間的通訊。

二、工具和運(yùn)行環(huán)境

要實(shí)現(xiàn)μC/OS-II向GP32的移植,需要一個(gè)面向MC68HC08的C編譯器。筆者使用的是HIWARE公司的C編譯器。移植過(guò)程同樣適用于MC68HC08家庭的其他成員。

三、移植中所需修改的文件

首先是編寫(xiě)整個(gè)項(xiàng)目的公共頭文件include.h,這個(gè)文件定義使用內(nèi)核中的哪些模塊。Include.h會(huì)被所有的C源程序引用。還要修改和CPU相關(guān)的三個(gè)文件,分別是頭文件OS_CPU08.H、匯編代碼文件OS_CPU08.ASM和C代碼文件OS_CPU08.C。

1.include.h文件

include.h是主頭文件,在所有后綴名為.C的文件的開(kāi)始都包含include.h文件。文件中可以?xún)?nèi)核進(jìn)行裁剪。在本例中定義如下:

#define OS_MAX_EVENTS 2 /*共用了2個(gè)信號(hào)量*/

#define OS_MAX_MEM_PART 0 /*不使用內(nèi)存塊功能*/

#define OS_MAX_QS 0 /*不使用消息隊(duì)列功能*/

#define OS_MAX_TASKS 3 /*共有3個(gè)任務(wù)(包括空閑任務(wù))*/

#define OS_LOWEST_PRIO 20 /*定義最低優(yōu)先級(jí)20*/

-->
相關(guān)IC型號(hào)

熱門(mén)點(diǎn)擊

 

推薦技術(shù)資料

羅盤(pán)誤差及補(bǔ)償
    造成羅盤(pán)誤差的主要因素有傳感器誤差、其他磁材料干擾等。... [詳細(xì)]
版權(quán)所有:51dzw.COM
深圳服務(wù)熱線:13751165337  13692101218
粵ICP備09112631號(hào)-6(miitbeian.gov.cn)
公網(wǎng)安備44030402000607
深圳市碧威特網(wǎng)絡(luò)技術(shù)有限公司
付款方式


 復(fù)制成功!