




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于Lonworks总线的嵌入式智能节点的设计 1 前言LonWorks现场总线是美国Echelon公司推出的局部操作网络,它具有统一性、开放性、互操作性及支持多种通信介质等优良性能,是当今最流行的现场总线之一。但是由于LonWorks控制节点的核心神经元芯片(Neuron Chip)的应用处理能力相对较弱,因而对于复杂的应用常使用主从处理器结构,主处理器完成用户的应用功能,而把Neuron芯片作为通信协处理器。由于可以提高了节点的处理能力,节省资金和开发时间,因此,具有多功能的通用嵌入式主处理器具有很好的应用前景。本文采用
2、的MSP430F149主处理器是TI公司基具有较高的集成度的芯片,简化了应用系统的硬件设计,适合作为多用途智能节点。2 ShortStack的介绍和实现2.1 ShortStack的结构ShortStack微服务器是Echelon公司提供的一套开发包,其结构图如下:图1 ShortStack结构图由图可看到,主处理器与ShortStack 微服务器通信通过ShortStack API函数来实现,通常使用其中的5个,lonInit(),lonEventH
3、andler(),lonPropagateNv(),lonPollNv()和lonsendServicePin()。ShortStack Micro Server,运行ShortStack固件,运行LonTalk协议的16层;主处理器运行SCI串口驱动程序,运行ShortStack API函数,处理与Lonworks其他节点通信;主处理器应用部分调用ShortStack API函数。主处理器设备的接口支持文件,由Neuron C model file 通过使用ShortStack向导来产生,产生数据表定义网络变量和收发器参数。而Model file只需要声明网络变量NVs,配置属性CPs和功能
4、模块FBs,因此,可以不需要熟悉Neuron C。串行驱动程序为主处理器和从处理器之间提供一个独立的接口。整个串行驱动程序由两部分构成:上层驱动程序为主应用程序提供一个接口;底层驱动程序完成与神经元芯片的硬件接口。上层和底层驱动之间的数据交换通过缓冲队列完成。底层驱动程序与从处理器的通讯包括SCI上传和SCI下传两类,SCI上传是数据由神经元芯片上传到主处理器;SCI下传是数据由主处理器下传到神经元芯片。2.2 ShortStack的软件实现采用提供的Neuron C模板事例修改编写。主要修改ldvsci.h和ldvsci.c中与MSP430F149处理器相关的语句。在ldvsci
5、.h中,修改为:#define ENABLE_RX_TX() (ME1 | = UTXE0+URXE0) #define ENABLE_TX_ISR() (IE1 |= 0x80) #define ENABLE_TX_COMPL
6、ETE_ISR() (IFG1|=0x80) /USART0发送标志#define ENABLE_RX_ISR() (IE1|= 0x40) /enable SCI receive interrupt#define DISABLE_TX_ISR() (
7、IE1 &= 0x80)#define DISABLE_TX_COMPLETE_ISR() (IFG1 &= 0x80) / USART0发送标志复位#define DISABLE_RX_ISR() (IE1 &= 0x40) #define CHECK_RTS()
8、; (P2OUT& 0x02) / check RTS#define CHECK_CTS() (P2IN& 0x01)
9、; / check CTS#define ASSERT_RTS() (P2OUT &= 0x02) / assert RTS#define DEASSERT_RTS()
10、160; (P2OUT|= 0x01) / deassert RTS#define DEASSERT_HRDY() (P2OUT |= 0x04) / deassert _HRDY#define ASSERT_HRD
11、Y() (P2OUT &= 0x04) / assert _HRDY 在ldvsci.h中,修改了void SysResetSCI(void) ,void SysInit(void),void SysUpdateWDT(void), interrupt void RxInt (void)以及interr
12、upt 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_0IO_10 为神经元芯片3150
13、 的11 个I/O 管脚用于对控制设备的连接, DataA 和DataB 是FTT- 10收发器与网络的连接口,它能够将主处理器经过处理输出的数据发送到LON 总线,也可以将LON 总线上的消息传送给主处理器。主处理器与神经元芯片之间的通信采用SCI模式。SCI接口是一个半双工串行异步通信接口,通信的格式是:一个起始位,8个数据位和一个停止位(LSB在先)。通信模式的选择由IO3确定,IO3接地选择SCI通信模式。IO5、IO6则用来选择通讯速率。3 cos_的移植cos_的全部源代码,共16个文件。移植工作涉及的源文件分为三部分:与处理器无关的代码部分,这部分代码完成操作系统的基本功能,包括
14、10个文件,即:OS_CORE.C,OS_MBOX.C,OS_MEM.C,OS_Q.C,OS_SEM .C,OS_TASK.C,OS_TIME.COS_FLAG.C,OS MUTEX.C,uCOS_II.H。设置代码部分,包括OSCFG.H 和INCLUDES.H 两个头文件,用来进行操作系统配置。图2 主从处理器连接图最主要的部分是与处理器有关部分的代码,包括一个头文件OS_CPU.H、一个C代码文件OS_CPU_C.C 及一个汇编文件OS_CPU_A.ASM,将其移植到MSP430F149处理器上,需要修改这3个与体系结构相关的文件,代码量大约是500行。下面分别介绍这3个文件
15、的移植。OS_CPU.H这部分代码包括数据类型定义、堆栈单位定义、堆栈增长方向定义、关中断和开中断的宏定义以及进行任务切换的宏定义等。其中,为了在不同的工作模式下调用系统的底层接口函数不受访问权限的限制,使用软中断SWI。堆栈的单位与CPU的寄存器长度一致,结构常量OS_STK_GROWTH置1,表示堆栈从由高地址向低地址增长。OS_CPU_C.C要求编写六个简单的c函数:OSTaskSiklnit();OSTaskCreateHook();OSTaskDelHook();OSTaskSwHook();OSTaskStatHook();OSTimeTickHook()唯一必要的函数是OSTas
16、kStklnit(),其它五个函数必须声明但没必要包含。对于OSTaskStklnit()而言,OSTaskCreate()和OSTaskCreateExt()通过调用OSTaskStkInit()来初始化任务的堆栈结构,OSTaskStkInit()返回堆栈指针所指的地址,OSTaskCreate()会获得该地址并将它保存到任务控制块(OS TCB)中。CPU_ A.ASM要求编写四个简单的汇编语言函数:OSStartHighRdy();OSCtxSw();OSIntCtxSw();OSTickISR()。将所有与处理器相关的代码放到OS_CPU_C.C文件中,而不必放在一些分散的汇编语言文
17、件中。(1)OSStartHighRdy():运行高优先级就绪任务函数OSStartHighRdy()必须调用OSTaskSwHook(),因为OSTaskSwHook()可以通过检查OSRunning而确定是OSStartHighRdy()在调用它(OSRunning为FALSE)还是正常的任务切换在调用它(OSRunning为TRUE)。OSStartHighRdy()还必须在最高优先级任务恢复之前和调用OSTaskSwHook()之后设置OSRunning为TRUE。(2)OSCtxSw()、OSIntCtxSw():上下文切换函数任务级的切换是通过发软中断命令来完成的,其中断向量地址必
18、须指向OSCtxSw()。中断级的切换由OSIntExit()通过调用OSintCtxSw()来执行切换功能。(3)OSTickISR():定时中断函数OSTickISR()函数主要负责进人中断时保存处理器寄存器内容,完成任务切换退出时恢复处理器寄存器内容并返回,相当于中断服务程序的入口。4 c/os_与ShortStack的结合 因为c/os_嵌入式操作系统代码和ShortStack应用程序代码的固有的特征,两者可以有机的结合在一起。cos_由系统服务,如邮箱、内存管理、消息队列、信号量管理等,对于这些服务是在OS_CFG.h定义了
19、的,当设计的系统要使用这些服务时只需要将定义的值改为1即可。将ShortStack应用程序中的常量定义全部放在OS_CFG.h中。这样可以同时对操作系统各种服务函数和ShortStack 的API和APP函数实现了裁减。 将ShortStack应用程序当作cos_操作系统的一个任务运行。先定义堆栈,以便保存本任务在任务切换时单片机的寄存器的当前值,当cos_下次调度到该任务运行时就可以从堆栈恢复CPU的值,从而该任务继续运行。程序如下:OS_STK TaskStartStkTASK_STK_SIZE; /任务Task1的任务堆栈OS_STK ShortSta
20、ckStkTASK_STK_SIZE; /ShortStack的任务堆栈/其他任务堆栈Void main(void)OSInit();OSTaskCreat(Task1,(void *)0,& TaskStartStkTASK_STK_SIZE-1,0);OSTaskCreat(ShortStack,(void *)0,& ShortStackStk0,2);/创建其他任务OSStart();return 0;void ShortStack(void)lonInit();for(; ; ) lonEventHandler();/周期性调用检查是否有任何LonWorks事件要处理由于c/os_操作系统没有任何的硬件驱动,所以用户自己将ShortStack串口驱动、输入输出队列操作部分扩展为该操作系统的一部分。此外
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 企业级网络设备购买协议
- 2025年电子式纸张耐折度测定仪项目可行性研究报告
- 公司技术外包研发合作协议规范说明
- 餐饮连锁加盟合同
- 电动车智能充电站服务条款与免责合同
- 装修公司外包合同
- 采购质量保证条款协议书
- 植物保护技术支持及赔偿责任分界协议
- 精装修商品房买卖合同
- 高端医疗服务合同
- 上海市家庭居室装饰装修施工合同书
- 2024年财政部会计法律法规答题活动题目及答案一
- 高考语文字形专项练习
- 人教版小学数学五年级下册2 《公因数和公倍数》练习题
- 新能源汽车租赁市场发展方案
- 2024年叉车司机N1特种作业证初审取证(安徽)考试复习题库(含答案)
- 货架回收合同范例
- (2024年)中国传统文化介绍课件
- 《曹冲称象课件》课件
- 【MOOC】宇宙简史-南京大学 中国大学慕课MOOC答案
- 餐厅经营管理方案 餐厅的经营与管理计划
评论
0/150
提交评论