新闻中心

EEPW首页>模拟技术>设计应用> 基于Lonworks总线的嵌入式智能节点的设计

基于Lonworks总线的嵌入式智能节点的设计

作者:王振臣,颜旭斌,王树贤 时间:2008-08-27 来源:微计算机信息 收藏

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

本文引用地址://m.amcfsurvey.com/article/87438.htm

  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_Ⅱ与的结合

因为μc/os_Ⅱ操作系统代码和应用程序代码的固有的特征,两者可以有机的结合在一起。μcos_Ⅱ由系统服务,如邮箱、内存管理、消息队列、信号量管理等,对于这些服务是在OS_CFG.h定义了的,当设计的系统要使用这些服务时只需要将定义的值改为1即可。将应用程序中的常量定义全部放在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总线实现通讯连接,并可扩展多种用途,具有很好的实用和经济价值。

  参考文献

  [1] David E.Simon著,陈向群等译,系统软件教程[M].北京:机械工业出版社,2005

  [2] ShortStack User’s Guide,Echelon, 2002

  [3] Jean J.Labrosse著,邵贝贝译,μC/OS_II源码公开的实时操作系统[M].北京:中国电力出版社,2001

  [4] 胡大可 MSP430系列FLASH型超低功耗16位单片机[M].北京:北京航空航天大学出版社 ,2001

  [5] 贾慧潇,王振臣.基于LonWorks 的高性能温湿度测控系统[J].微计算机信息,2006,8-1:30-34。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)

上一页 1 2 下一页

评论


相关推荐

技术专区

关闭