當(dāng)前位置:首頁 > 電源 > 數(shù)字電源
[導(dǎo)讀]文中對軟件設(shè)計(jì)應(yīng)用中遇到的關(guān)鍵問題作了深入討論并給出了相應(yīng)的解決方案。

隨著嵌入式系統(tǒng)開發(fā)的普及和深入,在更加復(fù)雜的應(yīng)用中傳統(tǒng)軟件開發(fā)手段難以滿足需求,嵌入式操作系統(tǒng)在開發(fā)中扮演著越來越重要的角色,已經(jīng)被廣泛應(yīng)用于手機(jī)、移動(dòng)計(jì)算機(jī)設(shè)備、網(wǎng)絡(luò)設(shè)備和工控仿真等領(lǐng)域。嵌入式操作系統(tǒng)μC/OS-II源碼是公開的,而且它是可移植、可固化、可裁減及可剝奪型的多任務(wù)實(shí)時(shí)內(nèi)核,可用于各類8位、16位和32位單片機(jī)和DSP,目前得到廣泛應(yīng)用。本文給出一種數(shù)字微波設(shè)備監(jiān)控系統(tǒng)的設(shè)計(jì),該系統(tǒng)引入μC/OS-II之后,系統(tǒng)的開發(fā)效率得到提高,整個(gè)系統(tǒng)的健壯性得到增強(qiáng),文中對軟件設(shè)計(jì)應(yīng)用中遇到的關(guān)鍵問題作了深入討論并給出了相應(yīng)的解決方案。  

1 數(shù)字微波設(shè)備監(jiān)控系統(tǒng)的設(shè)計(jì)  

    微波通信是一種利用微波傳輸信息的通信手段,數(shù)字微波采用數(shù)字信號(hào)處理技術(shù),利用微波信道傳輸數(shù)字信號(hào),以下給出一種數(shù)字微波通信系統(tǒng)中監(jiān)控系統(tǒng)的設(shè)計(jì)。由兩個(gè)端站組成一條微波鏈路,每個(gè)端站含一個(gè)室內(nèi)單元IDU(In-Door Unit)、一個(gè)室外單元ODU(Out-Door Unit)、連接室內(nèi)單元和室外單元的同軸電纜、以及微波天線。本文主要討論IDU監(jiān)控部分CPU相關(guān)內(nèi)容的軟硬件設(shè)計(jì)。  

1.1 微波監(jiān)控IDU部分硬件設(shè)計(jì)  

    IDU組成框圖如圖1所示,主要由業(yè)務(wù)接口、輔助業(yè)務(wù)、復(fù)分接、微波幀分復(fù)接、中頻調(diào)制解調(diào)、中頻分合路器、電源、CPU及相關(guān)接口組成。  

    主業(yè)務(wù)數(shù)據(jù)通過業(yè)務(wù)接口電路復(fù)接后,與公務(wù)、輔助數(shù)據(jù)信號(hào)等一起進(jìn)入微波幀復(fù)接模塊,復(fù)接成微波幀信號(hào),由調(diào)制模塊完成調(diào)制,通過中頻分合路器送往ODU。從ODU送來的中頻信號(hào)經(jīng)過中頻分合路器送往解調(diào)模塊解調(diào)出數(shù)據(jù),送到微波幀分接電路,分接出主業(yè)務(wù)、公務(wù)以及輔助數(shù)據(jù)信息,通過主業(yè)務(wù)接口電路分接出各支路主業(yè)務(wù)數(shù)據(jù)。CPU對所傳輸?shù)臉I(yè)務(wù)數(shù)據(jù)進(jìn)行監(jiān)視和控制,監(jiān)視所傳數(shù)據(jù)的狀態(tài)、性能等信息,可設(shè)置所傳數(shù)據(jù)的各種參數(shù),通過輔助業(yè)務(wù)接口可提取和插入各種控制信息。  

    CPU采用PHILIPS公司的32位ARM芯片LPC2214,該芯片接口豐富,硬件設(shè)計(jì)時(shí)CPU相關(guān)接口完成功能如下:輸入接口提供按鍵設(shè)置掃描電路,輸出接口通過液晶、告警燈及蜂鳴器輸出信息,通過I2C接口CPU可實(shí)現(xiàn)對串行E2PROM、時(shí)鐘芯片的存取,CPU本身提供SPI接口,通過該接口實(shí)現(xiàn)本端與遠(yuǎn)端控制信息的交換。串行接口提供一種監(jiān)控手段,可實(shí)現(xiàn)CPU與PC機(jī)的通信,完成狀態(tài)讀取和各種命令的設(shè)置,以太網(wǎng)接口通過擴(kuò)展以太網(wǎng)接口芯片實(shí)現(xiàn),通過以太網(wǎng)接口建立與網(wǎng)管中心的通信,可實(shí)現(xiàn)網(wǎng)絡(luò)化的管理。OOK(On/Off—Keying)調(diào)制解調(diào)電路完成IDU與ODU之間的通信,通過該電路,IDU可對ODU進(jìn)行設(shè)置發(fā)功率、收發(fā)頻率、監(jiān)視ODU的工作狀態(tài)等。  

1.2 軟件結(jié)構(gòu)  

    軟件總體分為應(yīng)用程序和μC/OS-II兩部分,應(yīng)用程序是用戶代碼部分,采用C語言編寫,完成對整個(gè)系統(tǒng)的監(jiān)控;μC/OS-II為一種嵌入式多任務(wù)實(shí)時(shí)操作系統(tǒng),其大部分程序使用C語言編寫,還有一小部分和處理器密切相關(guān)的代碼使用匯編語言編寫,μC/OS-II包括了三部分,即μC/OS-II核心代碼、配置代碼和移植代碼。  

    其中,核心代碼:包括10個(gè)C程序文件和一個(gè)頭文件,主要實(shí)現(xiàn)了系統(tǒng)調(diào)度、任務(wù)管理、內(nèi)存管理、信號(hào)量、消息郵箱和消息隊(duì)列等系統(tǒng)功能,而這些功能的實(shí)現(xiàn)與處理器類型無關(guān)。  

    配置代碼:包括2個(gè)頭文件,用于裁剪和配置μC/OS-II,這部分代碼根據(jù)用戶的實(shí)際需求來配置μC/OS-II系統(tǒng)。  

    移植代碼:這部分主要包括1個(gè)匯編文件、1個(gè)C程序文件和一個(gè)頭文件,這部分根據(jù)具體的處理器移植μC/OS-II系統(tǒng)的需要修改,它和處理器關(guān)系密切。  

2 μC/OS-II在微波監(jiān)控系統(tǒng)中的應(yīng)用  

2.1 應(yīng)用程序中任務(wù)的設(shè)計(jì)與劃分  

    根據(jù)實(shí)際的需要,應(yīng)用軟件劃分為7個(gè)任務(wù):液晶顯示、按鍵接收和告警、時(shí)間標(biāo)志處理、遠(yuǎn)端信息處理、數(shù)據(jù)處理、串口任務(wù)處理,如圖2所示。


  
圖2 應(yīng)用程序中任務(wù)的劃分  

(1) Task_LCD_OP:主要是處理菜單的顯示,根據(jù)不同的菜單顯示設(shè)備的相關(guān)信息,并且完成將設(shè)置數(shù)據(jù)保存到公共變量中。  

(2) Task_KEY:主要完成外部按鍵信號(hào)的掃描,按照不同的按鍵轉(zhuǎn)換為不同的編碼,并把其值保存到公共變量中。  

(3) Task_TIME_FLG:實(shí)現(xiàn)設(shè)置時(shí)間標(biāo)志,以使其它任務(wù)完成定時(shí)任務(wù),因?yàn)橛性S多的定時(shí)任務(wù),所以設(shè)立了一個(gè)單獨(dú)的任務(wù)來設(shè)置或取消時(shí)間標(biāo)志。  [!--empirenews.page--]

(4) Task_SPI_OP:通過SPI接口完成遠(yuǎn)端信息交換處理以及數(shù)據(jù)鏈路各接口環(huán)回等設(shè)置。  

(5) Task_DATA_OP:主要完成網(wǎng)絡(luò)數(shù)據(jù)管理、AD轉(zhuǎn)換、公務(wù)的控制,控制微波接口、時(shí)鐘芯片的設(shè)置和讀取,完成誤碼率的計(jì)算以及對串行E2PEOM存儲(chǔ)芯片數(shù)據(jù)的存取。  

(6) Task_COMM1:主要是完成出串口與其它設(shè)備間通信數(shù)據(jù)的收發(fā)。  

(7) Task_ODUCOMM0:主要是IDU和ODU設(shè)備的通信。  

2.2 任務(wù)的創(chuàng)建  

    經(jīng)過分析和設(shè)計(jì)之后,就可以使用μC/OS- II所提供的函數(shù)創(chuàng)建任務(wù),這里給出了如何創(chuàng)建液晶顯示任務(wù)的實(shí)例,其它任務(wù)的創(chuàng)建與之類似,其過程如下:  

OSTaskCreate (Task_LCD_OP,(void *)0, &LCDopreate[TaskStkLengh - 1],8);  

    Task_LCD_OP是要?jiǎng)?chuàng)建的任務(wù);(void *)0是傳遞給任務(wù)的參數(shù),因?yàn)檫@里所創(chuàng)建的任務(wù)沒有參數(shù),所以其值為0;&LCDopreate[TaskStkLengh - 1]是分配給任務(wù)的堆棧,這在程序中是事先定義好的,最后一個(gè)數(shù)字8是分配給該任務(wù)的優(yōu)先級。  

2.4 任務(wù)優(yōu)先級的劃分  

    為了使整個(gè)系統(tǒng)的實(shí)時(shí)性能夠得到滿足,所以要以任務(wù)的緊迫性、關(guān)鍵性、頻繁性和中斷的重要性等為依據(jù),對不同的任務(wù)安排不同優(yōu)先級別。在系統(tǒng)優(yōu)先級的分配上,μC/OS-II系統(tǒng)級保留了0和1,用戶程序任務(wù)優(yōu)先級從2開始,最低優(yōu)先級定義為12。  

    在該監(jiān)控系統(tǒng)中,任務(wù)不同,對實(shí)時(shí)性要求也不同,通過定時(shí)任務(wù)來控制。定時(shí)任務(wù)劃分為20ms到5s多個(gè)時(shí)間級別,在同一個(gè)任務(wù)中可以再定時(shí)地處理一些事務(wù)。其中,單獨(dú)設(shè)置了一個(gè)任務(wù)Task_TIME_FLG來處理這些時(shí)間等級的劃分和管理,由于它的運(yùn)行涉及到其它任務(wù)的時(shí)間標(biāo)志,是一個(gè)關(guān)鍵任務(wù),所以必須將其運(yùn)行優(yōu)先級設(shè)置為用戶程序的最高級別。系統(tǒng)中除了對設(shè)備進(jìn)行設(shè)置外,其余時(shí)間主要通過串行接口進(jìn)行信息交互,也是較為重要和緊迫的,這一工作由串口1來承擔(dān),所以在設(shè)置Task_COMM1的優(yōu)先級次之;其次是Task_ODUCOMM0;Task_DATA_OP數(shù)據(jù)操作任務(wù)對實(shí)時(shí)性要求不高,級別隨之降低;Task_SPI_OP任務(wù)因其數(shù)據(jù)量小,故不是緊迫任務(wù);Task_KEY按鍵任務(wù)、Task_LCD_OP液晶顯示是實(shí)現(xiàn)人機(jī)交互的,所以實(shí)時(shí)性要求也比較低。  

    從以上分析可以把任務(wù)的優(yōu)先級進(jìn)行如下分配:Task_TIME_FLG為2,Task_COMM1為3,Task_ODUCOMM0為4,Task_DATA_OP為5,Task_SPI_OP為6,Task_KEY為7,Task_LCD_OP為8。  

2.5 任務(wù)的調(diào)度  

    μC/OS-II調(diào)度的依據(jù)是任務(wù)就緒隊(duì)列表,系統(tǒng)從處于就緒隊(duì)列的任務(wù)中選擇一個(gè)優(yōu)先級最高的來運(yùn)行,它可以管理多達(dá)64個(gè)任務(wù)。對于多任務(wù)的管理,μC/OS- II 是通過調(diào)度器完成。其中任務(wù)級的調(diào)度是由函數(shù)OSSched()完成, 而中斷級的調(diào)度是由函數(shù)OSIntExiT()完成。  

    本系統(tǒng)的任務(wù)中,Task_TIME_FLG時(shí)間標(biāo)志處理任務(wù)優(yōu)先級最高,運(yùn)行也最頻繁,它和其它任務(wù)切換是屬于普通的任務(wù)切換,而Task_COMM1和Task_ODUCOMM0的任務(wù)切換是屬于中斷級的切換,只有在發(fā)生中斷時(shí)才切換,正常運(yùn)行時(shí)和普通任務(wù)的切換方式一樣。其余任務(wù)的切換都作為普通切換方式處理。在任務(wù)切換過程中如果當(dāng)前任務(wù)需要延時(shí)判斷,為保證其它任務(wù)的正常運(yùn)行,可通過調(diào)用函數(shù)OSTimeDly(2)掛起當(dāng)前任務(wù),其中鍵顯部分有三級菜單,每一級菜單又有許多選項(xiàng),為了提高按鍵掃描的實(shí)時(shí)性,在進(jìn)入每一級菜單后必須調(diào)用該函數(shù)掛起當(dāng)前任務(wù),并掃描有無按鍵,如有則執(zhí)行對應(yīng)處理程序,沒有按鍵則把自己掛起,直到有按鍵方可退出。μC/OS-II如此處理,程序不會(huì)死等,按鍵和菜單顯示配合很協(xié)調(diào),只要有按鍵就能得到及時(shí)處理。  

2.6 中斷的設(shè)置與使用  

    在ARM7體系的CPU中,最多可以有32個(gè)中斷源。對每個(gè)具體的中斷源,可以將其定義為快速FIQ中斷,使其具有最高的優(yōu)先級;也可以定義為向量IRQ中斷,使其具有中等優(yōu)先級,但向量IRQ的總數(shù)不能超過16個(gè)。μC/OS-II本身使用一個(gè)定時(shí)中斷源作為系統(tǒng)節(jié)拍中斷。  

    μC/OS-II響應(yīng)中斷的過程:當(dāng)系統(tǒng)接收到中斷請求后,并且CPU處于中斷開放狀態(tài),系統(tǒng)就會(huì)終止當(dāng)前運(yùn)行的任務(wù),按照中斷向量的指向運(yùn)行中斷服務(wù)子程序;當(dāng)中斷運(yùn)行結(jié)束后,系統(tǒng)就會(huì)返回到被中止的任務(wù)繼續(xù)運(yùn)行,或者轉(zhuǎn)向運(yùn)行另一個(gè)更高優(yōu)先級的就緒任務(wù)。  

    本系統(tǒng)中使用了兩個(gè)定時(shí)中斷源、兩個(gè)串口中斷源、一個(gè)I2C中斷源。μC/OS-II中斷的設(shè)置和初始化由target.c中的TargetInit函數(shù)完成,通過該函數(shù)實(shí)現(xiàn)了串口、I2C和定時(shí)中斷的初始化設(shè)置。其中VICInit實(shí)現(xiàn)過程如下,將中斷服務(wù)子程序的地址寫到相應(yīng)的中斷向量寄存器(VICVectAddrx),并從相應(yīng)的中斷向量控制寄存器(VICVectCntlx)選中相應(yīng)的中斷,將其啟用。當(dāng)CPU接收到中斷請求就能找到對應(yīng)中斷服務(wù)程序的地址,并轉(zhuǎn)到中斷服務(wù)程序去運(yùn)行。  

2.7 堆棧的設(shè)置與使用  

    堆棧是依據(jù)“后進(jìn)先出(LIFO)”原則組織的連續(xù)存儲(chǔ)空間。為滿足任務(wù)切換、響應(yīng)中斷以及存儲(chǔ)任務(wù)私有數(shù)據(jù)的需要,每個(gè)任務(wù)都配有自己的堆棧。  

    由于LPC2214的片內(nèi)Flash是256KB,片內(nèi)RAM是16KB,根據(jù)需要CPU沒有擴(kuò)展外部閃存,故要求代碼精練,RAM分配一定要合理。尤其是在液晶顯示任務(wù)中,由于顯示的菜單項(xiàng)目較多,因此任務(wù)之間切換增加了RAM的需求。如果每個(gè)任務(wù)堆棧開辟過小,任務(wù)切換時(shí)就會(huì)出現(xiàn)私有數(shù)據(jù)丟失,堆棧溢出直至程序運(yùn)行出錯(cuò);反之堆棧設(shè)置過大,就會(huì)使內(nèi)存RAM空間緊張,因此設(shè)置堆??臻g必須適中。本系統(tǒng)中開始設(shè)置顯示任務(wù)堆棧大小為64個(gè)字,調(diào)試運(yùn)行中發(fā)現(xiàn)進(jìn)入多級菜單時(shí)會(huì)出現(xiàn)程序死鎖的現(xiàn)象,擴(kuò)大對應(yīng)任務(wù)堆棧空間問題就得到解決。  

3 軟件的調(diào)試環(huán)境與下載  

    該系統(tǒng)需要建立ADS1.2集成仿真環(huán)境,使用了廣州周立功單片機(jī)發(fā)展有限公司提供的專用工程模板。如果硬件沒有擴(kuò)展外部存儲(chǔ)器,就使用LPC2100的工程模板;否則使用LPC2200的工程模板。在調(diào)試過程中選用DebugInFLASH模式燒寫調(diào)試;軟硬件調(diào)試完成,可選用RelInFlash模式燒寫,后一種燒寫方式會(huì)加密芯片,使之無法二次燒寫;如果加密之后需要重新燒寫芯片,就必須使用ISP進(jìn)行解密之后方可燒寫,調(diào)試程序時(shí)一定要注意這點(diǎn)。  

4 結(jié)束語  

    μC/OS-II應(yīng)用于數(shù)字微波監(jiān)控系統(tǒng)軟件開發(fā)之后,系統(tǒng)的軟件結(jié)構(gòu)更加簡潔實(shí)用,系統(tǒng)的實(shí)時(shí)性和穩(wěn)定性得到提高,設(shè)備在實(shí)際應(yīng)用中表現(xiàn)穩(wěn)定可靠,并取得一定的經(jīng)濟(jì)效益,μC/OS-II在嵌入式系統(tǒng)中具有廣泛的應(yīng)用推廣價(jià)值。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉