基于ARM-Linux的嵌入式HTTPS服务器与实现.

时间:2019-05-14 23:02:47下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《基于ARM-Linux的嵌入式HTTPS服务器与实现.》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《基于ARM-Linux的嵌入式HTTPS服务器与实现.》。

第一篇:基于ARM-Linux的嵌入式HTTPS服务器与实现.

基于ARM-Linux的嵌入式HTTPS服务器与实现

随着计算机技术和微电子技术的发展,嵌入式系统在工业控制、信息家电、通信设备、智能仪器等领域得到了越来越广泛的应用。在这些领域,网络化、信息化的要求也随着Internet的迅猛发展而逐渐突出,越来越多的嵌入式设备有接入网络实现远程控制的需求,其基本的方法是在嵌入式设备上实现HTTP服务器,通过万维网在客户端用浏览器对设备进行访问。同时,这种方法不可避免地带来互联网上的安全问题,而HTTPS(安全超文本传输协议)是由Netscape公司提出的以SSL(安全套接层)为基础的安全HTTP方法,因此构建嵌入式HTTPS服务器,将有效地为嵌入式设备的网络化提供安全保障。本文对HTTP传输协议和SSL安全协议以及基于ARM的嵌入式技术等关键技术进行了深入的研究。首先分析了HTTPS这个安全传输设施的实现方法,即在标准的TCP/IP参考模型中在HTTP标准协议层和下面的TCP/IP传输协议层之间额外附加一层SSL安全层,紧接着对基于请求/响应模式的HTTP协议的信息交换的基本过程和SSL握手协议的安全加密的详细过程进行了分析与研究。然后,设计了系统的整体架构,硬件采用了应用广泛的32位ARM920T处理器S3C2410,操作系统采用了开源的嵌入式Linux操作系统,应用层的实现以Linux系统调用和OpenSSL开源库为基础。其次,建立了HTTPS服务器的支撑环境,在宿主机上通过Vmware虚拟机技术建立了Linux操作系统并通过一系列的服务配置建立起交叉编译环境;在硬件平台上烧写了系统引导程序bootloader,并以此为基础进行了嵌入式Linux和根文件系统的配置、编译和移植。最后,在深入研究了相关理论后,设计了服务器的基本结构和功能模块,在利用Linux的系统调用和OpenSSL API的基础上,使用C语言实现了基于ARM-Linux的嵌入式HTTPS服务器。实验结果表明,该服务器实现了与客户端浏览器的HTTPS的交互过程,能正确解析浏览器发出的HTTP请求,并根据请求资源和请求方法的不同做出不同的响应,返回给浏览器静态资源或者CGI程序的处理结果。同主题文章

【关键词相关文档搜索】: 信号与信息处理;ARM;Linux;HTTP;SSL 【作者相关信息搜索】: 武汉理工大学;信号与信息处理;王虹;戴帅;

第二篇:网站服务器托管HTTPS如何保障数据传输安全

网站服务器托管HTTPS如何保障数据传输安全

网站服务器托管用户主机中的数据与访客之间的传输是通过http协议传输的,然而http是明文传输,相对的HTTPS属于加密传输,会更安全。

对称加密

假如现在小客与小服要进行一次私密的对话,他们不希望这次对话内容被其他外人知道。可是,我们平时的数据传输过程中又是明文传输的,万一被某个黑客把他们的对话内容给窃取了,那就难受了。

为了解决这个问题,小服这家伙想到了一个方法来加密数据,让黑客看不到具体的内容。该方法是这样子的: 在每次数据传输之前,小服会先传输给小客一把密钥,然后小服在之后给小客发消息的过程中,会用这把密钥对这些消息进行加密。小客在收到这些消息后,会用之前小服给的那把密钥对这些消息进行解密,这样,小客就能得到密文里面真正的数据了。如果小客要给小服发消息,也同样用这把密钥来对消息进行加密,小服收到后也用这把密钥进行解密。

这样,就保证了数据传输的安全性。HTTPS 如何保证数据传输的安全性?

这种方法称之为对称加密,加密和解密都用同一把密钥。

这时,小服想着自己的策咯,还是挺得意的。但这个策略安全的前提是,小客拥有小服的那把密钥。可问题是,小服是以明文的方式把这把密钥传输给小客的,如果黑客截取了这把密钥,小服与小客就算是加密了内容,在截取了密钥的黑客老哥眼里,这和明文没啥区别。非对称加密

小服还是挺聪明的,意识到了密钥会被截取这个问题,他又想到了另外一种方法:用非对称加密的方法来加密数据。方法如下:

小服和小客都拥有两把钥匙,一把钥匙是公开的(全世界都知道也没关系),称之为公钥;而另一把钥匙是保密(也就是只有自己才知道),称之为私钥。并且,用公钥加密的数据,只有对应的私钥才能解密;用私钥加密的数据,只有对应的公钥才能解密。所以在传输数据的过程中,小服在给小客传输数据的过程中,会用小客给他的公钥进行加密,然后小客收到后,再用自己的私钥进行解密。小客给小服发消息的时候,也一样会用小服给他的公钥进行加密,然后小服再用自己的私钥进行解密。这样,数据就能安全到达双方。HTTPS 如何保证数据传输的安全性?

想着这么复杂的策略都能想出来,小服可是得意的不能再得意了…..还没等小服得意多久,小客就给它泼了一波冷水。

小客严肃着说:其实,你的这种方法也不是那么安全啊,还是存在被黑客截取的危险啊。例如:

你在给我传输公钥的过程中,如果黑客截取了你的公钥,并且拿着自己的公钥来冒充你的公钥来发给我。我收到公钥之后,会用公钥进行加密传输(这时用的公钥实际上是黑客的公钥)。黑客截取了加密的消息之后,可以用他自己的私钥来进行解密来获取消息内容。然后再用你(小服)的公钥来对消息进行加密,之后再发给你(小服)。这样子,我们的对话内容还是被黑客给截取了(倒过来小客给小服传输公钥的时候也一样)。......这么精妙的想法居然也不行,小服这波,满脸无神。

这里插讲下,其实在传输数据的过程中,在速度上用对称加密的方法会比非对称加密的方法快很多。所以在传输数据的时候,一般不单单只用非对称加密这种方法(我们先假设非对称密码这种方法很安全),而是会用非对称加密 + 对称加密这两种结合的方法。基于这个,我们可以用非对称加密方法来安全着传输密钥,之后再用对称加密的方法来传输消息内容 数字证书

我们回头想一下,是什么原因导致非对称加密这种方法的不安全性呢?它和对称加密方法的不安全性不同。非对称加密之所以不安全,是因为小客收到了公钥之后,无法确定这把公钥是否真的属于小服。

也就是说,我们需要找到一种策略来证明这把公钥就是小服的,而不是别人冒充的。为了解决这个问题,小服和小客绞尽脑汁想出了一种终极策略:数字证书——我们需要找到一个拥有公信力、大家都认可的认证中心(CA)。小服在给小客发公钥的过程中,会把公钥以及小服的个人信息通过Hash算法生成消息摘要。HTTPS 如何保证数据传输的安全性?

为了防止摘要被人调换,小服还会用CA提供的私钥对消息摘要进行加密来形成数字签名。HTTPS 如何保证数据传输的安全性?

并且,最后还会把原来没Hash算法之前的信息和数字签名合并在一起,形成数字证书。HTTPS 如何保证数据传输的安全性?

当小客拿到这份数字证书之后,就会用CA提供的公钥来对数字证书里面的数字签名进行解密得到消息摘要,然后对数字证书里面小服的公钥和个人信息进行Hash得到另一份消息摘要,然后把两份消息摘要进行对比,如果一样,则证明这些东西确实是小服的,否则就不是。HTTPS 如何保证数据传输的安全性?

这时可能有人会有疑问,CA的公钥是怎么拿给小客的呢?小服又怎么有CA的私钥呢? 其实,(有些)服务器在一开始就向认证中心申请了这些证书,而客户端里,也会内置这些证书。

HTTPS 如何保证数据传输的安全性?

当客户端收到服务器返回来的数据时,就会在内置的证书列表里,查看是否有有解开该数字证书的公钥。

以上就是HTTPS技术的说明。浦东数据中心为用户提供14念书俺也服务器托管技术支持

第三篇:基于嵌入式ARM9的USB设计与实现

基于嵌入式ARM9的USB设计与实现

引 言

USB(Universal Serial Bus)是通用串行总线的缩写,因其具有方便易用,动态分配带宽,容错性优越和高性价比等特点,现已成为计算机的主流接口。

随着嵌入式系统的广泛应用,各种小型终端需要开发出与外界联系的USB接口。目前,常用的技术有两种。基于单片机的USB接口,特点是需要外置芯片,电路复杂,留下的CPU资源不多;基于ARM的USB接口,特点是资源丰富,但ARM系列产品较多,如果选型不当,还需要搭接较多的外围电路,且不能很好地发挥CPU性能。USB 接口原理

USB1.1 规范[1]将USB 分为5 部分:控制器、控制器驱动程序、USB 芯片驱动程序、USB设备以及针对不同USB 设备的客户端驱动程序。

(1)控制器(Host Controller)主要负责执行由控制器驱动程序发出的命令。

(2)控制器驱动程序(Host Controller Driver), 在控制器与USB 设备间建立通信

管道(Pipe)。

(3)USB 驱动程序(USB Driver),提供对不同USB 设备及芯片的支持。(4)USB 设备(USB Device), 有两类USB 设备:一类称为功能设备(Function),另

一类是称为USB 集线器(HUB),可以连接多个USB 设备。

(5)USB 设备驱动程序(Client Driver Software)及特定应用程序。主控制器的驱动软件由操作系统支持,USB 设备开发人员一般只需编写客户驱动程序,实现特定功能,设备端所有功能软件需要全面设计。USB 的四种数据传输模式分别是:控制型传输、中断型传输、批量型传输、实时型传输。第一种在缺省通道中传输USB 接口本身的配置等控制信息,后面三种用于功能部件传输数据。中断型用于键盘等的异步输入输出少量数据传输,批量传输主要用于象硬盘等块设备的数据传输,在中断和批量的传输过程中要传递交互握手信号,确保数据准确无误。实时传输对带宽有严格要求,但允许有一定误码,省去了交互握手信号的传递,常用于音视频码流数据传输。四种类型数据都按带宽要求分配在1ms 一帧的数据帧内进行传输,连到端点(EndPoint)通道.1.1嵌入式系统USB 接口设计

要满足高性能ARM嵌入式系统的要求,扩展USB接口必须选择高性能USB控制器芯片,Philips公司的PDISUBD12 USB器件,是与微处理器配合使用的高性能USB接口器件,性价比很高[2][4]。PDIUSBD12主要特性有:

(1)符合USB 1.1 技术规范;

(2)USB控制器并行接口与处理器间的数据传输速度高达2M 字节/秒;(3)在批量模式和同步模式下均可实现1M 字节/秒的数据传输速率;(4)集成了FIFO存储收发器,支持DMA 操作;(5)内置时钟倍频PLL电路,可编程时钟频率输出;(6)多中断模式实现批量和同步传输;

1.2音频码流USB 设备驱动程序

Windows2000 中各种USB 设备客户驱动程序结构框架基本相同,可以从Windows2000 DDK 中获得USB 设备驱动程序范例代码,对范例代码作少量修改就可以满足特定功能需要。图1 显示了驱动程序各层间的数据传递关系,底层USB 主控制器驱动程序(USB Host Driver)由操作系统提供支持,设备驱动程序只需要对USB Host Driver 上传的I/O 数据包IRP 作出响应,并把要输出数据以IRP 形式下传给USB Host Driver 即可[5] [6]。在ISO(实时型)模式下传输音频码流,USB 客户程序除了WDM(Windows Driver Model)驱动常规处理外,必须计算好带宽,并为驱动程序在非分页存储区内分配好环行缓冲区(Ringbuffer),以便USB 主控制器可以不间断输出实时数据。RingBuffer 的大小按下式 计算:

每帧字节数 × 每缓冲帧数 × 缓冲区数 ; 每传完一缓冲区,USB Host Driver 回调(CallBack)一次客户驱动程序,USB 带宽

按每1ms 传送1 帧数据来分配,要实现8kHz 采样频率、8bits 编码的音频PCM 码流传输,帧数据包大小必须设为8Bytes,若设置4 个缓冲区交替工作,每缓冲区分20 帧传送, 则RingBuffer 的大小为640Bytes,那么USB 主控制器每20ms 的频率中断回调一次客户驱动程序是合适的。驱动程序通过IoSetCompletionRoutine()函数给每个IRP 设置回调函数入口地址[6],每完成一个IRP 缓冲区数据传送操作,回调一次该地址指向的函数,以便把下一缓冲包数据压入到IRP 栈,直到全部数据流传送完毕或人为终止传送。S3C2440A特点

S3C2440A的CPU部分主要集成了电源模块、复位和时钟模块、触摸屏和小键盘模块、程序存储器和数据存储器模块。同时提供如下丰富的外围接口:同步存储器(SDRAM)和NAND FLASH控制接口,可扩展到1 GB的存储的空间;4个DMA通道和24个中断端口;能控制STN LCD和TFT液晶屏显示,支持触摸屏功;USB接口A型和B型各一个;3个串行口、I2C,SPI,I2S等接口;带AC97音频接口;具备SD卡、数码相机接口和网络接口。

S3C2440A还具备多种工作模式,管脚为17×17方型分布,横向从左1到右17编号,纵向从下A到上U编号,分类为A1~A17,B1~B17,C1~C17依此类推到U1~U17。这些管脚所对应的功能并不是惟一的,通常只要使能变化,S3C2440A就能实现不同的控制功能。该设计涉及到的 S3C2440A,其管脚如表1所示分为3类。

串口电路

串口在该设计中的作用是通过计算机加载USB驱动程序,原理如图2所示。

3.1电源电路

由于S3C2440A芯片的管脚对电压提出了不同要求,所以需要完成电源的变压,其原理 如图3所示。驱动程序的研究

按USB接口,其设备结构可分为USB Host(主机)和USB Device(外部设备)。USB主机控制USB设备进行通信,而主机与主机之间,或USB设备与USB设备之间是不能通信的。

4.1 USB主机

USB主机的功能通常包含以下几个部分:验证USB设备是否安插好或拔除;控制USB主机与设备两者中的数据流;返回USB主机的所显状态。

USB系统软件由以下3个部分组成:主机控制器驱动(HCD)、USB驱动(USBD)、主机软件(Host Software)。主机控制器所具备的功能如表2所示。HCD和USBD包含基于不同抽象层次的软件接口,两者以一定的方式协同完成任务,用以实现 USB系统的功能。它们的任务差别没有具体定义,然而HCD要具备的一项功能就是必须支持多种不同主机控制器芯片。在一些操作系统中,当系统必须实现某些基本功能时,可由Host Software实现。

4.2 USB传输类型

USB定义了4种传送类型:控制传送、同步传送、中断传送、批传送。其中,控制传送是指可靠的、非周期性的、突发的,并由主机客户软件所发起的通信,主要应用于控制命令和状态信息的传送;同步传送是指在主机和设备之间周期性的、连续的通信,一般用于传送时实信息,这种类型保留了将时间概念包含于数据的能力,但传送并不一定很紧急;中断传送是指少量数据的、低速的、周期的传送;批传送是指非周期的、大量的、可靠的传送,其典型应用在于传送那些可以利用带宽的数据。

4.3 USB设备请求

USB设备应通过缺省控制管道(Default Control Pipe)响应来自主机的请求命令。这些请求是通过使用控制传输来完成的。请求及请求的参数通过Setup包发向设备,由主机负责设置Setup包内的每个域的值。USB设备请求包含的请求类型有三种:标准、厂商和设备类。标准请求用来完成设备的枚举过程;厂商请求用来完成使用者自己定义的请求;设备类请求指的是某些特定的USB设备类所传输出的请求,例如打印机类就属于这一类。设备请求要求有严格的定义,包含的内容有类型、设备请求、值、索引和长度。

4.4 USB驱动程序结构 S3C2440A芯片支持USB1.1协议和USB 2.0协议。该设计是针对USB Host(主机,A型),并基于USB 1.1协议编写的。程序结构和数据传输的流向如图4所示。

驱动程序的编写主要分为以下几个部分考虑:硬件提取层、中断服务程序、标准设备请求和主循环。硬件提取层实现的是S3C2440A对I/O端口直接的读写操作;中断服务程序处理各种中断,包括总线任务上的请求;标准设备请求完成主机送来的各种标准请求,用于完成各种枚举请求;而主循环则负责完成前台的数据采集等工作,所有的任务结束后都要回到主循环上去。

5结 语

该设计采用三星公司ARM9的S3C2440A芯片作为CPU,比原来基于单片机的模式,外围电路简单,容易可靠地实现嵌入式终端的USB接口功能。在调试中,用到的嵌入式开发板GEC2440A套件还提供了串口工具DNW。用这一工具可以检测驱动程序的正确与否,如:程序编写无误,则DNW串口会提示 “USB IS CONNECT”。由于S3C2440A芯片功能丰富,如处理器可提高运算速度,LCD可人机交互,网口可连接因特网,所以开发出的嵌入式终端不但可提升整体性能,还为日后的应用奠定了基础。

第四篇:基于ARM的嵌入式Linux终端的研讨与实现.

基于ARM的嵌入式Linux终端的研讨与实现

【中文摘要】嵌入式Linux是将普通Linux操纵体系入行剪裁、改动,使之能在嵌入式盘算机体系上运行的一种操纵体系。因为兼有Linux和嵌入式体系的长处,以及ARM Linux因其开放的资源特性,嵌入式Linux体系有着巨大的市场前景和商业机遇。在实际的应用体系中,对操纵体系的实时机能也有一定的请求。好比在通信体系中,如果能对操纵体系的实时机能入行优化,提高体系的响应速度,就可以用软件实现通信协定,下降对硬件的请求,用单芯片实现通信体系,从而下降产品成本。本论文的研讨主要是基于ARM920T硬件平台,该平台主要面向高机能的用户产品开发。在此平台基本上,本文围绕着Linux内核向ARM平台移植中几个核心技术铺开讨论:首先对嵌入式Linux体系体系构造入行了归纳,并详细阐述了与体系移植相关的主要层。接着,给出了启动引导代码Boot Loader和Linux内核初始化部门移植到硬件平台上的整个入程,解决了移植入程中所面临的义务和难题。最后,在对Linux内核驱动模型深入掌握的基本上,深入探讨了QT/Embedded界面的移植。本文最后讨论了一些当前嵌入式Linux实时优化技术。剖析了在胜利移植ARM Linux内核基本上,优化ARM Linux的中止体系,下降体系的中止延时。');【Abstract】 Embedded Linux is an Operating System running on the embedded computer system after cutting and modifying general Linux.Because of the advantages in both open source Linux and embedded system, embedded Linux has large market prospect and commercial chances, now the focus of applications for the embedded Linux has become porting Linux kernel to microprocessor.In some real embedded system applications, real time performances are demanded for operating system like ARM Linux.For example, in communication system, although the speed of ARM920T processors can reach several MHz, the response speed of Linux now is not fast enough.In this case individual hardware communication module should be added to increase the real time performances.If we could optimize the real time property of operating system, then we can realize communication agreement in software, reduce the demand of hardware.Finally we can make communication system in a single chipset and cut down the cost of products.The ***’s research is based on ARM920T hardware platform, which is mainly used for high quality user product developing.On the platform, this text discusses several key technologies about how to porting Linux kernel to ARM platform: first, draw a conclusion of embedded Linux system architecture, and describe related layers of porting system in detail;secondly, write out the whole process on porting Boot Loader and Linux kernel init code to hardware platform, solve faced duties and difficulties;finally, after highly grasp the Linux kernel driver model, deeply discuss porting QT/Embedded inte***ce.Support the project software developing, and greatly reduce the complexity and period in embedded product developing.In the end, we have dropped the conclusion about current cut edge real time technologies for embedded Linux.Based on the successfully ported ARM Linux kernel, optimize its interrupt system, reduce its interrupt delay.

第五篇:基于嵌入式web服务器的远程控制系统 个人报告

课程名称:嵌入式系统的软硬件设计

论文题目:基于嵌入式web服务器的远程控制系统 姓名: 设计背景

随着嵌入式系统的发展和Internet的普及,在嵌入式系统中接入网络已经成为嵌入式系统应用及网络发展的一个重要方向,也是必然结果。嵌入式系统与Internet技术的结合,正逐渐改变着每个人的生活方式、企业的生产方式以及管理方式;从信息家电,手持数码产品到设备管理,工业自动控制,嵌入式Internet技术有着广阔的应用前景。

嵌入式Web服务器是嵌入式系统网络化应用的重要方面。Web技术可跨越诸多设备和系统在硬件和软件产品间做到即连即用,任何计算机只需用Web 浏览器,不需要专门的计算机和专用的软件,即可通过以太网和TCP/IP 协议访问各种信息终端。客户机可任意设置,在全球的任何一个角落,只要能连上Internet 并有权访问Web 服务器,便可查阅现场有关信息,给维护和管理工作带来很大的方便。此外,设备信息通过网页的形式体现,可以使用数据、图表、动画等各种丰富的表现方式。可见,在工业控制领域,各式各样的嵌入式设备与Web 技术的结合,可大大降低软件系统和通信系统的设计和维护的工作量,提高现场测试和控制设备的管理水平,可实现设备远程监控,这是现代化工业生产一大亮点。

结合Web技术的嵌入式设备存在诸多的优势。研究嵌入式Web 服务器,以实现设备远程访问、监测并控制,在科技迅速发展的今天,符合人们对便捷生产、便捷生活的需求,有其重要的现实意义。系统总体方案

通过html语言编写Web控制页面,用户能在Web控制MINI2440开发板,实现对LED和蜂鸣器的控制,以及通过DS18B20温度传感器测量温度,实时传回显示的Web页面上。

蜂鸣器控制浏览器中打开web服务器IP地址占空比输入页面LED状态设置页面CGI函数数据显示页面请求服务器CGI返回PWM设置结果页面CGI返回LED设置结果页面Index主页面LED控制请求服务器温度读取ResponseRequestRequestRequestRequestResponse图1 系统流程图 系统具体设计

首先分析系统的功能需求,我们设计题目是基于嵌入式web服务器的远程控制系统,那么此系统需要完成以下几个功能:

1)WEB服务器的搭建

经过查阅资料我们选择BOA服务器作为本系统的WEB服务器,BOA服务器是一个小巧高效的web服务器,是一个运行于unix或linux下的,支持CGI的、适合于嵌入式系统的单任务的http服务器,源代码开放、性能高。具体的搭建流程参考网络资料。2)控制页面的编写

控制页面主要是通过html语言编写,将页面文件放置在web服务的文件根目录下,等待浏览器访问web服务器时,服务器能够自动的返回我们所编写的页面,从而实现与远程的交互 3)服务器端CGI程序的编写

根据html和CGI调用的规范,我们将事先写好的程序编译成CGI文件放置到web服务器的相应文件夹中,当有相应的请求发生时,web服务器会自动条用相应的CGI程序。4)linux驱动的编写

linux驱动主要涉及LED驱动、PWM驱动及DS18B20驱动。

4个人承担任务

(1)蜂鸣器CGI设计

(2)LED驱动编写

5任务内容 5.1.蜂鸣器CGI 5.1.1公共网关接口CGI 公共网关接口CGI是Web 服务器的一种标准规范,用来将Web 用户的请求传递给服务器的应用程序,并将接收到的数据回送给Web 用户。每当用户向Web 服务器提交一个页面请求(例如,点击一个超链接或输入一个网站地址),Web 服务器会将用户请求的存放在服务器上的网页返回给用户。然而,当用户提交一个带有表单(form)的请求网页时,在服务器端需要接收表单内容,必要时还要根据表单内容作必要的处理。一般来说,Web 服务器并不能直接处理表单,而是把表单内容传送给服务器的一个小型应用程序,由该程序对表单数据进行处理并回送必要的确定信息。这种在Web 服务器与应用程序之间往返传递数据的方法或规范称之为“公共网关接口(Common Gateway Interface)”,简称CGI。

5.1.2蜂鸣器CGI程序任务

CGI 程序需要从Web 服务器接收用户信息,对该信息进行必要处理,最后返回处理结果.根据CGI规范以及本系统设计要求,CGI 需要完成下列任务:(1)接收用户信息

我们在蜂鸣器WEB页面设置控制蜂鸣器频率的PWM占空比,用户浏览器将请求页发送给Web 服务器,由Web 服务器创建一个子进程,在子进程中调用CGI 程序,通过环境变量将用户信息传递给CGI 程序。(2)解码用户信息并处理

用户浏览器请求页在向Web 传递过程中首先被编码,以适合于使用HTTP 协议在网络上传送.因此,当用户信息通过Web 服务器传递给CGI 程序后,CGI 程序要对接收到的用户信息进行解码,将其还原成初始信息,或者设置的占空比,并驱动蜂鸣器工作。(3)生成HTML 网页

将驱动蜂鸣器工作后的结果动态生成HTML 网页,通过Web 服务器回送给用户浏览器,因为用户浏览器要接收的必须是HTML 网页。

5.1.3蜂鸣器CGI程序

(1)获得Web 服务器传递的信息 data = getenv(“QUERY_STRING”);

Web 服务器将一些关键性信息,如请求方法(GEG、POST 等)、请求页类型、用户主机地址等设置为相应的环境变量。在CGI 程序中,调用系统函数getenv(),读取这些环境变量,获得Web 服务器传递的信息。(2)获取占空比

sscanf(data,“beep_control=%d”,&beep_control);从Web 服务器传递的信息中获取占空比值并保存在beep_contro中。(3)驱动蜂鸣器工作

set_duty(fd_beep, beep_control);调用该函数使蜂鸣器以占空比beep_control对应的频率发出声音,fd_beep是驱动设备文件的文件描述符。

voidset_duty(intfd, int duty){ ioctl(fd, PWM_IOCTL_SET_TCNTB, 1000);

ioctl(fd, PWM_IOCTL_SET_TCMPT, duty);

ioctl(fd, PWM_IOCTL_START);} 其中,ioctl是驱动中的函数,实现对PWM的一些控制,设置定时器计数值1000,占空比duty。

#define PWM_IOCTL_START

_IO(PWM_MAGIC, 0)#define PWM_IOCTL_SET_TCNTB _IOW(PWM_MAGIC, 1, int)#define PWM_IOCTL_SET_TCMPT

_IOW(PWM_MAGIC, 2, int)这三个CMD分别为启动PWM定时器、第二个为设置PWM中TCNTB寄存器的值用于设定定时器的计数值、第三个为设置PWM中TCMPT的值用于设定占空比。(4)生成HTML 网页

cgiHeaderContentType(“text/html”);//CGI响应内容格式

fprintf(cgiOut, “”);fprintf(cgiOut, “Beep CGI”);

fprintf(cgiOut, “”);fprintf(cgiOut, “

Control beep

”);fprintf(cgiOut, “
”);printf(“set the duty of beep is %d n”, beep_control);fprintf(cgiOut, “
”);fprintf(cgiOut, “ ”);

//添加返回按钮 fprintf(cgiOut, "

下载基于ARM-Linux的嵌入式HTTPS服务器与实现.word格式文档
下载基于ARM-Linux的嵌入式HTTPS服务器与实现..doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐