當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀] 在系統(tǒng)越來越復(fù)雜,功能越來越強(qiáng)大的今天,嵌入式系統(tǒng)的設(shè)計(jì)中采用實(shí)時(shí)多任務(wù)操作系統(tǒng)已經(jīng)成為嵌入式應(yīng)用設(shè)計(jì)的主流。μCOS-II是一個(gè)開源嵌入式實(shí)時(shí)操作系統(tǒng)(Real Time Operating System, RTOS),它已

在系統(tǒng)越來越復(fù)雜,功能越來越強(qiáng)大的今天,嵌入式系統(tǒng)的設(shè)計(jì)中采用實(shí)時(shí)多任務(wù)操作系統(tǒng)已經(jīng)成為嵌入式應(yīng)用設(shè)計(jì)的主流。μCOS-II是一個(gè)開源嵌入式實(shí)時(shí)操作系統(tǒng)(Real Time Operating System, RTOS),它已經(jīng)被成功移植到各種CPU上。但是基于μCOS-II的應(yīng)用軟件需要在移植操作系統(tǒng)后自行完成。模塊化的應(yīng)用程序設(shè)計(jì)可以使得嵌入式設(shè)計(jì)變得更加方便,產(chǎn)品的開發(fā)更加迅速。S3C44B0是三星公司生產(chǎn)的一種ARM7芯片,性能強(qiáng)大,在通用嵌入式設(shè)計(jì)中運(yùn)用廣泛。CAN總線(Control Area Network)是一種有效支持分布式控制和實(shí)時(shí)控制的現(xiàn)場(chǎng)總線,由于其高性能和高可靠性,CAN總線的應(yīng)用范圍廣布過程工業(yè)、機(jī)器人和機(jī)械工業(yè)等領(lǐng)域。論文將μCOS-II移植到S3C44B0上,設(shè)計(jì)開發(fā)了基于μCOS-II的CAN通訊模塊,與傳統(tǒng)的前后臺(tái)形式的系統(tǒng)相比較,CAN總線在μCOS- II下運(yùn)行,實(shí)時(shí)性更容易得到保證,更容易進(jìn)行功能擴(kuò)展。

1 S3C44BO簡(jiǎn)介

S3C44B0是三星公司設(shè)計(jì)的16/32位RISC處理器,為手持設(shè)備等提供一個(gè)低成本高性能的方案。S3C44B0提供2.5V ARM7TDMI內(nèi)核,最高時(shí)鐘頻率66MHz,總線尋址空間達(dá)到256M,采用中斷矢量表來減少中斷延遲,提供30個(gè)中斷源,支持C語言編程和多任務(wù)處理,具有豐富的片內(nèi)資源:LCD控制器、2路UART、2路DMA、外部存儲(chǔ)器控制器、5路帶PWM輸出的定時(shí)器、看門狗、RTC、8路10bit ADC、IIC接口、IIS接口、SIO等等。

2 SJA1000和82C250簡(jiǎn)介

SJA1000是一種獨(dú)立CAN控制器,它是PHILIPS公司的PCA82C200 CAN控制器的替代產(chǎn)品。SJA1000具有BasiCCAN和PeliCAN兩種工作方式,PeliCAN工作方式支持具有很多新特性的CAN2.0B 協(xié)議。SJA1000同時(shí)支持11位和29位識(shí)別碼,位速率最快可達(dá)1Mbits/s,時(shí)鐘頻率最高為24MHz,支持PeliCAN模式的擴(kuò)展功能,如支持一些錯(cuò)誤分析功能,支持系統(tǒng)診斷、系統(tǒng)維護(hù)、系統(tǒng)優(yōu)化等。

82C250是PHILIPS公司生產(chǎn)的CAN總線收發(fā)器,提供對(duì)總線的差動(dòng)發(fā)送和差動(dòng)接收功能,另外還具有電流限制電路,提供了對(duì)總線的進(jìn)一步保護(hù)功能。

3μCOS-II在S3C44B0上的移植

μCOS-II (micro-controller OS II)是一種開放式的操作系統(tǒng)內(nèi)核,它是專為微控制器系統(tǒng)和軟件開發(fā)而設(shè)計(jì)的占先式的實(shí)時(shí)多任務(wù)操作系統(tǒng)微內(nèi)核。μCOS-II是一個(gè)源碼公開、可移植、可固化、可剪裁、具可剝奪性、可確定性的實(shí)時(shí)多任務(wù)操作系統(tǒng)。它的絕大部分代碼是用ANSI C語言編寫的,只有和處理器相關(guān)的不到200行代碼是用匯編語言編寫,因此可移植性很好,比較容易移植到各種體系的CPU上面。本文中將μCOS-II移植到S3C44B0上面運(yùn)行,該移植工作主要是三個(gè)文件的修改工作:

改頭文件OS_CPU.H相關(guān)內(nèi)容,包括:數(shù)據(jù)類型定義、堆棧增長(zhǎng)方向、中斷相關(guān)的一些宏定義等。

在OS_CPU_C.C中編寫任務(wù)堆棧初始化函數(shù)及系統(tǒng)HOOK函數(shù)。

在OS_CPU_A.ASM中編寫四個(gè)匯編語言函數(shù):OSSstartHighRdy()、OSCtxSw()、OSINTCtxSw()和OSTickISR()。

完成上述工作后,μCOS-II就可以運(yùn)行在S3C44B0處理器上了。

4 CAN總線智能節(jié)點(diǎn)的軟硬件結(jié)構(gòu)

CAN總線是現(xiàn)場(chǎng)總線的一種,它結(jié)構(gòu)簡(jiǎn)單,通信方式靈活,采用非破壞性仲裁技術(shù),通信采用短幀格式,從而可以形成低成本,高性能,實(shí)時(shí)性好的通訊系統(tǒng)。

4.1 CAN總線智能節(jié)點(diǎn)的硬件結(jié)構(gòu)

用S3C44B0和SJA1000來實(shí)現(xiàn)CAN總線節(jié)點(diǎn)時(shí),SJA1000采用地址數(shù)據(jù)復(fù)用的數(shù)據(jù)傳輸方式,而S3C44B0卻采用分開的地址總線與數(shù)據(jù)總線,因此,不能像51系列單片機(jī)和SJA-1000那樣直接相連,而必須另想辦法。將發(fā)送的地址和數(shù)據(jù)都從數(shù)據(jù)總線上發(fā)出,而用IO口和 nGCSx, nOE, nWE等信號(hào)來形成ALE信號(hào)和讀、寫、片選信號(hào)接到SJA1000,這樣就可以完成S3C44B0和SJA1000的連接,在硬件上形成CAN總線節(jié)點(diǎn),同時(shí)為了保證信號(hào)不互相干擾,采用光耦6N137來進(jìn)行隔離。另外,S3C44B0的3.3V信號(hào)和SJA1000的5V信號(hào)之間需要進(jìn)行電平轉(zhuǎn)換。

4.2 CAN總線智能節(jié)點(diǎn)的軟件結(jié)構(gòu)

采用BasicCAN模式,RX和TX緩沖器各是10個(gè)字節(jié)長(zhǎng),其中兩個(gè)ID字節(jié)和最多8個(gè)數(shù)據(jù)字節(jié)。其中ID字節(jié)1是8個(gè)ID位,ID字節(jié)2是3 個(gè)ID位,1個(gè)遠(yuǎn)程發(fā)送請(qǐng)求位和4個(gè)數(shù)據(jù)長(zhǎng)度代碼位。11位的ID能夠建立2032種報(bào)文類型,足夠普通應(yīng)用的需求。ID位的規(guī)定可根據(jù)實(shí)際需要自行定義。

發(fā)送報(bào)文時(shí)調(diào)用CAN發(fā)送函數(shù)U8 BCAN_DATA_WRITE(U8 *SendDataBuf),其中*SendDataBuf指向要發(fā)的內(nèi)容。在這個(gè)函數(shù)里,將報(bào)文內(nèi)容按CAN接受緩沖器規(guī)定的格式填入,然后調(diào)用命令函數(shù)U8 BCAN_CMD_PRG(U8 cmd),其中cmd參數(shù)決定命令類型,選用發(fā)送數(shù)據(jù)命令將報(bào)文發(fā)送出去。

接收?qǐng)?bào)文時(shí)調(diào)用CAN接收函數(shù)U8 BCAN_DATA_RECEIVE(U8 *RcvDataBuf),其中*RcvDataBuf是報(bào)文的存儲(chǔ)地址。在這個(gè)函數(shù)里,讀取接收緩沖區(qū)里的數(shù)據(jù),并存到指定的位置。

這兩個(gè)函數(shù)只是發(fā)送與接收函數(shù),具體的發(fā)送和接收需要建立相應(yīng)的任務(wù)或中斷,并調(diào)用這兩個(gè)函數(shù)來完成。其中發(fā)送采用主動(dòng)方式,當(dāng)發(fā)送任務(wù)接到啟動(dòng)發(fā)送的指令后調(diào)用CAN發(fā)送函數(shù)進(jìn)行數(shù)據(jù)發(fā)送,接收采用中斷方式,CAN中斷的優(yōu)先級(jí)高于時(shí)鐘中斷和其他任務(wù)。

節(jié)點(diǎn)通信流程圖如圖2所示:

5 基于μCOS-II的CAN總線通訊程序模塊的設(shè)計(jì)

傳統(tǒng)的前后臺(tái)方式設(shè)計(jì)的單片機(jī)程序是一個(gè)無限循環(huán),循環(huán)中調(diào)用相應(yīng)函數(shù)來完成相應(yīng)操作是其后臺(tái)行為,而中斷服務(wù)程序處



理異步事件是其前臺(tái)行為。μCOS-II是一個(gè)實(shí)時(shí)多任務(wù)操作系統(tǒng),是一個(gè)基于占先式內(nèi)核的多任務(wù)調(diào)度平臺(tái)。作為一個(gè)模塊的CAN總線程序,在嵌入 μCOS-II之中,相對(duì)于前后臺(tái)方式而言,CPU的運(yùn)行時(shí)間被μCOS-II依據(jù)調(diào)度算法按照不同的優(yōu)先級(jí)分配給不同的任務(wù)模塊,各個(gè)任務(wù)程序在自己的運(yùn)行時(shí)間內(nèi)訪問CPU,這樣CAN總線的實(shí)時(shí)性更容易得到保證,同時(shí)各任務(wù)相對(duì)獨(dú)立,相互影響小,也便于對(duì)程序的調(diào)試,更重要的是如果要實(shí)現(xiàn)更為復(fù)雜的通訊協(xié)議時(shí)不用改變?cè)械某绦蚪Y(jié)構(gòu),只需增加擴(kuò)展部分的程序就可以進(jìn)行功能擴(kuò)展。

本文中CAN總線如上所述采用主動(dòng)方式發(fā)送和采用中斷方式接收數(shù)據(jù),CAN中斷優(yōu)先級(jí)高于其他任務(wù)的優(yōu)先級(jí)。本文中數(shù)據(jù)發(fā)送建立一個(gè)獨(dú)立任務(wù),它擁有自己的堆??臻g,可以被其他的任務(wù)和中斷服務(wù)子程序掛起或刪除。這個(gè)任務(wù)分配128個(gè)OS_STK的堆??臻g,在μCOS-II中OS_STK被定義為一個(gè)字長(zhǎng)。

系統(tǒng)建立了兩個(gè)任務(wù)(不包括統(tǒng)計(jì)和空閑任務(wù)):起始任務(wù)Main_Task和發(fā)送任務(wù)CANSENDDATA_Task,優(yōu)先級(jí)分別為10,12。在CAN控制器初始化和OS初始化后,建立起始任務(wù)Main_Task,OS開始運(yùn)行,進(jìn)入起始任務(wù)Main_Task,起始任務(wù)啟動(dòng)時(shí)間節(jié)拍,并創(chuàng)建發(fā)送任務(wù),然后進(jìn)入掛起。發(fā)送任務(wù)進(jìn)入運(yùn)行態(tài),當(dāng)發(fā)送數(shù)據(jù)完成后,發(fā)送任務(wù)掛起。


兩個(gè)任務(wù)在各自的延時(shí)結(jié)束后按照優(yōu)先級(jí)先后進(jìn)入運(yùn)行態(tài),若都在掛起狀態(tài)則系統(tǒng)的空閑任務(wù)進(jìn)入運(yùn)行。此過程中如果有接收中斷發(fā)生,則中斷服務(wù)將掛起正在運(yùn)行的任務(wù),并調(diào)用CAN數(shù)據(jù)接收函數(shù),完成數(shù)據(jù)的接收,當(dāng)此過程結(jié)束后恢復(fù)現(xiàn)場(chǎng),繼續(xù)進(jìn)行高優(yōu)先級(jí)的任務(wù)。圖3是CAN通信模塊在μCOS-II中運(yùn)行的系統(tǒng)結(jié)構(gòu)框圖:

本文利用上述思想所設(shè)計(jì)的CAN總線智能節(jié)點(diǎn)與ZLG USBCAN-1型CAN總線開發(fā)設(shè)備互相通信正常,從圖4可以看到數(shù)據(jù)接收和發(fā)送的順利進(jìn)行。

結(jié)束語

在S3C44B0上運(yùn)行的μCOS-II中實(shí)現(xiàn)CAN總線智能節(jié)點(diǎn),能夠克服傳統(tǒng)前后臺(tái)編程方法的弊端,并且提供模塊化、可移植性好、高實(shí)時(shí)性、易擴(kuò)展的通信模塊,能夠大大減少產(chǎn)品的開發(fā)時(shí)間。

本文作者創(chuàng)新點(diǎn):

一: 建立了S3C44B0和SJA1000的連接,使這兩種常用芯片得以配合使用。

二: 建立起基于S3C44B0和μCOS-II的CAN總線智能節(jié)點(diǎn)模塊,為以后在μCOS-II操作系統(tǒng)中的CAN總線應(yīng)用打下了基礎(chǔ)。

參考文獻(xiàn)
[1] 鄔寬明. CAN總線原理與應(yīng)用系統(tǒng)設(shè)計(jì)[M]. 北京航空航天大學(xué)出版社. 1996.
[2] Jean J. Labrosse 著. 邵貝貝等譯. μCOS-II嵌入式實(shí)時(shí)操作系統(tǒng)[M]. 北京航空航天大學(xué)出版社. 2003.
[3] 黃元峰,李育清,姜生元.基于μC/OS的嵌入式系統(tǒng)應(yīng)用開發(fā)研究[J].微計(jì)算機(jī)信息(嵌入式與SOC),2006年第22卷第2-2期:100-102。


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

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

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

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(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)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

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

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

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

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

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

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

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

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

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

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

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