之前分享的文章中提到了几种可以在嵌入式中使用的web服务器。嵌入式web服务器就是把web服务器移植到嵌入式系统的服务器。它仍然是基于http文本协议进行通信的,具有标准的接口形式,对客户端来说,访问嵌入式web服务器就和访问普通的web服务一样。 我们在实际工作中也有在板子上搭建web服务器,给我们调试带来了一些便利,可以通过网页与板子进行交互,板子在没有显示屏的情况下,也可以作为一种方案来进行功能展示。web服务器boa 本文演示如何把boa移植到开发板上,boa是一个小巧的web服务器,可执行代码只有70KB,占用的系统资源少,速度快安全性能高。 boa官网: www。boa。org 下载的版本: boa0。94。13。tar。gz 本片文章关于web服务器的使用需要依赖于网络,可以参考我们上一篇笔记搭建开发板地WiFi环境:实用如何远程登录开发板?。boa交叉编译 下载得到boa0。94。13。tar。gz,解压后进入boa0。94。13src目录,执行如下命令生成Makefile文件:。configure 修改Makefile,设置交叉编译器。找到CC和CPP变量,修改为:CCarmlinuxgnueabihfgccCPParmlinuxgnueabihfgccE 执行make编译。编译报错如:armlinuxgnueabihfgccgO2pipeWallI。coresponse。oresponse。carmlinuxgnueabihfgccgO2pipeWallI。coselect。oselect。carmlinuxgnueabihfgccgO2pipeWallI。cosignals。osignals。carmlinuxgnueabihfgccgO2pipeWallI。coutil。outil。cInfileincludedfromboa。h:50:0,fromutil。c:26:util。c:Infunctiongetcommonlogtime:util。c:100:39:error:pastingtanddoesnotgiveavalidpreprocessingtokentimeoffsetTIMEZONEOFFSET(t);compat。h:120:30:note:indefinitionofmacroTIMEZONEOFFSETdefineTIMEZONEOFFSET(foo)footmgmtoff内置:recipefortargetutil。ofailed 把compat。h文件里的:defineTIMEZONEOFFSET(foo)footmgmtoff 修改为:defineTIMEZONEOFFSET(foo)footmgmtoff 再次编译,可以编译通过则会在当前路径下生成boa可执行文件: boa配置 把Ubuntu的etc目录下的mime。types文件传到开发板的etc目录下。注:这是MIME(多用途因特网邮件扩展),这是web服务器支持的规范。 在开发板etc目录下创建boa文件夹(用于存放boa的配置文件及log文件):cdetcmkdirboa 在开发板根目录下建立www文件夹,www目录下面建立文件夹cgibin目录(用于存放后期页面及交互代码):mkdirpwwwcgibin 把boa0。94。13目录下的boa。conf文件传到开发板的etcboa目录下。scpboa。confroot192。168。1。10:etcboa 把boa可执行程序传到开发板的bin目录下。scpboaroot192。168。1。10:bin 在开发板etc目录下创建group文件:cdetctouchgroup 在开发板上使用vi编辑器打开etcboa目录下的boa。conf文件,需要做如下修改: 把里面的Groupnogroup改为Group0。 把ErrorLog和AccessLog这两行,指定log文件的路径,把log保存到etcboa目录下,修改如下:ErrorLogetcboaerrorlogPleaseNOTE:Sendingthelogstoapipe(),asshownbelow,issomewhatexperimentalandmightfailunderheavyload。Usuallibcimplementationsofprintfwillstallthewholeprocessifthereceivingendofapipestopsreading。ErrorLogusrsbincronologsymlinkvarlogboaerrorlogvarlogboaerrorYmd。logAccessLog:Thelocationoftheaccesslogfile。Ifthisdoesnotstartwith,itisconsideredrelativetotheserverroot。Commentoutorsettodevnull(lesseffective)todisableAccesslogging。AccessLogetcboaaccesslog 把ServerNamewww。your。org。here这一行,修改为ServerNamewww。your。org。here:ServerName:thenameofthisserverthatshouldbesentbacktoclientsifdifferentthanthatreturnedbygethostnamegethostbynameServerNamewww。your。org。here 然后找到DocumentRootvarwww这一行,修改为DocumentRootwww:DocumentRootwww 然后找到ScriptAliascgibinusrlibcgibin这一行,修改为ScriptAliascgibinwwwcgibin:ScriptAliascgibinwwwcgibin 上面就是boa。conf配置文件需要修改的几点内容。 最后,进入我们前面创建的www目录,然后使用viindex。html命令建立index。html网页文件进行测试,关于简单网页的设计大家可以上网搜一些教程。这里我们设计一个简单的网页如:htmlheadtitleboa服务器测试titleheadbodystylebackgroundcolor:000000;paddingleft:300px;paddingtop:100px;pstylecolor:white;textalign:left;width:190px;height:45px;fontsize:30px;fontfamily:微软雅黑;paddingleft:5px;嵌入式大杂烩pstylecolor:red;fontsize:20px;fontfamily:微软雅黑;ZhengNpstylecolor:yellow;fontsize:20px;fontfamily:微软雅黑;textalign:left;本公众号专注于嵌入式技术,包括但不限于CC、嵌入式、物联网、Linux。bodyhtml 保存并退出index。html。到了这一步我们的web服务器就大致搭建完成了,服务器上有一个简单的网页文件index。html。 下面进行简单的测试: 在我们的开发板上输入boa命令启动web服务器。 输入如下命令查看boa程序是否启动成功:psegrepboa boa进程启动成功后,在浏览器中输入我们开发板的IP地址就可以访问到index。html网页: 可见,我们可以通过浏览器访问我们使用开发板搭建的web服务器上的网页,表明我们已经成功在开发板搭建了基于boa的web服务器。 本文只是简单地演示打通开发板web服务器环境并设计了一个简单地网页,后续我们再继续来探究如何通过网页来与我们的开发板进行交互,如:通过网页点亮开发板上地led、把开发板上地一些数据传到网页上进行显示等内容。 猜你喜欢: 必知必会如何理解GNU? 手头上无LCD却又急着开发UI?LCD模拟器了解一下 LittlevGL在STM32上的移植使用 1024G嵌入式资源大放送!包括但不限于CC、单片机、Linux等。私信回复1024,即可免费获取!