由于MTD的主要目的是为了使新的memory设备的驱动更加简单,因为它介于特定的闪存设备和文件系统之间,可以理解为它在硬件和上层之间提供了一个抽象的接口。所以硬件驱动程序不需要知道象JFFS2和FTL那样的用户模块使用的方法。所有它们真正需要提供的就是一组对底层闪存进行read、write和erase操作的简单例程,即/mtd目录下mtd-utils.c相应函数。将mtd-utils.c继承过来,另外,加上手工添加的flash分区表即可达到配置文件保存的目的。
配置信息的保存
本系统只有一片FLASH,大小为2M。拟分区如下:
nAME:bootloader(128KB),
size:0x20000,
offset:0x0,
mask_flags:MTD_WRITEABLE//只读分区
name:kernel&rootfs(1856KB),
size:0x1D0000,
offset:0x20000
name:SystEMConfig(64KB),
size:0x10000,
offset:0x1F0000
将包含本分区表的文件放在drivers/mtd/map下,并修改相应的makefile使之编译时有效。
然后,选择适当的MTD用户模块,启用对闪存的访问:MTD_CHAR和MTD_BLOCK。MTD_CHAR提供对闪存的原始字符访问,而MTD_BLOCK将闪存设计为可以在上面创建文件系统的常规块设备(象IDE磁盘)。与MTD_CHAR关联的设备是在/vendor/Samsung/4510B/makefile的DEVICES中添加mtd0,c,90,0、mtd1,c,90,2、mtd2,c,90,4,而与MTD_BLOCK关联的设备是添加mtdblock0,b,30,0、mtdblock1,b,30,1、mtdblock2,b,30,2。
最后,需要将MTD子系统编译到内核中,即打开makemenuconfig里MTD相关的选项。
9.配置信息的管理
在thttpd.c的main函数,加入open(/dev/mtd2,O_RDWR)可打开mtdblock2。将drivers/mtd下mtd-utils.c复制到user/thttpd目录下,即可使用其中的一些函数方便的实现flash的read和write操作。
10.结语
对于嵌入式Web服务器的研究和应用,其意义是重大的。它为我们管理、控制和监测各种各样设备提供了一个很好的途径。这种设备可以是具有有限内存资源的8位或16位系统,已足够提供一个用户界面,而且这种方式是基于Internet的。这种设备可以在世界任何一个地方,只要它连入Internet就能够控制它。
目前国外的相关研究很多,如Pharlap公司的MicroWeb、AgranatSystEMS公司的EmWeb、EmWare公司的emMicro、Allegro公司的RomPager、WindRiver公司的Wind,还有Boa、Enea、PicoWeb、ChipWeb、Ipic、NetAcquire、Voyager、Quiotix等。国内的有Webit。
创新:
1. 嵌入式web技术的应用已越来越广泛,但大多采用比较简单的服务器BOA,真正深入应用功能更强大的Thttpd的方案少之又少,本文正是Thttpd在实际应用中的深入研究。
2. 本文根据监控系统对数据吞吐量和安全可靠性等各方面的实际要求,结合相关研究的新进展,深入讨论了web服务器在监控系统设计中的应用技巧,并详细做了实现上的阐述。文中涉及的某些技术应用技巧,譬如web server的功能框图,可广范应用于各种基于嵌入式web技术的系统中去。譬如路由器设计。