|
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统 驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe |
goAhead WebServer在VxWorks上的移植笔记 |
作者:q1a1z1 栏目:嵌入式系统 |
goAhead WebServer在VxWorks上的移植笔记 goAhead是一款功能比较全的开源嵌入式web server。 goAhead支持asp,嵌入式javascript,CGI以及静态页面html格式。 快速响应,每秒可处理超过50个请求。 如果不包含SSI,仅要求60K的内存;包含SSI,要求500K内存。 web页面可以存在ROM或文件系统中。 支持多种操作系统,包括VxWorks,LINUX,Windows,WinCE,pSOS等。 (一)编译源代码 1,我使用的VxWorks开发环境是Tornado2.2,把goAhead所有的源码加到自己VxWorks image编译环境中, 这个步骤可以使用Tornado来做,也可以直接修改makefile文件,建议直接修改makefile。 2,定义5个宏,-DWEBS_PAGE_ROM -DWEBS -DUEMF -DOS="VXWORKS" –DVXWORKS makefile可以把宏传递给源文件,作用就相当于在预编译的每个每个文件中定义了这样的宏。 比如你要定义宏 WEB,就可以直接在cc后面加-Dmacro: $(CC) -DWEB 3,编译时你会发现编译不通过,说websSSL.c出错,好的,我们把这个文件remove掉,另外webcomp.c也要去除,一切ok。 (二)加入web页面文件。 web页面在iamge中存放形式有2种,一是按原目录存放在嵌入式文件系统中,二是把所有的页面文件压缩后存为静态全局数组。 嵌入式应用中大部分没有标准的文件系统,所以这里我们也使用静态数组的方式。 源码中判断一个宏“WEBS_PAGE_ROM”,如果没有定义这个宏,他就按标准的read文件方式去文件系统中取页面文件数据; 如果定义了这个宏就到数组中取数据。这就是为什么我前面要定义一个WEBS_PAGE_ROM宏。 另外在main.c中要把根路径修改成webs #define ROOT_DIR T("webs") (三)如何把页面文件压缩进数组 goAhead想得很周全,专门为压缩进数组写了一个文件合并程序,就是webcomp.c,在linux中编译这个文件。 进入linux子目录,修改Makefile文件,加入下面的内容: comp: $(CC) -I../ -I./ -o webcomp $(DEBUG) $(CFLAGS) $(IFLAGS) $(LDFLAGS) ../webcomp.c find ../web -NAME "*.*" > websfile ./webcomp ../web websfile > ../webrom.c 执行make comp最后有点错,不要理会。 这样../webrom.c内容已经被修改,大小看你的web页面文件的总大小了,我把goAhead中的web压缩了有1M。 然后把这个webrom.c考过来替换你的webrom.c。 (四)启动web server服务 web server只用了系统的SOCKET协议栈和定时器,自己没有建任务,所以为了性能监视方便,建议专门建一个任务给他。 这样web server的内存使用,任务状态就可以看到了。 如果不建任务就要在别的任务,或者干脆在usrAppinit()中加入web server入口“main(0,0)”。 到此为止全部结束,我的程序用了1M,页面上面说过1M,这样image增加了2M!!!,太大了。 对于有些OS没有完整的TCP stack,对于goAhead web server的移植就有点麻烦了,还得按照标准的协议栈补全。 如果大家碰到什么问题,欢迎和我讨论,myxy1997@hotmail.com,myxy1997@163.com 参考资料: 1,GoAhead WebServer移植小结 by rover2 http://bbs.edw.com.cn 2,跟我一起写Makefile by 陈皓 3,goAhead web server doc by goAhead Inc. |
2楼: | >>参与讨论 |
作者: hgchenkv 于 2006/9/2 13:32:00 发布:
谢谢了 |
|
|
免费注册为维库电子开发网会员,参与电子工程师社区讨论,点此进入 |
Copyright © 1998-2006 www.dzsc.com 浙ICP证030469号 |