我的推荐
我的图片 (共3张)
  •  
 
   For ST 芯片系列

  •   EDUKIT-III 教学实验系统

  • SHARE-2440 开发平台

我的文章
嵌入式HTTP服务器实现技术  (2009/10/28 10:06)

一、超文本传输协议
HTTP协议是一个面向事务、无状态的应用层协议。在传输层,HTTP协议使用请求(request)/响应(response)模型。一次简单的HTTP事务包括以下过程。首先,客户(浏览器)发起和建立一条到服务器的TCP连接。然后,客户发送一个HTTP请求到服务器,请求包含方法、URI、协议版本和一个类MIME报文。服务器解析HTTP请求后,给出相应的HTTP响应,响应包括协议版本、状态码、解释状态码的简短短语和一个类MIME报文。最后,释放TCP连接。Linux操作系统为用户提供了称为BSD SOCKET的网络编程接口。利用其中的TCP套接口函数,可以非常方便地实现HTTP协议。
HTTP1.0为每一次HTTP请求/响应建立一条新的TCP连接,由于建立一条TCP连接要经历3次握手,因此效率不高。HTTP1.1提出了可持续性连接的概念。HTTP1.1只建立一次TCP连接,而重复地使用它传送一条素的请求/响应消息,减少了额外开销。在嵌入式HTTP服务器中,一般使用HTTP1.1协议。HTTP1.1协议的细节请参考RFC2616。
二、通用网关接口CGI
参数设置和远程控制功能都是通过CGI(通用网关接口)程序和表单实现的。CGI使用HTML表单向Web服务器发送信息。CGI的工作流程是首先由浏览器将用户输入的数据传递给Web服务器,Web服务器根据接收到的数据设置环境变量并启动CGI脚本,CGI脚本从环境变量中读取所需要的数据并进行相应处理,最后使用STDOUT输出HTML形式的结果文件,经Web服务器送回浏览器,最终显示给用户。传统的CGI程序与服务器代码分开,是一个符号CGI标准的可执行文件,并储存在CF卡等存储设备上,一般用脚本语言编写。考虑到嵌入式HTTP服务器要求速度快,功能和代码都尽可能精简的特点,可以把原先由可执行文件完成的功能用C函数实现,放在服务器代码内部,并直接从HTTP请求报文接收数据。
三、自定义标记
要在网页中显示工控系统中大量的实时数据,常规方法是将HTML代码直接集成到程序代码中,或者反之将C程序代码集成到HTML标记语言中。这两种方法均要求开发人员对HTML标记语言的语法细节非常熟悉。网页或程序结构的单方面调整都将导致整个系统全盘修改,系统不具备灵活性与可扩展性。HTML的精髓在于该语言的“标记”性,各种不同标记的具体含义是由服务器和浏览器进行解析。因此,当现有标记不能满足新的应用需求时,可以自行定义新的标记,只需服务器将自定义标记解析为标准标记,然后传送给浏览器即可。在本项目中,主要的实时数据转速、重量、一氧化碳含量等状态信息,可以定义相应的标记。服务器中解析相应标记的函数同样用C语言来实现。运行时,当客户端发出查看某实时网页的请求后,嵌入式HTTP服务器将相应的网页文件从电子盘加载到内存进行逐项解析。当辨识出自定义标记后,就调用相应的函数。该函数返回该标记对应的当前值,并置换HTML文件流中的自定义标记。最后,嵌入式HTTP服务器将解析结果发送给客户端。
四、多线程
最初的进程定义包含程序、资源及其执行三部分,其中程序通常指代码,资源通常包括 内存资源、I/O资源、信号处理等,而程序的执行指执行上下文,这一部分后来发展为线程。在线程的概念出现以前,为了减小进程切换的开销,操作系统设计者逐渐修改正进程的概念,允许将进程所占有的资源从其主体剥离出来,允许某些进程共离享一部分资源,例如文件、信号、数据内存、甚至代码,这就是轻质进程的概念。
Linux内核的2.0.x版本就已经实现了轻质进程。应用程序可以通过一个统一的clone()系统调用接口,用不同的参数指定创建轻质进程还是普通进程。在内核中,clone()调用经过参数传递和解释后会调用do_fork(),这个核内函数同时也是fork、vfork()系统调用的最终实现。在do_fork()中,不同的flone_flags将导致不同的行为。在LinuxThreads中,使用(CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND)参数调用clone()创建“线程”,表示共享内存、共享文件系统、共享文件描述符表,以及共享信号处理方式。Linux操作系统下,已经实现基于轻质进程的符号POSIX1003.C标准的线程库LinuxThreads。
摘要: 1.IAR EWARM 简介 IAR Embedded Workbench for ARM(下面简称 IAR EWARM)是一个针对 ARM 处理器的集成开发环境,它包含项目管理器、编辑器、C/C++编译器和 ARM 汇编器、连接器 XLINK 和支持 RTOS 的调试工具 C-SPY。在 EWARM 环境下可以使用 C/C++和汇编语言方便地开发嵌入式应用程序。比较其他的 ARM 开发...
摘要: 从全球嵌入式行业的起步时期,龙人计算机系统有限公司嵌入式系统事业部开始嵌入式Linux的软硬件技术研究。龙人嵌入式产品事业部不断支持最新的嵌入式处理器技术并不断为各种行业引进嵌入式Linux技术硬件资源,开发出一系列精品嵌入式产品(ARM系列开发板、ARM9开发板、ARM7开发板 、ColdFire系列开发板、ColdFire系列开发板、ADSP系列开发板、MIPS系列开发板及达芬奇系...
摘要:  我是新手刚开始学linux下的嵌入式开发,不知道用不用买开发板,要是用买的话高手给推荐一下,买什么开发板好!呵呵,适合新手开发学习用的!!先谢谢了!! 个人认为是买能获得较多支持的板子, 在此我推荐龙人(深圳龙人arm公司是一家专业arm开发板 arm9开发板 arm9的嵌入式开发 嵌入式系统公司,能根据客户的需求,提供最好的嵌入式arm开发板S3C2440 2440开发板 ...
摘要: 我在烧写嵌入式开发板过程中遇到的问题总结 这段时间总是忙于开发板的烧写过程,因为对(arm开发板开发板 arm7开发板 2410开发板 2440开发板 925开发板)等开发板不是很精通所以走了不少弯路,在此我把自己在烧写板子的过程中遇到的若干个问题整理如下希望对初学者有所帮助。 1.写好了程序不必立刻写入flash中,可挂载在本机上,但出现这种错误: # mount 192...















无显示 无显示
博主信息
深圳龙人计算机有限公司工作室成立于2000年, 隶属北京龙人计算机应用研究所,拥有一批从业十多年的资深专业软、硬件研发工程师。 深圳龙人计算机有限公司拥有嵌入式产品事业部、网络电话产品事业部、PCB工作室、龙人反向技术研究所和SMT加工厂。
加关注
打个招呼
我的商铺
  • 访问量:1976
  • 文章数:37
  • 评论数:12
  • 创建日期:2008-03-15 17:33:31
RSS订阅
个人资料
最新博文
最新评论
最近访客
我的文章分类
最近更新博客
友情链接
编辑推荐