最近項(xiàng)目開發(fā)需要用到ucos,之前有聽說過,但沒用過,之前一直從事的與Linux相關(guān)的開發(fā)工作,基于應(yīng)用的學(xué)習(xí),所以本文偏向于應(yīng)用的認(rèn)知,只具備以下的認(rèn)知即可進(jìn)行開發(fā)啦,OS,其實(shí)都差不多。 ? ?本文只是個(gè)人學(xué)習(xí)ucos的理解,也參考了邵貝貝老師以及其它網(wǎng)
反反復(fù)復(fù)弄了一個(gè)多星期,參考了不少資料,終于讓UCOS在自己的板子上跑起來了。期間遇到了不少問題,還好堅(jiān)持下來,挺 了過去.....復(fù)習(xí)一下,記錄下來,以當(dāng)后用: 1.在ADS中建產(chǎn)工程,進(jìn)入工程界面后,先建立兩個(gè)組,一個(gè)為
1. μC/OS-Ⅱ概述μC/OS-Ⅱ在特定處理器上的移植大部分工作集中在多任務(wù)切換的實(shí)現(xiàn)上,這部分代碼主要用來保存和恢復(fù)處理器的現(xiàn)場(chǎng)。但許多操作如讀/寫寄存器不能用C語言而只能用匯編來實(shí)現(xiàn)。將μC/OS-Ⅱ移植到ARM處理
利用STM32跑UCOS 寫了個(gè)很簡(jiǎn)單的程序,編譯如下Program Size: Code=24562 RO-data=746 RW-data=88 ZI-data=7456以此推算,小于FLASH小于24K RAM小于8K 根本不能考慮STM32的UCOS,只能祼奔,STM32的FLASH到還好滿足些
先說明一下在加電之前的這個(gè)軟硬件情況,這個(gè)三星公司根據(jù)ARM920T軟核生產(chǎn)的這個(gè)s3c2410集成了64M的sdram和64M的nandflash存儲(chǔ)器。Vivi和UCOS都存儲(chǔ)在這個(gè)nandflash中,因?yàn)閚andflash斷電后不會(huì)丟失信息。這個(gè)VIVI是
用戶模式(user模式),運(yùn)行應(yīng)用的普通模式;快速中斷模式(fiq模式),用于支持?jǐn)?shù)據(jù)傳輸或通道處理;中斷模式(irq模式),用于普通中斷處理。超級(jí)用戶模式(svc模式),操作系統(tǒng)的保護(hù)模式?異常中斷模式(abt模式)
基礎(chǔ)知識(shí)里已經(jīng)基本上講解了UCOS要生活的家(即硬件平臺(tái)環(huán)境),還有就是為了讓高級(jí)語言寫的程序能變成在硬件平臺(tái)上直接運(yùn)行的程序,編譯器都干了些什么。還有這個(gè)C語言運(yùn)行的環(huán)境問題,也就是從硬件和匯編語言的角度
閱讀這些內(nèi)容前,希望你對(duì)計(jì)算機(jī)有了一點(diǎn)簡(jiǎn)單的概念,最好學(xué)習(xí)過計(jì)算機(jī)組成原理并知道一些最基本的概念。如果你學(xué)習(xí)過51系列的單片機(jī)并且利用51系列的單片機(jī)做過一些開發(fā),那看這些內(nèi)容就很簡(jiǎn)單了。如果你沒這些知識(shí)
注意:由于編譯器(ads1.2或2.2)對(duì)全局變量初始化為0的不完全支持,有時(shí)必須手動(dòng)初始化為0,切記!??! 一、ucos II移植到ARM9 s3c2410 可從官網(wǎng)下載移植代碼,基本無需改動(dòng)。 在os_cpu_a.s中的函數(shù)UCOS_IRQHand
直接開始說明ucos創(chuàng)建任務(wù)時(shí)的步驟:1, 初始化任務(wù)堆棧2, 初始化任務(wù)控制塊3, 把剛創(chuàng)建的任務(wù)設(shè)置為就緒態(tài)(即置位就緒表)上面提到的任務(wù)堆棧,控制塊,就緒表我們前面已經(jīng)說過了,下面就直接看代碼。INT8U OSTa
4. uCOS配置uCOS是可裁減實(shí)時(shí)操作系統(tǒng),可以根據(jù)實(shí)際的應(yīng)用對(duì)內(nèi)核未使用到的功能進(jìn)行裁減,以進(jìn)一步節(jié)省系統(tǒng)寶貴的硬件資源,通??捎玫膗COS-II內(nèi)核代碼在6K~26K,這在uCOS-II配置文件os_cfg.h中進(jìn)行配置,這個(gè)配置文
以u(píng)cos為例,做詳細(xì)說明。Ucos分為任務(wù)級(jí)任務(wù)切換和中斷級(jí)任務(wù)切換。Ucos整個(gè)用戶程序和操作系統(tǒng)程序都運(yùn)行在一個(gè)模式下(SVC模式)。所以在不用切換芯片運(yùn)行模式的情況下就可以做任務(wù)級(jí)任務(wù)切換。任務(wù)級(jí)進(jìn)程切換原因
下面要講解的內(nèi)容基本上都是c語言編寫的了,還有一部分代碼是用匯編寫的。以下我就以這個(gè)系統(tǒng)移植的實(shí)驗(yàn)源碼為例做詳細(xì)講解。講解的方式是根據(jù)程序執(zhí)行的順序進(jìn)行,如果感覺有什么難理解的地方,會(huì)做一個(gè)宏觀講解和分
我們知道C語言是一種高級(jí)語言,所謂高級(jí)語言就是要經(jīng)過翻譯才能在具體平臺(tái)上運(yùn)行的程序。而編譯程序是一種比較繁瑣的程序,它要把高級(jí)語言編譯和鏈接后,成為能夠在具體平臺(tái)運(yùn)行的程序。這其中有很多知識(shí)是和操作系統(tǒng)
我在學(xué)習(xí)嵌入式操作系統(tǒng)UCOS時(shí),有很大的迷茫之處,在于我不知道我用的工具到底幫我干了些神馬工作。下面就說一下我當(dāng)時(shí)的疑問:1:編譯器和鏈接器干了些神馬?我現(xiàn)在也還沒能力知道它是怎么干的這些工作。以后慢慢來
操作系統(tǒng)是用來管理系統(tǒng)硬件、軟件及數(shù)據(jù)資源,控制程序運(yùn)行,并為其它應(yīng)用軟件提供支持的一種系統(tǒng)軟件。根據(jù)不同的種類,又可分為實(shí)時(shí)操作系統(tǒng)、桌面操作系統(tǒng)、服務(wù)器操作系統(tǒng)等。對(duì)于一些小型的應(yīng)用,對(duì)系統(tǒng)實(shí)時(shí)性
uCOS II移植跟OS_CUP_C.C、OS_CPU_A.S、OS_CPU.H 3個(gè)文件有關(guān),中斷處理的移植占據(jù)了很大一部分內(nèi)容。作為移植的一個(gè)重點(diǎn),本文以標(biāo)準(zhǔn)中斷(IRQ)為例討論了移植中的中斷處理。
堆棧作用的就是用來保存局部變量,從實(shí)質(zhì)上講也就是將CPU寄存器的值保存到RAM中。在uCOS中,每一個(gè)任務(wù)都有一個(gè)獨(dú)立的任務(wù)堆棧。為了深入理解任務(wù)堆棧的作用,不妨分析任務(wù)從“出生”到“消亡”的整個(gè)過程,具體就是分析任務(wù)的建立,運(yùn)行,掛起幾種狀態(tài)中任務(wù)堆棧的變化情況。