1)、对于uClinux-dist而言,就是make menuconfig在应用程序选单中,在network application下面选择boa,然后到uClinux-dist目录下执行make编译即可。
对于有MMU的平台,如armlinux和ppclinux,都是到网上下载一个boa的tar包,随便找个主流的可用的版本即可,不要最新的也不要最旧的。下载到REDHAT宿主机上后,解压到任意目录,然后修改boa/src/Makefile里面的编译器,就只要加入两三行即可,例如:
CC = /LinuxPPC/CDK/bin/powerpc-linux-gcc -DHHTECH_PPC
CPP = /LinuxPPC/CDK/bin/powerpc-linux-g++
然后直接在boa/src目录下执行make即可生成boa可执行文件,将其复制到ramdisk加载mount的目录的bin里面,然后等一同加入后面的配置文件和HTML/CGI文件后,重做ramdisk即可。
(2)、编制配置文件boa.conf
LINUX下的应用程序的配置都是以配置文件的形式提供的,一般的都是放在目标板/etc/目录下或者/etc/config目录下,但boa的配置文件boa.conf一般都放置在目标板/home/httpd/目录下。
例如一个典型的boa.conf文件格式如下:
ServerName HHCF5272-R1
DocumentRoot /home/httpd/html
ScriptAlias /cgi-bin/ /home/httpd/cgi-bin/
ScriptAlias /index.html /home/httpd/html/index.html
它指定了HTML页面(例如index.html必须放到/home/httpd/html目录下,cgi可执行文件必须放到/home/httpd/cgi-bin目录下)
(3)、编译uClinux-dist后或者重做ramdisk后,烧写后在一台WINDOWS的PC机上就可以用IE访问板子上的webserver,例如输入板子IP地址http://192.168.2.111,即可看到你用dreamweaver做的网页index.html了。但这里只能做到对静态页面的支持,若要支持FORM表单处理和动态页面,就必须用C代码编制CGI代码,uClinux-dist/user/cgi-generic目录下提供了样板代码,或者可以从华恒公司购买。注意:这个CGI的可执行文件必须放置到板子的/home/httpd/cgi-bin目录下。
建议阅读文章:
http://www.51eda.com/Article/embed_system/rtos/200405/806.html
关于auth选项
8.关于PPP拨号
(1)、首先是根据板子的串口2的信号定义制作串口线接MODEM,例如HHCF5249/5272系列平台就要将接MODEM的串口线2、3交换,7、8交换。做好线之后,可用tip软件进行与MODEM通信的测试:
tip -l /dev/ttyS1 -s 19200
显示connected后,用户就可以输入AT命令直接与MODEM对话了,这样做的目的是测试串口线。
(2)、配置内核支持PPP,并编译拨号用相关应用程序:pppd/chat。关于内核支持,就是make menuconfig在内核配置的Network device support ---> 中选择PPP/SLIP/CSLIP等,具体细节选项可任选,其实全部选中就可以了。关于应用程序的做法,和上面boa的做法完全类似。
(3)、编译拨号脚本和相关配置文件。做拨号必须先在REDHAT上手工拨号成功(不要用图像界面),然后才能到板子上做测试。而且,这只是第一步,简单的拨号上去并没有任何意思,因为产品过程中,还要涉及许多的应用细节,例如断线重拨检测,开机自动拨号,无流量自动断开,有流量自动拨号等,都是非常麻烦的细节,需要做长时间大量的稳定性可靠性测试。华恒提供经过全球各大城市测试稳定应用的拨号软件(GPRS/ADSL),可大大节省用户产品的上市时间。
我用了uclinux下的boa服务器,写了些cgi程序,用printf()能输出英文显示在windows浏览器上,但中文无法显示,怎么能显示中文啊?
可以把静态页面的中文显示出来,但不能把cgi程序中的中文显示出来,
main()
{
input inputs[10];
int len;
int ch;
FILE *fp;
int s[100];
char p[100];
char accounts[20],password[20];
int i=0,j=0,k=0;
printf("Content-type:text/html\n\n");
len=atoi(getenv("CONTENT_LENGTH"));
for(i=0;len&&(!feof(stdin));i++)
{
inputs[i].val=ReadStdin(stdin,'&',&len);
AddToSpace(inputs[i].val);
Convert(inputs[i].val);
inputs[i].name=ReadData(inputs[i].val,'=');
}
fp=fopen("/tmp/register","w+");
if(fp==NULL)
exit(1);
if(strcmp(inputs[1].val,inputs[2].val)==0)
{
fp=fopen("/tmp/register","w+");
fwrite(inputs[0].val,strlen(inputs[0].val),1,fp);
fputc('=',fp);
fwrite(inputs[1].val,strlen(inputs[1].val),1,fp);
fclose(fp);
fp=fopen("/home/web/html/change_success.html","r");
//chang_success.html中的中文能显示出来
if(fp==NULL)
exit(1);
while(!feof(fp))
{
ch=fgetc(fp);
putchar(ch);
}
fclose(fp);
}
else
{
printf("出了问题");//这里的中文无法输出
}
}
显示的是Invalid multibyte format string,
不知道怎么解决????
my email
soq916@sina.com