当前位置:首页 > 嵌入式 > 嵌入式软件
[导读]基于Lonworks总线的嵌入式智能节点的设计

1   前言

LonWorks现场总线是美国Echelon公司推出的局部操作网络,它具有统一性、开放性、互操作性及支持多种通信介质等优良性能,是当今最流行的现场总线之一。但是由于LonWorks控制节点的核心神经元芯片(Neuron Chip)的应用处理能力相对较弱,因而对于复杂的应用常使用主从处理器结构,主处理器完成用户的应用功能,而把Neuron芯片作为通信协处理器。由于可以提高了节点的处理能力,节省资金和开发时间,因此,具有多功能的通用嵌入式主处理器具有很好的应用前景。本文采用的MSP430F149主处理器是TI公司基具有较高的集成度的芯片,简化了应用系统的硬件设计,适合作为多用途智能节点

2           ShortStack的介绍和实现

2.1  ShortStack的结构

ShortStack微服务器是Echelon公司提供的一套开发包,其结构图如下:


图1  ShortStack结构图

由图可看到,主处理器与ShortStack 微服务器通信通过ShortStack API函数来实现,通常使用其中的5个,lonInit(),lonEventHandler(),lonPropagateNv(),lonPollNv()和lonsendServicePin()。ShortStack Micro Server,运行ShortStack固件,运行LonTalk协议的1~6层;主处理器运行SCI串口驱动程序,运行ShortStack API函数,处理与Lonworks其他节点通信;主处理器应用部分调用ShortStack API函数。主处理器设备的接口支持文件,由Neuron C model file 通过使用ShortStack向导来产生,产生数据表定义网络变量和收发器参数。而Model file只需要声明网络变量NVs,配置属性CPs和功能模块FBs,因此,可以不需要熟悉Neuron C。

串行驱动程序为主处理器和从处理器之间提供一个独立的接口。整个串行驱动程序由两部分构成:上层驱动程序为主应用程序提供一个接口;底层驱动程序完成与神经元芯片的硬件接口。上层和底层驱动之间的数据交换通过缓冲队列完成。底层驱动程序与从处理器的通讯包括SCI上传和SCI下传两类,SCI上传是数据由神经元芯片上传到主处理器;SCI下传是数据由主处理器下传到神经元芯片。

2.2  ShortStack的软件实现

采用提供的Neuron C模板事例修改编写。主要修改ldvsci.h和ldvsci.c中与MSP430F149处理器相关的语句。

在ldvsci.h中,修改为:

#define ENABLE_RX_TX()              (ME1 | = UTXE0+URXE0)

#define ENABLE_TX_ISR()              (IE1 |= 0x80)     

#define ENABLE_TX_COMPLETE_ISR() (IFG1|=0x80)   //USART0发送标志

#define ENABLE_RX_ISR()              (IE1|= 0x40)   //enable SCI receive interrupt

#define DISABLE_TX_ISR()             (IE1 &= ~0x80)

#define DISABLE_TX_COMPLETE_ISR()  (IFG1 &= ~0x80)    // USART0发送标志复位

#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相关的程序。

其他文件做少许改变,其中platform.h定义了BIG_ENDIAN and LITTLE_ENDIAN的区别,对应于哈佛结构和冯.诺伊曼体系结构。由于MSP430F149核是冯.诺伊曼体系结构的,所以ShortStack需用LITTLE_ENDIAN(即高字节存在高位地址)。

2.3 ShortStack的硬件件实现

从处理器(如图2)采用TP/FT-10F控制模块,该模块由微型电路板构成, 包括一个3150 芯片、一块闪存、一个通信收发器、电源连接器、I/O 口和网络接口, 其中IO_0~IO_10 为神经元芯片3150 的11 个I/O 管脚用于对控制设备的连接, DataA 和DataB 是FTT- 10收发器与网络的连接口,它能够将主处理器经过处理输出的数据发送到LON 总线,也可以将LON 总线上的消息传送给主处理器。

主处理器与神经元芯片之间的通信采用SCI模式。SCI接口是一个半双工串行异步通信接口,通信的格式是:一个起始位,8个数据位和一个停止位(LSB在先)。通信模式的选择由IO3确定,IO3接地选择SCI通信模式。IO5、IO6则用来选择通讯速率。

3 μcos_Ⅱ的移植

μcos_Ⅱ的全部源代码,共16个文件。移植工作涉及的源文件分为三部分:与处理器无关的代码部分,这部分代码完成操作系统的基本功能,包括10个文件,即: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。设置代码部分,包括OS—CFG.H 和INCLUDES.H 两个头文件,用来进行操作系统配置。

图2  主从处理器连接图

最主要的部分是与处理器有关部分的代码,包括一个头文件OS_CPU.H、一个C代码文件OS_CPU_C.C 及一个汇编文件OS_CPU_A.ASM,将其移植到MSP430F149处理器上,需要修改这3个与体系结构相关的文件,代码量大约是500行。下面分别介绍这3个文件的移植。

OS_CPU.H这部分代码包括数据类型定义、堆栈单位定义、堆栈增长方向定义、关中断和开中断的宏定义以及进行任务切换的宏定义等。其中,为了在不同的工作模式下调用系统的底层接口函数不受访问权限的限制,使用软中断SWI。堆栈的单位与CPU的寄存器长度一致,结构常量OS_STK_GROWTH置1,表示堆栈从由高地址向低地址增长。

OS_CPU_C.C要求编写六个简单的c函数:OSTaskSiklnit();OSTaskCreateHook();OSTaskDelHook();OSTaskSwHook();OSTaskStatHook();OSTimeTickHook()唯一必要的函数是OSTaskStklnit(),其它五个函数必须声明但没必要包含。对于OSTaskStklnit()而言,OSTaskCreate()和OSTaskCreateExt()通过调用OSTaskStkInit()来初始化任务的堆栈结构,OSTaskStkInit()返回堆栈指针所指的地址,OSTaskCreate()会获得该地址并将它保存到任务控制块(OS TCB)中。

CPU_ A.ASM要求编写四个简单的汇编语言函数:OSStartHighRdy();OSCtxSw();

OSIntCtxSw();OSTickISR()。将所有与处理器相关的代码放到OS_CPU_C.C文件中,而不必放在一些分散的汇编语言文件中。

(1)OSStartHighRdy():运行高优先级就绪任务函数OSStartHighRdy()必须调用OSTaskSwHook(),因为OSTaskSwHook()可以通过检查OSRunning而确定是OSStartHighRdy()在调用它(OSRunning为FALSE)还是正常的任务切换在调用它(OSRunning为TRUE)。OSStartHighRdy()还必须在最高优先级任务恢复之前和调用OSTaskSwHook()之后设置OSRunning为TRUE。

(2)OSCtxSw()、OSIntCtxSw():上下文切换函数任务级的切换是通过发软中断命令来完成的,其中断向量地址必须指向OSCtxSw()。中断级的切换由OSIntExit()通过调用OSintCtxSw()来执行切换功能。

(3)OSTickISR():定时中断函数OSTickISR()函数主要负责进人中断时保存处理器寄存器内容,完成任务切换退出时恢复处理器寄存器内容并返回,相当于中断服务程序的入口。

4   μc/os_Ⅱ与ShortStack的结合

    因为μc/os_Ⅱ嵌入式操作系统代码和ShortStack应用程序代码的固有的特征,两者可以有机的结合在一起。μcos_Ⅱ由系统服务,如邮箱、内存管理、消息队列、信号量管理等,对于这些服务是在OS_CFG.h定义了的,当设计的系统要使用这些服务时只需要将定义的值改为1即可。将ShortStack应用程序中的常量定义全部放在OS_CFG.h中。这样可以同时对操作系统各种服务函数和ShortStack 的API和APP函数实现了裁减。

   将ShortStack应用程序当作μcos_Ⅱ操作系统的一个任务运行。先定义堆栈,以便保存本任务在任务切换时单片机的寄存器的当前值,当μcos_Ⅱ下次调度到该任务运行时就可以从堆栈恢复CPU的值,从而该任务继续运行。程序如下:

OS_STK TaskStartStk[TASK_STK_SIZE];  //任务Task1的任务堆栈

OS_STK ShortStackStk[TASK_STK_SIZE];  //ShortStack的任务堆栈

…  //其他任务堆栈

Void main(void)

{

OSInit();

OSTaskCreat(Task1,(void *)0,& TaskStartStk[TASK_STK_SIZE-1],0);

OSTaskCreat(ShortStack,(void *)0,& ShortStackStk[0],2);

…  //创建其他任务

OSStart();

return 0;

}

void ShortStack(void)

{

lonInit();

for(; ; )

{

    lonEventHandler();//周期性调用检查是否有任何LonWorks事件要处理

}

}

由于μc/os_Ⅱ操作系统没有任何的硬件驱动,所以用户自己将ShortStack串口驱动、输入输出队列操作部分扩展为该操作系统的一部分。此外,系统可以添加其他特定的任务,通过系统调度,实现节点的合理利用,增加节点的实用性。如图4所示。

最后,将带有TP/FT-10F控制模块的MSP430F149芯片接入Gizmo4开发板,通过Nodebuilder开发工具编译,进入调试界面,利用LonMaker连接为两节点网络,测试两节点是否通讯。

图4  软件结构图

5  结束语

   MSP430F149是16bit的RISC微处理器,该处理器特别适用于手持式设备以及高性价比、低功耗的网络设备,它集成了中断控制、功率控制、存储控制、UART、PWM、ADC等丰富的资源。由于工业、家庭网络化的需求,以及LonWorks总线便捷的入网方式,可以使该多用途智能节点分散自制,每个节点一方面分散地解决其特定的任务,另一方面通过点对点、点对多点的通讯,解决节点之间的信息传输,实现分散基础上的融合。上位机要完成对LON 网络的监控与管理功能,二者之间必须能进行动态数据交换。LON 总线技术还提供了DDE Server 软件。DDE Server 能够实现LON网络和任何具有DDE 功能的Windows 应用程序间交换网络变量和信息。系统提供给用户一个十分友好的人机界面,用户可通过上位机设置各节点实时运行情况以及历史运行记录、打印等。

    本文作者创新点:运用ShortStack技术,设计了以MSP149为主处理器,Neuron芯片为微处理器的通用节点,与Lonworks总线实现通讯连接,并可扩展多种用途,具有很好的实用和经济价值。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭