国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

基于Lonworks總線(xiàn)的嵌入式智能節(jié)點(diǎn)的設(shè)計(jì)

發(fā)布時(shí)間:2010-8-7 14:34    發(fā)布者:lavida
1 前言  

LonWorks現(xiàn)場(chǎng)總線(xiàn)是美國(guó)Echelon公司推出的局部操作網(wǎng)絡(luò),它具有統(tǒng)一性、開(kāi)放性、互操作性及支持多種通信介質(zhì)等優(yōu)良性能,是當(dāng)今最流行的現(xiàn)場(chǎng)總線(xiàn)之一。但是由于LonWorks控制節(jié)點(diǎn)的核心神經(jīng)元芯片(Neuron Chip)的應(yīng)用處理能力相對(duì)較弱,因而對(duì)于復(fù)雜的應(yīng)用常使用主從處理器結(jié)構(gòu),主處理器完成用戶(hù)的應(yīng)用功能,而把Neuron芯片作為通信協(xié)處理器。由于可以提高了節(jié)點(diǎn)的處理能力,節(jié)省資金和開(kāi)發(fā)時(shí)間,因此,具有多功能的通用嵌入式主處理器具有很好的應(yīng)用前景。本文采用的MSP430F149主處理器是TI公司基具有較高的集成度的芯片,簡(jiǎn)化了應(yīng)用系統(tǒng)的硬件設(shè)計(jì),適合作為多用途智能節(jié)點(diǎn)。  

2 ShortStack的介紹和實(shí)現(xiàn)  

2.1 ShortStack的結(jié)構(gòu)  

ShortStack微服務(wù)器是Echelon公司提供的一套開(kāi)發(fā)包,其結(jié)構(gòu)圖如下:  

  
圖1 ShortStack結(jié)構(gòu)圖  

由圖可看到,主處理器與ShortStack 微服務(wù)器通信通過(guò)ShortStack API函數(shù)來(lái)實(shí)現(xiàn),通常使用其中的5個(gè),lonInit(),lonEventHandler(),lonPropagateNv(),lonPollNv()和lonsendServicePin()。ShortStack Micro Server,運(yùn)行ShortStack固件,運(yùn)行LonTalk協(xié)議的1~6層;主處理器運(yùn)行SCI串口驅(qū)動(dòng)程序,運(yùn)行ShortStack API函數(shù),處理與Lonworks其他節(jié)點(diǎn)通信;主處理器應(yīng)用部分調(diào)用ShortStack API函數(shù)。主處理器設(shè)備的接口支持文件,由Neuron C model file 通過(guò)使用ShortStack向?qū)?lái)產(chǎn)生,產(chǎn)生數(shù)據(jù)表定義網(wǎng)絡(luò)變量和收發(fā)器參數(shù)。而Model file只需要聲明網(wǎng)絡(luò)變量NVs,配置屬性CPs和功能模塊FBs,因此,可以不需要熟悉Neuron C。  

串行驅(qū)動(dòng)程序?yàn)橹魈幚砥骱蛷奶幚砥髦g提供一個(gè)獨(dú)立的接口。整個(gè)串行驅(qū)動(dòng)程序由兩部分構(gòu)成:上層驅(qū)動(dòng)程序?yàn)橹鲬?yīng)用程序提供一個(gè)接口;底層驅(qū)動(dòng)程序完成與神經(jīng)元芯片的硬件接口。上層和底層驅(qū)動(dòng)之間的數(shù)據(jù)交換通過(guò)緩沖隊(duì)列完成。底層驅(qū)動(dòng)程序與從處理器的通訊包括SCI上傳和SCI下傳兩類(lèi),SCI上傳是數(shù)據(jù)由神經(jīng)元芯片上傳到主處理器;SCI下傳是數(shù)據(jù)由主處理器下傳到神經(jīng)元芯片。  

2.2 ShortStack的軟件實(shí)現(xiàn)  

采用提供的Neuron C模板事例修改編寫(xiě)。主要修改ldvsci.h和ldvsci.c中與MSP430F149處理器相關(guān)的語(yǔ)句。  

在ldvsci.h中,修改為:  
#define ENABLE_RX_TX() (ME1 | = UTXE0+URXE0)  
#define ENABLE_TX_ISR() (IE1 |= 0x80)  
#define ENABLE_TX_COMPLETE_ISR() (IFG1|=0x80) //USART0發(fā)送標(biāo)志  
#define ENABLE_RX_ISR() (IE1|= 0x40) //enable SCI receive interrupt  
#define DISABLE_TX_ISR() (IE1 &= "0x80)  
#define DISABLE_TX_COMPLETE_ISR() (IFG1 &= "0x80) // USART0發(fā)送標(biāo)志復(fù)位  
#define DISABLE_RX_ISR() (IE1 &= "0x40)  
#define CHECK_RTS() (P2OUT& 0x02) // check RTS  
#define CHECK_CTS() (P2IN& 0x01) // check CTS  
#define ASSERT_RTS() (P2OUT &= "0x02) // assert RTS  
#define DEASSERT_RTS() (P2OUT|= 0x01) // deassert RTS  
#define DEASSERT_HRDY() (P2OUT |= 0x04) // deassert _HRDY  
#define ASSERT_HRDY() (P2OUT &= "0x04) // assert _HRDY  
在ldvsci.h中,修改了void SysResetSCI(void) ,void SysInit(void),  

void SysUpdateWDT(void), @interrupt void RxInt (void)以及@interrupt void TxInt (void)中與MSP430F149相關(guān)的程序。  
其他文件做少許改變,其中platform.h定義了BIG_ENDIAN and LITTLE_ENDIAN的區(qū)別,對(duì)應(yīng)于哈佛結(jié)構(gòu)和馮.諾伊曼體系結(jié)構(gòu)。由于MSP430F149核是馮.諾伊曼體系結(jié)構(gòu)的,所以ShortStack需用LITTLE_ENDIAN(即高字節(jié)存在高位地址)。  

2.3 ShortStack的硬件件實(shí)現(xiàn)  

從處理器(如圖2)采用TP/FT-10F控制模塊,該模塊由微型電路板構(gòu)成, 包括一個(gè)3150 芯片、一塊閃存、一個(gè)通信收發(fā)器、電源連接器、I/O 口和網(wǎng)絡(luò)接口, 其中IO_0~I(xiàn)O_10 為神經(jīng)元芯片3150 的11 個(gè)I/O 管腳用于對(duì)控制設(shè)備的連接, DataA 和DataB 是FTT- 10收發(fā)器與網(wǎng)絡(luò)的連接口,它能夠?qū)⒅魈幚砥鹘?jīng)過(guò)處理輸出的數(shù)據(jù)發(fā)送到LON 總線(xiàn),也可以將LON 總線(xiàn)上的消息傳送給主處理器。

主處理器與神經(jīng)元芯片之間的通信采用SCI模式。SCI接口是一個(gè)半雙工串行異步通信接口,通信的格式是:一個(gè)起始位,8個(gè)數(shù)據(jù)位和一個(gè)停止位(LSB在先)。通信模式的選擇由IO3確定,IO3接地選擇SCI通信模式。IO5、IO6則用來(lái)選擇通訊速率。  

3 μcos_Ⅱ的移植  

μcos_Ⅱ的全部源代碼,共16個(gè)文件。移植工作涉及的源文件分為三部分:與處理器無(wú)關(guān)的代碼部分,這部分代碼完成操作系統(tǒng)的基本功能,包括10個(gè)文件,即:OS_CORE.C,OS_MBOX.C,OS_MEM.C,OS_Q.C,OS_SEM .C,OS_TASK.C,OS_TIME.C.OS_FLAG.C,OS MUTEX.C,uCOS_II.H。設(shè)置代碼部分,包括OS—CFG.H 和INCLUDES.H 兩個(gè)頭文件,用來(lái)進(jìn)行操作系統(tǒng)配置。  

  
圖2 主從處理器連接圖  

最主要的部分是與處理器有關(guān)部分的代碼,包括一個(gè)頭文件OS_CPU.H、一個(gè)C代碼文件OS_CPU_C.C 及一個(gè)匯編文件OS_CPU_A.ASM,將其移植到MSP430F149處理器上,需要修改這3個(gè)與體系結(jié)構(gòu)相關(guān)的文件,代碼量大約是500行。下面分別介紹這3個(gè)文件的移植。  
OS_CPU.H這部分代碼包括數(shù)據(jù)類(lèi)型定義、堆棧單位定義、堆棧增長(zhǎng)方向定義、關(guān)中斷和開(kāi)中斷的宏定義以及進(jìn)行任務(wù)切換的宏定義等。其中,為了在不同的工作模式下調(diào)用系統(tǒng)的底層接口函數(shù)不受訪(fǎng)問(wèn)權(quán)限的限制,使用軟中斷SWI。堆棧的單位與CPU的寄存器長(zhǎng)度一致,結(jié)構(gòu)常量OS_STK_GROWTH置1,表示堆棧從由高地址向低地址增長(zhǎng)。  

OS_CPU_C.C要求編寫(xiě)六個(gè)簡(jiǎn)單的c函
數(shù):OSTaskSiklnit();OSTaskCreateHook();OSTaskDelHook();OSTaskSwHook();OSTaskStatHook();OSTimeTickHook()唯一必要的函數(shù)是OSTaskStklnit(),其它五個(gè)函數(shù)必須聲明但沒(méi)必要包含。對(duì)于OSTaskStklnit()而言,OSTaskCreate()和OSTaskCreateExt()通過(guò)調(diào)用OSTaskStkInit()來(lái)初始化任務(wù)的堆棧結(jié)構(gòu),OSTaskStkInit()返回堆棧指針?biāo)傅牡刂罚琌STaskCreate()會(huì)獲得該地址并將它保存到任務(wù)控制塊(OS TCB)中。  

CPU_ A.ASM要求編寫(xiě)四個(gè)簡(jiǎn)單的匯編語(yǔ)言函數(shù):OSStartHighRdy();OSCtxSw();  

OSIntCtxSw();OSTickISR()。將所有與處理器相關(guān)的代碼放到OS_CPU_C.C文件中,而不必放在一些分散的匯編語(yǔ)言文件中。  

(1)OSStartHighRdy():運(yùn)行高優(yōu)先級(jí)就緒任務(wù)函數(shù)OSStartHighRdy()必須調(diào)用OSTaskSwHook(),因?yàn)镺STaskSwHook()可以通過(guò)檢查OSRunning而確定是OSStartHighRdy()在調(diào)用它(OSRunning為FALSE)還是正常的任務(wù)切換在調(diào)用它(OSRunning為T(mén)RUE)。OSStartHighRdy()還必須在最高優(yōu)先級(jí)任務(wù)恢復(fù)之前和調(diào)用OSTaskSwHook()之后設(shè)置OSRunning為T(mén)RUE。  

(2)OSCtxSw()、OSIntCtxSw():上下文切換函數(shù)任務(wù)級(jí)的切換是通過(guò)發(fā)軟中斷命令來(lái)完成的,其中斷向量地址必須指向OSCtxSw()。中斷級(jí)的切換由OSIntExit()通過(guò)調(diào)用OSintCtxSw()來(lái)執(zhí)行切換功能。  

(3)OSTickISR():定時(shí)中斷函數(shù)OSTickISR()函數(shù)主要負(fù)責(zé)進(jìn)人中斷時(shí)保存處理器寄存器內(nèi)容,完成任務(wù)切換退出時(shí)恢復(fù)處理器寄存器內(nèi)容并返回,相當(dāng)于中斷服務(wù)程序的入口。  

4 μc/os_Ⅱ與ShortStack的結(jié)合  

因?yàn)棣蘡/os_Ⅱ嵌入式操作系統(tǒng)代碼和ShortStack應(yīng)用程序代碼的固有的特征,兩者可以有機(jī)的結(jié)合在一起。μcos_Ⅱ由系統(tǒng)服務(wù),如郵箱、內(nèi)存管理、消息隊(duì)列、信號(hào)量管理等,對(duì)于這些服務(wù)是在OS_CFG.h定義了的,當(dāng)設(shè)計(jì)的系統(tǒng)要使用這些服務(wù)時(shí)只需要將定義的值改為1即可。將ShortStack應(yīng)用程序中的常量定義全部放在OS_CFG.h中。這樣可以同時(shí)對(duì)操作系統(tǒng)各種服務(wù)函數(shù)和ShortStack 的API和APP函數(shù)實(shí)現(xiàn)了裁減。  

將ShortStack應(yīng)用程序當(dāng)作μcos_Ⅱ操作系統(tǒng)的一個(gè)任務(wù)運(yùn)行。先定義堆棧,以便保存本任務(wù)在任務(wù)切換時(shí)單片機(jī)的寄存器的當(dāng)前值,當(dāng)μcos_Ⅱ下次調(diào)度到該任務(wù)運(yùn)行時(shí)就可以從堆棧恢復(fù)CPU的值,從而該任務(wù)繼續(xù)運(yùn)行。程序如下:  

OS_STK TaskStartStk[TASK_STK_SIZE]; //任務(wù)Task1的任務(wù)堆棧  
OS_STK ShortStackStk[TASK_STK_SIZE]; //ShortStack的任務(wù)堆棧  
…//其他任務(wù)堆棧  
Void main(void)  
{  
OSInit();  
OSTaskCreat(Task1,(void *)0,& TaskStartStk[TASK_STK_SIZE-1],0);  
OSTaskCreat(ShortStack,(void *)0,& ShortStackStk[0],2);  
…//創(chuàng)建其他任務(wù)  
OSStart();  
return 0;  
}  
void ShortStack(void)  
{  
lonInit();  
for(; ; )  
{  
lonEventHandler();//周期性調(diào)用檢查是否有任何LonWorks事件要處理  
}  
}  

由于μc/os_Ⅱ操作系統(tǒng)沒(méi)有任何的硬件驅(qū)動(dòng),所以用戶(hù)自己將ShortStack串口驅(qū)動(dòng)、輸入輸出隊(duì)列操作部分?jǐn)U展為該操作系統(tǒng)的一部分。此外,系統(tǒng)可以添加其他特定的任務(wù),通過(guò)系統(tǒng)調(diào)度,實(shí)現(xiàn)節(jié)點(diǎn)的合理利用,增加節(jié)點(diǎn)的實(shí)用性。如圖4所示。  

最后,將帶有TP/FT-10F控制模塊的MSP430F149芯片接入Gizmo4開(kāi)發(fā)板,通過(guò)Nodebuilder開(kāi)發(fā)工具編譯,進(jìn)入調(diào)試界面,利用LonMaker連接為兩節(jié)點(diǎn)網(wǎng)絡(luò),測(cè)試兩節(jié)點(diǎn)是否通訊。  

  
圖4 軟件結(jié)構(gòu)圖  

5 結(jié)束語(yǔ)  

MSP430F149是16bit的RISC微處理器,該處理器特別適用于手持式設(shè)備以及高性?xún)r(jià)比、低功耗的網(wǎng)絡(luò)設(shè)備,它集成了中斷控制、功率控制、存儲(chǔ)控制、UART、PWMADC等豐富的資源。由于工業(yè)、家庭網(wǎng)絡(luò)化的需求,以及LonWorks總線(xiàn)便捷的入網(wǎng)方式,可以使該多用途智能節(jié)點(diǎn)分散自制,每個(gè)節(jié)點(diǎn)一方面分散地解決其特定的任務(wù),另一方面通過(guò)點(diǎn)對(duì)點(diǎn)、點(diǎn)對(duì)多點(diǎn)的通訊,解決節(jié)點(diǎn)之間的信息傳輸,實(shí)現(xiàn)分散基礎(chǔ)上的融合。上位機(jī)要完成對(duì)LON 網(wǎng)絡(luò)的監(jiān)控與管理功能,二者之間必須能進(jìn)行動(dòng)態(tài)數(shù)據(jù)交換。LON 總線(xiàn)技術(shù)還提供了DDE Server 軟件。DDE Server 能夠?qū)崿F(xiàn)LON網(wǎng)絡(luò)和任何具有DDE 功能的Windows 應(yīng)用程序間交換網(wǎng)絡(luò)變量和信息。系統(tǒng)提供給用戶(hù)一個(gè)十分友好的人機(jī)界面,用戶(hù)可通過(guò)上位機(jī)設(shè)置各節(jié)點(diǎn)實(shí)時(shí)運(yùn)行情況以及歷史運(yùn)行記錄、打印等。
本文地址:http://m.qingdxww.cn/thread-20083-1-1.html     【打印本頁(yè)】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,我們將根據(jù)著作權(quán)人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評(píng)論 登錄 | 立即注冊(cè)

廠(chǎng)商推薦

  • Microchip視頻專(zhuān)區(qū)
  • Dev Tool Bits——使用MPLAB® Discover瀏覽資源
  • Dev Tool Bits——使用條件軟件斷點(diǎn)宏來(lái)節(jié)省時(shí)間和空間
  • Dev Tool Bits——使用DVRT協(xié)議查看項(xiàng)目中的數(shù)據(jù)
  • Dev Tool Bits——使用MPLAB® Data Visualizer進(jìn)行功率監(jiān)視
  • 貿(mào)澤電子(Mouser)專(zhuān)區(qū)

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 天堂在线免费观看中文版 | 性欧美f| 免费岛国小视频在线观看 | 嘛豆传媒国产剧情 | 高清一级 | 国产福利一区二区三区在线观看 | 国产a区| 亚洲国产高清人在线 | 亚洲网站视频 | 日本在线观看永久免费网站 | 四虎永久免费网站 | 亚洲欧美日韩在线播放 | 日韩毛片在线免费观看 | 国产在线观看91精品不卡 | 亚洲乱视频 | 91在线精品麻豆欧美在线 | 国内精品免费网站牛牛 | 亚洲国产精品免费观看 | 中文字幕亚洲欧美一区 | 免费观看毛片视频 | 啊嗯啊羞羞网站在线观看 | 91视频-88av| 四虎成人精品免费影院 | 在线中文字幕视频 | 日本久久不射 | 欧美亚洲国产另类在线观看 | 国产一区二区三区在线观看影院 | 成人午夜国产福到在线不卡 | 一级毛片无毒不卡直接观看 | 一区卡二区卡三区卡视频 | 国产麻豆媒一区一区二区三区 | 国产免费高清在线精品一区 | 日本高清免费h色视频在线观看 | 国产精品va一级二级三级 | 四虎论坛 | 日本在线观看免费高清 | 亚洲小视频在线观看 | 另类婷婷 | 日韩精品欧美一区二区三区 | 精精国产xxxx视频在线播放器 | 大伊香蕉精品视频在线 |