娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年04月01日(星期二)

2018年04月01日 | 基于MSP430單片機的M430/OS對系統的意義解析

發布者:SereneSunset 來源: eefocus關鍵字:MSP430  單片機 手機看文章 掃描二維碼
隨時隨地手機看文章

    1 在MSP430上使用RTOS的意義

    一般的觀點認為,MSP430上使用RTOS是沒有意義的這是可以理解的。因為MSP430的硬件資源有限(以MSP430F149為例,只有2KB RAM),任何商業操作系統都不可能移植到MSP430上。目前在MSP430上得到應用的RTOS,只有μC/OS-II,但使用μC/OS-II 必須有昂貴的C編譯器,這嚴重地限制了其在MSP430上的使用。


    正是基于以上情況,筆者在應用MSP430過程中,編寫了一個基于MSP430F149的RTOS,暫定名為M430/OS。它占用RAM量少、代碼短小,稍加改動就可適用于大多數其它MSP430單片機

    在MSP430單片機系統上使用M430/OS,對系統有以下意義:

    ① 實現軟件設計的模塊化。可將不同的功能模塊編制成相應的任務,由操作系統按級別調用,不必為先執行哪個功能、后執行哪個功能而費神。

    ② 能更合理、有效地利用CPU有限的資源。按任務的重要程度安排任務的級別,能夠保證最重要的任務得以最及時執行。

    ③ 大大降低系統故障率。低優先級的任務發生阻塞時,高優先級任務的執行不受影響。

    2 M430/OS在MSP430F149上的實現

    2.1 M430/OS功能特點

    M430/OS有以下特點:

    ① 采用占先式內核,即高優先級的任務可以從低優先級任務“搶”回CPU控制權;

    ② 每個任務都單獨開辟一個任務棧;

    ③ 每個任務占十幾到幾百字節的任務堆棧,任務棧的大小可以根據任務中現場數據、局部變量和嵌套調用的情況估算;

    ④ 每個任務各分配一個優先級,不支持兩個任務有相同的優先級;

    ⑤ 不支持信號量、郵箱功能;

    ⑥ 任務狀態只有三種:運行(executing)、就緒(ready)、掛起(suspended);

    ⑦ 系統占用RAM量=((任務個數+1)×4)+6字節,不包括任務堆棧;

    ⑧ 代碼量少,目前版本的代碼共有86行匯編代碼,256字節目標代碼;

    ⑨ 理論上最多支持126個任務;

    ⑩ 任務鎖定功能:在一段低優先級的代碼中,不想讓操作系統把CPU權切換到別的任務,這時可以把這代碼鎖定,在運行這段代碼時,就不會引起任務切換;

    任務喚醒功能:在一個任務中產生一個的事件來觸發其它任務運行(如果被觸發的任務優先級高的話,就會馬上運行)。

    2.2 系統函數介紹

    ① OS_Init:多任務初始化,進行任務棧(任務棧的結構見圖1)、任務延時計數、任務狀態的初始化。初始化完成后,系統直接切換到最高優先級的任務,多任務系統啟動。

    ② OS_Time_Dly:把當前任務掛起一段指定時間讓其它任務運行。

    ③ OS_Sched:任務調度,它先把每個任務的延時數減1,然后再找出最高優先級的就緒任務,并切換到這個就緒任務。如果無就緒任務,就切換到空閑任務。

    ④ OS_Free_Task:空閑任務,是一個很重要的系統任務,當所有任務都掛起時,運行此任務。它主要是對一個計數器Free_Count一直進行累加,用戶可以根據這個計數器計算出CPU的利用率。

    ⑤ OS_Task_LOCk:鎖定任務調度,禁止任務調度。主要用來鎖定在低優先級中的一些可重入的代碼或一些重要代碼。

    ⑥ OS_Task_Unlock:解鎖任務調度,和上面的子程序功能相反。

    ⑦ OS_Task_Wakeup:喚醒指定優先級的任務,并產生一次任務調度,如果被喚醒任務的優先級比當前運行的任務的優先級高,任務就會切換到被喚醒的任務中,否則等待下一個調度時機。


    2.3 主要功能的實現

    (1)任務初始化

    系統加電運行后,首先對硬件資源進行初始化,接著就要對多任務進行初始化了。主要是初始化每個任務的任務棧、每個任務的時鐘滴答數和堆棧指針位置。我們把每個任務棧都初始化成圖1形式。

    任務棧的初始化如下程序(r11是用來初始任務堆棧的一個指針,r10是一個循環計數器):

 

    mov.w #(棧底 + 2) , r11

    clr.w Task_TICk(r10) ;清0時鐘滴答數

    mov.w #任務首地址 , 0(r11) ;把任務地址壓入堆棧

    mov.w SR , -2(r11) ;把標志寄存器放入任務棧

    mov.w r11 , Task_SP(r10)

    sub.w #現場所占的字節數 , Task_SP(r10) ;SP位置放

    ;入堆棧

    初始化完任務棧之后,就把堆棧指針指向最高任務優先級任務棧的任務首地址處,再執行ret返回。這樣,多任務就啟動開了,程序如下:

    mov.w #09feh , sp ;最高優先級的任務棧任務首地

    ;址位置

    ret ;返回到最高優先級的任務

    任務初始化的流程如圖2所示。

    (2)時鐘節拍

    時鐘節拍由MSP430F149的TimerA產生。TimerA工作于上升模式,CCR0中是TimerA計數最大值。TimerA初始化代碼如下:

    bis.w #(TASSEL1+TACLR+MC_1),&TACTL

    mov.w 2(sp),&CCR0 ;計數最大值,此值決定時鐘節拍

    bis.w #CCIE,&CCTL0

    (3)任務調度

    應用程序調用OS_init進行初始化后,直接切換到最高優先級的任務。

    每個任務在運行一個循環后執行OS_ Time_Dly掛起。這是通過把該任務的延時數填到該任務的Task_ Tick中,然后再執行任務調度程序實現。

    任務調度就是在定時中斷時對所有任務的Task_ Tick減1,然后再按優先級高低的順序查找Task_Tick減到0的任務,并直接跳到任務切換程序。

    下面是任務切換程序(r10的內容是就緒任務的標志,由調度程序找出):

    pushALL ;把當前任務現場入棧

    mov.b Now_Task,r11 ;當前任務標志放r11

    mov.w sp,Task_SP(r11) ;保存當前任務堆棧指針

    mov.b r10,Now_Task ;就緒任務標志變為當前任務標志

    mov.w Task_SP(r10),sp ;就緒任務的任務棧指針放入SP

    ;此時再進行堆棧操作就是對就緒任務的任務棧操作了。

    popALL ;把就緒任務的現場出棧

    reti ;中斷返回,返回到就緒任務


    任務調度的調度時機有兩種:一種是在任務掛起時,一種是定時中斷。任務掛起時的任務調度一定會引起任務切換,定時中斷就不一定引起任務切換了。因為,如果就緒任務是當前正在運行的任務時不會引起切換。正是如此,任務調度是RTOS中執行得最頻繁的一個功能,也是最重要的一個功能,所以必須盡量縮減其代碼量,盡量用可靠的調度算法來減少任務調度所占的時間。這個子程序的流程如圖3所示。


    (4)任務鎖和其它功能的實現

    任務的加鎖與解鎖,是為了使一些在低優先級任務的不可重入代碼,或對實時性要求較高的I/O操作在執行中不產生任務切換。這項功能是通過設置一個標志位實現的。當調度程序檢查到任務被鎖定時,就算有就緒任務也必須等開鎖之后才能切換。

    如果系統突然產生一個事件要某個掛起的任務來處理,可以在事件產生的程序中調用任務喚醒。它的原理是把Task_TICk清0,然后執行一次任務調度。如果這個任務優先級較高,就直接切換到這個任務里執行。

    3 總 結

    M430/OS已在筆者開發的基于MSP430F149的系統上應用,運行穩定可靠。該操作系統稍加改動,就可應用于其它MSP430單片機。當然,它的功能還是很有限的,也可能還存在一些尚未暴露的問題;但無論如何,它向我們證明,在MSP430單片機系統中使用RTOS是完全可能的。


關鍵字:MSP430  單片機 引用地址:基于MSP430單片機的M430/OS對系統的意義解析

上一篇:基于 SPCE061A單片機采集語音信號的設計與實現
下一篇:單片機的應用詳解

推薦閱讀

區塊鏈:太棒了!這是多么巨大的一個突破啊!用不了多久,幾乎所有的東西都會以區塊鏈技術作為基礎。如果你認可上述說法,那我恐怕得讓你失望了。?本文將討論用于比特幣加密的區塊鏈技術版本。當然,還有一些其他的實現方式,它們或許已經解決了“經典區塊鏈”的一些缺陷,但一般情況下,他們都是圍繞一致的原則建立的。關于比特幣的整體情況?我個人認為...
國內熱像市場有三大熱像品牌,機緣巧合都以“F”打頭 -- FOTRIC、FLUKE(福祿克),FLIR(菲力爾)。作為拔尖的熱像品牌,它們曾先后榮獲世界大獎:FLUKE(福祿克)獲得美國EC&M 2016年度產品獎,FLIR(菲力爾)獲得2018德國紅點獎最佳設計獎,FOTRIC榮膺2019德國iF國際設計大獎。 FOTRIC X云熱像榮獲2019德國iF國際設計大獎 iF設計獎自1953年創立以...
Vishay Intertechnology, Inc.宣布,推出新型工業級和汽車級5050外形尺寸器件——IHLE-5050FH-51 和IHLE-5050FH-5A,擴充IHLEa系列超薄、大電流電感器,其集成式電場屏蔽可減小EMI。Vishay Dale IHLE-5050FH-51 和IHLE-5050FH-5A不需要添加額外的電場屏蔽措施,從而降低成本,節省電路板空間。日前發布的電感器采用銅鍍錫集成式屏蔽罩遏制EMI產生的電...
谷歌近日公布了其對自定義計算的愿景,并透露他們計劃采用“片上系統”基礎架構來取代傳統主板作為關鍵集成點。 到目前為止,谷歌一直依賴于傳統的主板來集成其計算基礎設施的各種組件,包括中央處理器、網卡、存儲設備、自定義加速器和內存。但隨著計算達到拐點,谷歌的系統基礎設施副總裁阿米特·瓦達特(Amit Vahdat)在一篇博客文章中表示,需要嘗試新...

史海拾趣

問答坊 | AI 解惑

快開學了。。。祝各位論壇水友高人新年愉快,工作順利,生活愉快,合家幸福

新的一年了,新的征程,祝賀大家新年愉快,工作順利,生活愉快,合家幸福…

查看全部問答∨

【討論】FPGA技術的學習和就業

一。自我情況說明 上研究生。實驗室是搞嵌入式計算技術的。目前主要研究是設計一個多核并行處理器。使用FPGA來進行驗證。 我也打算投入FPGA的方向。并為之努力。 下學期就開始,打算先從VHDL和ISE環境學起(我們實驗室用的是XILINX)。 二。 ...…

查看全部問答∨

低成本、小尺寸的脈搏血氧儀方案

血紅蛋白是血細胞的重要組成部分,它負責將氧氣從肺部輸送到身體的其它組織。血紅蛋白在任一時刻所含的氧氣量被稱為血氧飽和度(即SpO2)。 血氧飽和度是反映人體呼吸功能及氧含量是否正常的重要生理參數,它是顯示我們人體各組織是否健康的一個重要 ...…

查看全部問答∨

新手問問題。。望各位大俠花一兩分鐘幫小弟解答一下。。

各位大俠好。。小弟是新手。。想問一下用1602還有一塊51單片機做一個電子鐘。。都要用到什么東西。。望能詳細點解答。。最好能細到連電子元器件都說明。。而且最好能有個大概的制作步驟。。。小弟在此謝過了。。…

查看全部問答∨

數據采集開的問題

我用的是PCL-812pg的卡,里面PT_EnableEvent 的count搞不清,請問下,count是指多 少個中斷發中斷事件給用戶,那么這個count的大小是否必須小于buffer的一半,否則b uffer都滿了,還沒發中斷事件給用戶,checkevent也檢測不到,是不是這個意思 ...…

查看全部問答∨

買ARM9,送單片機開發板!

飛凌嵌入式’全新ARM9學習套件,功能強大的OK2440-IV開發板僅售598元!另加36元獲贈一塊單片機學習板,希望能幫助大家從零開始學習嵌入式高端技術! http://www.helloarm.com/Samsung/48.htm…

查看全部問答∨

在PB中編譯好的dll不能加載成功

寫了一個簡單的按鍵驅動(流驅動),加入2440的bsp創建的工程中,修改了cfw.c,armint.c中的中斷設置,注冊表也改了(在bib文件中加入dll的話報警告說多次進入dll,所以就去掉了bib文件中的,警告也沒了。),但是驅動就是不能用,一條打印信息都沒 ...…

查看全部問答∨

請教:做嵌入式系統,這兩個公司哪個好一些。

做嵌入式系統,這兩個公司哪個好一些。 周立功 http://www.zlgmcu.com/help/renlizhiyuan.asp 廣哈通信 http://www.ghtchina.com…

查看全部問答∨

用STLINK燒錄STM8S103F3芯片有百分之幾工作不正常!

                                 用STLINK燒錄STM8S103F3芯片有百分之幾工作不正常,有些功能正常,有些功能不正常!重燒后正常,不知道是怎么回事 ...…

查看全部問答∨

TL494及其在半橋變換開關電源中的應用

TL494是美國德克薩斯州儀器公司生產的一種性能優良的電壓驅動型脈寬調制器件, 可作為單端式、推挽式、全橋式、半橋式開關電源控制器, 被廣泛應用于開關電源中,是開關電源的核心控制器件。TL494的輸出三極管可接成共發射極及射極跟隨種方式, 因而可 ...…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 永和县| 博野县| 伊金霍洛旗| 内丘县| 襄垣县| 晋中市| 辛集市| 峨眉山市| 永城市| 霍州市| 宁城县| 玉屏| 东兴市| 遂昌县| 石阡县| 杭锦后旗| 江城| 重庆市| 丹凤县| 图片| 宣恩县| 崇义县| 安康市| 盐城市| 紫金县| 瑞昌市| 色达县| 民乐县| 庐江县| 凭祥市| 渭南市| 焉耆| 府谷县| 灯塔市| 孟州市| 叶城县| 阿鲁科尔沁旗| 德昌县| 弋阳县| 韶关市| 剑阁县|