查看: 2504|回复: 5

[原创] 【fireprime】给fireprime移植boa服务器,通过网页可以控制led啦

[复制链接]
  • TA的每日心情
    开心
    2020-11-23 14:54
  • 签到天数: 19 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2015-11-11 10:09:17 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 caizhiwei 于 2015-11-12 09:13 编辑

         boa服务器还是非常经典的服务器,适合小型的arm-linux系统!
    下面是我总结的移植步骤,分享给大家:

    1. 到Boa的官方网站:  www.boa.org, 或另一个下载地址:http://sourceforge.net/projects/boa/files/下载源码boa-0.94.13.tar.gz。
    2. 将boa-0.94.13.tar.gz解压到home/forlinx目录下得到 boa-0.94.13目录。root@LinuxServer:/home/forlinx#tar -zxvf boa-0.94.13.tar.gz
    3. 进入boa-0.94.13/src 目录,执行 root@LinuxServer:/home/forlinx/boa-0.94.13/src# ./configure,执行后会自动在 src目录下将生成 Makefile文件,打开Makefile文件。
    4. 修改所使用的编译器:用gedit打开makefile文件做如下修改。  
    CC=gcc           
    改为:CC=arm-linux-gcc  
    CPP=gcc–E      
    改为:CPP=arm-linux-gcc –E
    5. 编译并优化:
    修改/src/compat.h中的
    #define  TIMEZONE_OFFSET(foo)  foo##->tm_gmtoff
    为:
    #define  TIMEZONE_OFFSET(foo)  foo->tm_gmtoff
    否则会报错util.c: 100: 1: pasting“t” and “->” does not give a valid preprocessing token make: [util.o] Error1
    然后,src目录下执行make命令,开始一键make!
    make 之后可能不是那么顺利哦,会遇到各种trouble!!!
    boa服务器make错误 - 三心草的日志 - 网易博客
    http://zhouyang340.blog.163.com/blog/static/3024095920121187544204/
    成功后,将在src目录下生成boa可执行文件(大致256K),可去掉boa的调试信息对其进行优化,执行命令 #arm-linux-strip boa 后, boa 变得只有 60k大小。如图1所示:
    无标题.png
    1 编译后生成的boa可执行文件
    6. 修改配置文件boa.conf
    复制ubuntu上/home/forlinx/boa-0.94.13/boa.conf文件到开发板的/etc/boa/目录下,修改权限#chmod –R777 boa并修改如下内容。
    1. <font size="3">Port 80   
    2. User root   
    3. Group 0   
    4. ErrorLog /dev/console   
    5. AccessLog /www/log/boa/error_log   
    6. ServerName http://caizhiwei.com/
    7. DocumentRoot /www   
    8. DirectoryIndex index.html   
    9. KeepAliveMax 1000   
    10. KeepAliveTimeout 10   
    11. MimeTypes /etc/mime.types
    12. DefaultType text/plain   
    13. CGIPath /bin:/usr/bin:/usr/sbin:/sbin   
    14. ScriptAlias /cgi-bin / /www/cgi-bin/    </font>
    复制代码
    以上参数说明:
    其中的一些设置的说明和可能出现的错误情况分析如下:  
    (1) Port 80  
    监听的端口号,默认都是 80  ,无需修改。  
    (2) User root  
        User 后面对应一个用户
    (3) Group root  
    Group对应 group文件中一个组。作为哪个用户组,即它拥有该用户组的权限,一般都是root ,需要在/etc/group 文件中有 root 组。
    (4) ErrorLog/www/log/boa/error_log  
    错误日志文件,error_log  记录了 boa  的运行日志,如果发现运行错误通过 #cat/www/log/boa/error_log就可查看错误信息。  
    也可以设置为: ErrorLog /dev/console   则在 boa 运行是错误信息直接从串口终端输出。如果不需要错误日志,则用/dev/null。
    (5) AccessLog/www/log/boa/error_log  
        访问日志文件。如果不需要错误日志,则用/dev/null或者直接注释掉。
    (6) ServerName  http://embedclub.taobao.com/  
         该项默认是注释掉的, ServerName后面的内容任意取,表示服务器名字。该项必须打开,否则运行 boa时会异常退出,提示“get host by name::Nosuch file or directory  ”。  
    (7) DocumentRoot  /www  
    存放 HTML文档的主目录,这里对应根文件系统的 www目录。  
    (8)  DirectoryIndex index.html  
    HTML 目录索引的文件名。  
    (9) KeepAliveMax1000  
    一个连接所允许的 HTTP持续作用请求最大数目,注释或设为 0 都将关闭 HTTP 持续作用。  
    (10) KeepAliveTimeout10  
    HTTP持续作用中服务器在两次请求之间等待的时间数,以秒为单位,超时将关闭连接。  
    (11) MimeTypes/etc/mime.types  
         指明 mime.types  的位置。  
    (12) DefaultTypetext/plain  
    文件扩展名没有或未知的话,使用的缺省MIME类型。  
    (13) CGIPath/bin:/usr/bin:/usr/sbin:/sbin  
    提供 CGI程序的 PATH环境变量值。  
    (14) ScriptAlias/cgi-bin/ /www/cgi-bin/  
    指明 CGI脚本的虚拟路径对应的实际路径,一般所有的CGI 脚本都要放在实际路径里,用户访问执行时输入站点IP+虚拟路径+CGI脚本名。
    其中,/cgi-bin/ 表示虚拟路径; /www/cgi-bin/ 表示实际路径。  
    7. 创建与 boa.conf 相关的目录与文件
    创建HTML文档的主目录:/www
    创建日志文件所在目录:/www/log/boa
    创建CGI 脚本所在录: /www/cgi-bin
    创建日志文件:/www/log/boa/ error_log
    步骤如下:
    1. <font size="3">cd /opt/rootfs
    2. mkdir www
    3. chmod –R 777 www   
    4. mkdir –m 777  www/cgi-bin  
    5. mkdir www/log   
    6. mkdir www/log/boa  
    7. cd www/log/boa   
    8. touch error_log  </font>
    复制代码
    8.最后一步了,先拷贝Ubuntu主机/etc/mime.types文件到开发板/etc 目录下。 #cp /etc/mime.types/opt/rootfs/etc
    将步骤5中编译好的boa拷贝根文件系统的/bin目录下:   
    #cp boa/opt/rootfs/bin
    运行开发板中的boa 程序; #./boa如果发现错误,不要急,按照错误号修改代码重新编译,直到成功!
    9.静态网页测试:
    StLib V3.5的固件库下的index.html(谁便找了一个),复制到/www目录下,重启开发板,启动boa服务 #boa . 在浏览器中输入开发板ip:
    无标题11.jpg
    3 静态网页测试
    10. CGI功能测试:
    编写HelloCGI.c程序(注意:printf语句以Tab开始)
    1. int main ( void )
    2. {
    3.         printf ("Content-type: text/html\n\n");
    4.         printf ("<html>\n" );
    5.         printf ("<head><title>CGI Output</title></head>\n" );
    6.         printf ("<body>\n" );
    7.         printf ("<h1>Hello,i'm caizhiwei !.</h1>\n");
    8.         printf ("<body>\n" );
    9.         printf ("</html>\n");
    10.         exit ( 0 );
    11. }
    复制代码
    在主机上交叉编译:
    # arm-arago-linux-gnueabi-gcc  helloCGI.c -o helloCGI
    helloCGI拷贝至根文件系统的/www/cgi-bin/下,重启开发板,启动boa,
    在浏览器输入: http://192.168.0.59/cgi-bin/helloCGI  
    网页出现Hello,i'm caizhiwei!调试成功!如图所示:
    无标题111.jpg
    4 CGI功能测试
    11. 动态WEB页面测试
    11-1.CGIC库源代码下载
    从CGIC的主站点http://www.boutell.com/cgic/  下载源码,当前最新版本是 2.06版。
    11-2. CGIC库配置  

    解压 cgic205.tar.gz到/home/forlinx目录,得到cgic205目录。
    # tar xvzfcgic205.tar.gz
    # cd cgic205
    修改makefie文件中的编译工具:
    CC=gcc
    改为CC=arm-linux-gcc   
    AR=ar      
    改为  AR=arm-linux-ar  
    RANLIB=ranlib  
    改为  RANLIB=arm-linux-ranlib  
    gcc cgictest.o -o cgictest.cgi ${LIBS}      
    改为:  $(CC) $(CFLAGS) cgictest.o -o cgictest.cgi${LIBS}   
    gcc capture.o -o capture ${LIBS}   
    改为:  $(CC) $(CFLAGS) capture.o -o capture${LIBS}   
    11-3. 编译和优化  
    执行 make 命令得到的CGIClibcgic.a 并生成调试辅助程序 capture和测试程序cgictest.cgi文件 , 执行 # arm-arago-linux-gnueabi-stripcapture命令对生成的 capture文件进行优化,减小大小。capture 由原来的100K左右变成 29K 左右。
    11-4.测试
    拷贝以上生成的 capture和cgictest.cgi可执行文件到根文件系统的www/cgi-bin目录下。重启运行如图5所示。  
    无标题111.jpg
    5 动态网页测试
    服务器程序可以通过三种途径接收信息:环境变量、命令行和标准输入。具体使用哪一种方法要由<FORM> 标签的Method属性来决定。在“Method=GET”时,向CGI 程序传递表单编码信息的正常做法是通过命令来进行的。
        大多数表单编码信息都是通过 Query-String 的环境变量来传递的。如果
    Method=POST”,表单信息将通过标准输入来读取。还有一种不使用表单就可以向CGI 传送信息的方法。那就是把信息直接追回在URL 地址后面,信息和URL 之间用问号(?)来分隔。本测控系统采用的是GET方法。
    接下来你可以搞一个远程控制LED闪烁快慢的程序玩玩哦。Enjoy it !
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2020-11-23 14:54
  • 签到天数: 19 天

    连续签到: 1 天

    [LV.4]偶尔看看III

     楼主| 发表于 2015-11-12 09:15:56 | 显示全部楼层
    编辑帖子也需要费不少时间呢,中英文字体还是 没有统一,有些编辑没有起作用~~~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2020-9-28 10:10
  • 签到天数: 1018 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2015-11-12 09:19:13 | 显示全部楼层
    高高高,必须顶村长
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-6-27 13:03
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2015-11-12 09:33:11 | 显示全部楼层
    慢羊羊村长果然利害
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-6-27 13:03
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2015-11-12 09:36:56 | 显示全部楼层
    不会用linx,只会用MDK,coide+gcc


    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2017-7-17 13:49
  • 签到天数: 367 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2015-11-12 10:24:21 | 显示全部楼层
    顶一下羊村长的最新研究成果
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-4-20 09:00 , Processed in 0.162240 second(s), 25 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.