基于ARM健康监测系统网关服务器研究与设计.docVIP

基于ARM健康监测系统网关服务器研究与设计.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于ARM健康监测系统网关服务器研究与设计

基于ARM健康监测系统网关服务器研究与设计   摘要:文章介绍了多种基于嵌入式linux操作系统的服务器模型。结合健康监测系统中使用的zigbee网络,详细讨论了各种服务器模型的优缺点。研究的主机对象是装有嵌入式linux系统的S3C2440,客户机采用的是自带zigbee模块的CC2450单片机。   关键词:服务器模型;嵌入式;zigbee   zigbee网络具有低功耗、抗干扰性强、成本低、网络容量大等优点,在现代健康监控系统中应用广泛。为尽可能降低成本,在实际中一般充分发挥它网络容量大的优点,这要求网关服务器要拥有很好的稳定性和实时处理基本数据的能力。针对这一要求我们对嵌入式linux下的各种服务器模型进行了详细的研究,在数据处理问题上我们使用嵌入式数据库sqlite进行实时的处理。   一、嵌入式系统开发   S3C2440处理器是基于ARM920T内核的32位RISC嵌入式芯片。该ARM内核的CPU主频最高可达533MHz,此处使用499MHz,它除了集成3个串口、SD卡控制器、USB Host控制器、LCD控制器、Nand Flash控制器以及实时时钟外,还增添了工业控制总线(CAN)、Camera控制器(数码摄像机接口)、PCMCIA接口(可接无线网卡或调制解调器及其他外设)。另外,用1个96针总线插槽引出CPU的局部总线,可外接其他总线设备并与多方通信。   在众多嵌入式操作系统中,我们选则发展最快应用最广的嵌入式linux操作系统。它的内核因为实现了的TCP/IP协议,所以可以很方便的进行各种服务器模型的编程与实现。同时它具有内核开放、方便裁剪等优点,非常适合应用于嵌入式网关服务器。   二、服务器模型的分析与设计   由于对进行的传输的数据的准确率要求很高,所以选择TCP服务器。Linux服务器主要分为两大类:循环服务器和并发服务器。服务器程序在bind()、listen()之后直接进入循环,在循环内完成accept()、recv()、send()等操作。而并发服务器可以同时和多个客户端进行通信。由于健康监测系统的zigbee节点很多,并且节点发送数据时实时的。所以只能采用并发服务器模式与各个节点进行通信。并发服务器又分为多进程并发服务器、多线程并发服务器、IO复用服务器等3中类型。下面对这3中服务器进行分析。   多进程并发服务器在linten()之后的核心代码如下:   for(i=0;iPIDNUM;i++)   {   pid[i]=fork();   if(pid[i]==0)   {   handle(s);   }   }   close(s);   它的思想是创建子进程处理同时到来的客户端请求,即同时有多少个节点请求就创建多少个进程。   多线程并发服务器在listen()之后的核心代码如下:   for(;;)   {   sc=accept(s,(struct sockaddr*)client_addr,len);   if(sc0)   {   continue;   }   else   {   pthread_create(thread1,NULL,handle,(void*)sc);   }   }   close(s);   它的思想是创建线程处理同时到来的客户端请求,即同时有多少个节点请求就创建多少个线程。相比创建进程,创建线程拥有很多优点。系统创建进程需要完全的复制一份代码,分配另一份空间,而线程只有很少的私有资源,比如线程ID等。实践证明创建线程比创建进程快10到100倍。   IO复用模型的核心思想是使用select函数进行描述符表的匹配,在linsten()之后的核心代码如下:   if (!(select(MAX_SOCK_FD, tmp_inset, NULL, NULL, NULL) 0))   {   perror(select);   close(sockfd);   exit(1);   }   printf(after select\n);   for (fd = 0; fd MAX_SOCK_FD; fd++)   {   if (FD_ISSET(fd, tmp_inset) 0)   {   if (fd == sockfd)   { /* 服务端接收客户端的连接请求 : 监听套接字*/   if ((client_fd = accept(sockfd, (struct sockaddr *)client_sockaddr, sin_size))== -1)   {   perror(accept);   exit(1);   }

您可能关注的文档

文档评论(0)

fangsheke66 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档