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

位置:51電子網(wǎng) » 技術(shù)資料 » 測試測量

μC/OS-Ⅱ在ATmega128上的移植St

發(fā)布時間:2008/5/27 0:00:00 訪問次數(shù):678

        

    

    

    本文詳細介紹了把μc/os-ⅱ移植到atmel公司的8位微控制器atmega128上的全過程。所謂移植,就是使一個實時內(nèi)核能在

    某個微處理器或微控制器上運行。在移植之前,希望讀者能熟悉所用微處理器和c編譯器的特點。

    1 atmega128的內(nèi)核特點

    之所以要先介紹atmega128 mcu內(nèi)核特點,是因為在μc/os-ⅱ的移植過程中,仍需要用戶用c語言和匯編語言編寫一些與微

    處理器相關(guān)的代碼。這里主要介紹atmega128與μc/os-ⅱ移植相關(guān)的內(nèi)核特點。如果讀者已經(jīng)對atmega128 比較了解了,

    那就不必閱讀這一部分了。

    1.1微控制器 (mcu)

    atmega128的mcu包括一個算術(shù)邏輯單元(alu),一個狀態(tài)寄存器(sreg),一個通用工作寄存器組和一個堆棧指針。狀態(tài)

    寄存器(sreg)的最高位i是全局中斷允許位。如果全局中斷允許位為零,則所有中斷

    都被禁止。當系統(tǒng)響應(yīng)一個中斷后,i位將由硬件自動清“0”;當執(zhí)行中斷返回(reti)指令時,i位由硬件自動置“1”

    ,從而允許系統(tǒng)再次響應(yīng)下一個中斷請求。

    通用工作寄存器組是由32個8位的通用工作寄存器組成。其中r26~r31這6個寄存器還可以兩兩合并為3個16位的間接

    地址寄存器。這些寄存器可以用來對數(shù)據(jù)存儲空間進行間接尋址。這3個間接地址寄存器的名稱為:x寄存器、y寄存器、z

    寄存器。其中z寄存器還能用作對程序存儲空間進行間接尋址的寄存器。有些avr c語言編譯器還把y寄存器作為軟件堆棧的

    堆棧指針,比如icc- avr,codevisionavr。

    堆棧指針(sp)是一個指示堆棧頂部地址的16位寄存器。在iccavr中,它被用作指向硬件堆棧的堆棧指針。avr單片

    機上電復(fù)位后,sp指針的初始值為0x0000,由于avr單片機的堆棧是向下生長的(從高地址向低地址生長),所以系統(tǒng)程序

    一開始必須對堆棧指針sp進行初始化,即將sp的值設(shè)為數(shù)據(jù)存儲空間的最高地址。iccavr編譯器在鏈接c程序文件的時

    候,會自動在程序頭鏈入startup文件。startup文件里面的程序?qū)プ龀跏蓟痵p指針的工作。鏈入startup文件是iccavr

    這個編譯器的特點,在用其它編譯器的時候,希望讀者確認所使用的編譯器是否帶有自動初始化sp的功能,若沒有,應(yīng)在

    用戶程序中初始化sp。

    1.2 數(shù)據(jù)存儲空間(僅內(nèi)部)

    avr單片機的數(shù)據(jù)存儲器是線形的,從低地址到高地址依次是cpu寄存器區(qū)(32個通用寄存器),i/o寄存器區(qū),數(shù)據(jù)存儲區(qū)

    。

    iccavr編譯器又將數(shù)據(jù)存儲區(qū)劃分為全局變量和字符串區(qū),軟件堆棧區(qū)和硬件堆棧區(qū)三個空間。如下圖:

    高地址

    硬件堆棧區(qū)

    軟件堆棧區(qū)

    全局變量和字符串區(qū)

    i/o寄存器區(qū)

    cpu寄存器區(qū)

    低地址

    iccavr編譯器將堆棧分成了兩個功能不同的堆棧來處理(這一點與8051系列的單片機編譯器處理方式不同)。硬件堆

    棧用于儲存子程序和中斷服務(wù)子程序調(diào)用時的函數(shù)返回地址。這塊數(shù)據(jù)區(qū)域由堆棧指針sp進行尋址,數(shù)據(jù)的進棧和出棧有

    專門的匯編指令(pop,push等)支持,所以叫做硬件堆棧區(qū)。軟件堆棧用于傳遞參數(shù),儲存臨時變量和局部變量。這塊數(shù)

    據(jù)區(qū)域是用軟件模擬堆棧儲存數(shù)據(jù)的方式進行數(shù)據(jù)存儲,對該區(qū)域?qū)ぶ返闹羔樣捎脩糇约憾x,所以叫做軟件堆棧區(qū)。

    avr單片機的硬件堆棧的生長方向是向下的(從高地址向低地址生長),所以軟件堆棧在定義的時候,也采取相同的

    生長方向。

    這里沒有用atmega128而采用avr單片機的提法是因為atmega128屬于avr系列單片機中的一種,而所有的avr單片機的

    數(shù)據(jù)存儲器組織方式都是一致的。在創(chuàng)建μc/os-ⅱ的任務(wù)棧時,需要了解所用微處理器數(shù)據(jù)存儲空間尤其是堆?臻g的組

&

        

    

    

    本文詳細介紹了把μc/os-ⅱ移植到atmel公司的8位微控制器atmega128上的全過程。所謂移植,就是使一個實時內(nèi)核能在

    某個微處理器或微控制器上運行。在移植之前,希望讀者能熟悉所用微處理器和c編譯器的特點。

    1 atmega128的內(nèi)核特點

    之所以要先介紹atmega128 mcu內(nèi)核特點,是因為在μc/os-ⅱ的移植過程中,仍需要用戶用c語言和匯編語言編寫一些與微

    處理器相關(guān)的代碼。這里主要介紹atmega128與μc/os-ⅱ移植相關(guān)的內(nèi)核特點。如果讀者已經(jīng)對atmega128 比較了解了,

    那就不必閱讀這一部分了。

    1.1微控制器 (mcu)

    atmega128的mcu包括一個算術(shù)邏輯單元(alu),一個狀態(tài)寄存器(sreg),一個通用工作寄存器組和一個堆棧指針。狀態(tài)

    寄存器(sreg)的最高位i是全局中斷允許位。如果全局中斷允許位為零,則所有中斷

    都被禁止。當系統(tǒng)響應(yīng)一個中斷后,i位將由硬件自動清“0”;當執(zhí)行中斷返回(reti)指令時,i位由硬件自動置“1”

    ,從而允許系統(tǒng)再次響應(yīng)下一個中斷請求。

    通用工作寄存器組是由32個8位的通用工作寄存器組成。其中r26~r31這6個寄存器還可以兩兩合并為3個16位的間接

    地址寄存器。這些寄存器可以用來對數(shù)據(jù)存儲空間進行間接尋址。這3個間接地址寄存器的名稱為:x寄存器、y寄存器、z

    寄存器。其中z寄存器還能用作對程序存儲空間進行間接尋址的寄存器。有些avr c語言編譯器還把y寄存器作為軟件堆棧的

    堆棧指針,比如icc- avr,codevisionavr。

    堆棧指針(sp)是一個指示堆棧頂部地址的16位寄存器。在iccavr中,它被用作指向硬件堆棧的堆棧指針。avr單片

    機上電復(fù)位后,sp指針的初始值為0x0000,由于avr單片機的堆棧是向下生長的(從高地址向低地址生長),所以系統(tǒng)程序

    一開始必須對堆棧指針sp進行初始化,即將sp的值設(shè)為數(shù)據(jù)存儲空間的最高地址。iccavr編譯器在鏈接c程序文件的時

    候,會自動在程序頭鏈入startup文件。startup文件里面的程序?qū)プ龀跏蓟痵p指針的工作。鏈入startup文件是iccavr

    這個編譯器的特點,在用其它編譯器的時候,希望讀者確認所使用的編譯器是否帶有自動初始化sp的功能,若沒有,應(yīng)在

    用戶程序中初始化sp。

    1.2 數(shù)據(jù)存儲空間(僅內(nèi)部)

    avr單片機的數(shù)據(jù)存儲器是線形的,從低地址到高地址依次是cpu寄存器區(qū)(32個通用寄存器),i/o寄存器區(qū),數(shù)據(jù)存儲區(qū)

    。

    iccavr編譯器又將數(shù)據(jù)存儲區(qū)劃分為全局變量和字符串區(qū),軟件堆棧區(qū)和硬件堆棧區(qū)三個空間。如下圖:

    高地址

    硬件堆棧區(qū)

    軟件堆棧區(qū)

    全局變量和字符串區(qū)

    i/o寄存器區(qū)

    cpu寄存器區(qū)

    低地址

    iccavr編譯器將堆棧分成了兩個功能不同的堆棧來處理(這一點與8051系列的單片機編譯器處理方式不同)。硬件堆

    棧用于儲存子程序和中斷服務(wù)子程序調(diào)用時的函數(shù)返回地址。這塊數(shù)據(jù)區(qū)域由堆棧指針sp進行尋址,數(shù)據(jù)的進棧和出棧有

    專門的匯編指令(pop,push等)支持,所以叫做硬件堆棧區(qū)。軟件堆棧用于傳遞參數(shù),儲存臨時變量和局部變量。這塊數(shù)

    據(jù)區(qū)域是用軟件模擬堆棧儲存數(shù)據(jù)的方式進行數(shù)據(jù)存儲,對該區(qū)域?qū)ぶ返闹羔樣捎脩糇约憾x,所以叫做軟件堆棧區(qū)。

    avr單片機的硬件堆棧的生長方向是向下的(從高地址向低地址生長),所以軟件堆棧在定義的時候,也采取相同的

    生長方向。

    這里沒有用atmega128而采用avr單片機的提法是因為atmega128屬于avr系列單片機中的一種,而所有的avr單片機的

    數(shù)據(jù)存儲器組織方式都是一致的。在創(chuàng)建μc/os-ⅱ的任務(wù)棧時,需要了解所用微處理器數(shù)據(jù)存儲空間尤其是堆?臻g的組

&

相關(guān)IC型號

熱門點擊

 

推薦技術(shù)資料

音頻變壓器DIY
    筆者在本刊今年第六期上著重介紹了“四夾三”音頻變壓器的... [詳細]
版權(quán)所有:51dzw.COM
深圳服務(wù)熱線:13751165337  13692101218
粵ICP備09112631號-6(miitbeian.gov.cn)
公網(wǎng)安備44030402000607
深圳市碧威特網(wǎng)絡(luò)技術(shù)有限公司
付款方式


 復(fù)制成功!