ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:101.01KB ,
资源ID:16204353      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16204353.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验指导书文档格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实验指导书文档格式.docx

1、function loadXML() if(window.ActiveXObject) XMLdoc = new ActiveXObject(Microsoft.XMLDOM); XMLdoc.async = false; XMLdoc.load(adc.xml getmessage(); setTimeout(loadXML(), 1000);function getmessage() document.getElementById(ch_0).innerHTML = XMLdoc.getElementsByTagName()0.childNodes0.nodeValue;ch_1ch_2/

2、scriptbody onload= bgcolor=AD远程测试实验/thtr td align=通道0span id=/spanV通道1通道2/192.168.1.133/cgi-bin/stop.cgi停止采集/这个文件的页面就是我们在按下上面的Index.html的查看按钮后跳转过来的,效果如下图所示:它分别显示了我们的开发板上的三个AD通道的采样值,为简单起见,我们只保留一位小数。上面的文件中包含了HTML代码和JavaScript脚本。详细介绍一下JavaScript脚本。该脚本定义了两个函数:loadXML和getmessage,文件中用红色标示出来了。使用这个脚本的目的就是让页

3、面能动态更新数据,而不用我们手动对页面进行刷新。LoadXML函数在页面被打开时调用,在该函数的末尾有这样一句:setTimeout(它的作用就是让这个函数每1000毫秒(也就是1秒)重新执行一次,如果要改变刷新频率,那么把1000改成你想要的数据即可。考虑到服务器的承受能力,这个值不能取得太小。Getmessage函数被loadXML函数调用,它的作用就是从服务器的adc.xml文件中解析出我们需要的数据,在页面上显示。因此,这个函数和服务器上的adc.xml文件是紧密相关的。Adc.xml文件的全部内容如下:?xml version=1.0 encoding=UTF-8measurech_

4、00.0ch_11.0ch_23.0stopA/measure我们的后台服务程序也会对这个文件进行读写,从而达到服务器和用户进行数据交换的目的。三、服务器后台程序这里所谓的服务器后台程序就是对AD进行采样的程序,该文件叫做run.c,全部内容如下:#include fcntl.hsys/ioctl.hunistd.htime.hvoid getdata(char *buff, int adcfd, int ret) int temp; int i=0, j; for(j=0; j3; j+) ioctl(adcfd, j, 0); read(adcfd, &temp, sizeof(int);

5、 temp += 16; temp = temp/31; for(; iret; i+) if(buffi = ) & (buffi+1 = c (buffi+2 = h) break; buffi+6 = (temp/10) + 48; buffi+8 = (temp%10) + 48; i+; void lock_set(int fd, int type) struct flock lock; lock.l_whence = SEEK_SET; lock.l_start = 0; lock.l_len = 0; lock.l_type = type; while(1) if(fcntl(f

6、d, F_SETLK, &lock) = 0) return;int main(void) pid_t pc; int adcfd, xmlfd, ret; unsigned char buff150; int i; pc = fork(); if(pcContent-type:text/htmlnnbody bgcolor=cyanmeta http-equiv=refresh content=1;url=http:/192.168.1.133/adc.html exit(0); else setsid(); /脱离父进程 chdir(/ /改变当前目录 umask(0); /重设文件权限掩

7、码 for(i=0;i65535;i+) /关闭设备文件描述符 close(i); adcfd = open(/dev/adc, O_RDWR); if(adcfd 0) printf(Cannot open adc device! return adcfd; while(1) while(1) xmlfd = open(/var/www/adc.xml/打开标志文件 if(xmlfd continue; else lock_set(xmlfd, F_WRLCK);/给文件上锁,避免其他进程对该文件进行写操作 break; ret = read(xmlfd, buff, 150); for(i

8、=0; if(buffi = $) buffi = A; lseek(xmlfd, 0, SEEK_SET); write(xmlfd, buff, ret); lock_set(xmlfd, F_UNLCK); close(xmlfd); close(adcfd); return 0; getdata(buff, adcfd, ret); lseek(xmlfd, 0, SEEK_SET); write(xmlfd, buff, ret); lock_set(xmlfd, F_UNLCK); close(xmlfd); sleep(1); close(xmlfd); close(adcfd)

9、; return 0;这个程序就不详细分析了,简单说一下原理,其他内容可以查看程序中的注释。这个程序是在点击第一个页面(index.html)上的“查看”按钮后执行的。程序的开始会调用fork来创建两个线程:一个主线程,用于打印一些HTML代码,使页面跳转到我们的adc.html页面去,打印完HTML信息后该线程就退出;另一个子线程执行真正的AD数据采集,它读取三个通道的AD值,并对读出来的值进行转换,并将读取的结果写入adc.xml文件中,供用户检索。同时,这个线程还会检查adc.xml的标签中的内容,如果为$,则说明用户按下了“停止采集”键,那么就结束程序的执行,否则继续执行。四、停止采集

10、程序当用户按下数据采集页面的“停止采集”按钮后,会执行一个后台服务程序。该文件的源文件名字是stop.c,全部内容如下: int fd, ret; char buff150; /* 打印HTML文档 */ printf(/192.168.1.133 fd = open(./adc.xml if(fd continue; else lock_set(fd, F_WRLCK); break; ret = read(fd, buff, 150); for(i=0; if(buffi = sto (buffi+3 = p buffi+5 = lseek(fd, 0, SEEK_SET); write(

11、fd, buff, ret);/写文件,改变文件内容,以便视频采集程序能检测到该变化 lock_set(fd, F_UNLCK); close(fd);/ 关闭设备文件描述符 return 0;该程序的实现比较简单,主要任务就是改变adc.xml文件中的tm_gmtoff即只是去掉了该行的两个#字符。然后修改boa.c:/app/web/boa-0.94.13/src$ vi boa.c找到该文件的225227行,注释掉这几行,不然运行的时候会出错。源文件的修改就完成了,现在开始编译。首先,运行configure程序对源文件进行配置:/app/web/boa-0.94.13/src$ ./co

12、nfigure配置完成后,修改Makefile:/app/web/boa-0.94.13/src$ vi Makefile修改第31行和32行如下:CC = arm-linux-gccCPP = arm-linux-gcc -E修改完成后,保存文件,运行Make进行编译:/app/web/boa-0.94.13/src$ make编译完成后,会在该目录下生成我们需要的可执行文件boa。然后,编译我们的CGI程序。CGI程序供两个,一个是run.c,另一个是stop.c,分别运行如下命令进行编译:/app/web$ arm-linux-gcc -o run.cgi run.c/app/web$

13、arm-linux-gcc -o stop.cgi stop.c编译完成后,会在目录下生成run.cgi和stop.cgi两个应用程序。六、BOA服务器的配置 Boa运行时需要在/etc/boa目录下有一个boa.conf文件,该文件的全部内容如下:Port 80#Listen 192.68.0.5User root Group 0 ErrorLog /var/log/boa/error_logAccessLog /dev/nullServerName www.your.org.hereDocumentRoot /var/wwwDirectoryIndex index.htmlKeepAliv

14、eMax 1000KeepAliveTimeout 10MimeTypes /etc/mime.typesDefaultType text/plainCGIPath /bin:/usr/bin:/usr/local/binAddType application/x-httpd-cgi cgiScriptAlias /cgi-bin/ /var/www/cgi-bin/另外,在/etc目录下还需要一个mime.types文件,可以直接从主机上的/etc目录拷贝过来。运行时需要的目录如下:/var/www 这个是我们的html文件存放的目录/var/www/cgi-bin 这个是CGI程序存放的目

15、录/var/log/boa/error_log 这个是boa服务器存放错误日志的地方因此,把我们上面提到的index.html、adc.html和adc.xml三个文件拷贝到开发板的/var/www目录下;把刚才编译得到的run.cgi和stop.cgi拷贝到/var/www/sgi-bin目录下;还要在/var/log/boa目录下建立一个error_log文件,命令如下:rootup-tech /var/log/boapwd/var/log/boarootup-tech /var/log/boatouch error_log这样,服务器的配置就完成了,把刚才编译得到的boa可执行文件拷贝到

16、/bin目录下,然后执行boa命令,就可以启动boa服务器了:rootup-tech /var/log/boaboa启动后,在PC机的IE浏览器中输入开发板的IP地址,打开的页面如下:点击上面的“查看”按钮后,弹出的页面如下:要想在测试HTML页面观察到2410经典平台的AD输出,需要手动加载该平台配套的ADC设备驱动(前面课程实验已经编译出该驱动)s3c2410-adc.ko.并且手动建立好ADC设备节点,这样本次实验程序才可以正确调用该设备接口。参考步骤如下:up-tech: #insmod s3c2410-adc.ko adc_major: 252add 2410_adc ok! #mk

17、nod /dev/adc c 252 0这时候可以转动开发板上的AD输入的三个旋钮,查看三个通道的采样值是否变化。点击“停止采集”按钮后,会跳回第一个页面,点击第一个页面的“查看”可以重新开始。备注:本次实验使用的ARM根文件系统是为BOA服务器修改过的,建议您使用本次培训配套的健全的根文件系统,暂时不要使用直接编译的根文件系统(前面课程实验所编译的简单文件系统)。由于ARM设备上运行的是CRAMFS文件系统即只读文件系统,因此此实验要求用户要根据boa服务器的配置要求重新制作根文件系统,否则CRAMFS文件系统的相关目录无法写入和更改。这里我们可以将培训班镜像文件img目录下的root.cr

18、amfs文件系统通过一个小方法,解压出文件系统源码,在此基础上进行BOA服务器的配置和更改。方法如下:1、创建新的根文件系统目录rootvm-dev rootfs-2p6# mkdir rootfs2、挂载cramfs文件系统到新建立的目录下rootvm-dev rootfs-2p6# mount -o loop rootfs.cramfs rootfs/rootvm-dev rootfs-2p6# lsrootfs.cramfs rootfs3、压缩新建目录rootvm-dev rootfs-2p6# tar cjf rootfs.tar.bz2 rootfs/rootfs.cramfs r

19、ootfs rootfs.tar.bz24、卸载挂载点目录,并删除新建目录rootvm-dev rootfs-2p6# umount rootfsrootvm-dev rootfs-2p6# rm -rf rootfsrootfs.cramfs rootfs.tar.bz25、将压缩包再一次解压出来,即可看到CRAMFS文件系统源码目录树rootvm-dev rootfs-2p6# tar xjvf rootfs.tar.bz2rootvm-dev rootfs-2p6# cd rootfsrootvm-dev rootfs# lsbin dev etc lib linuxrc mnt opt

20、 proc root sbin sys tmp usr varrootvm-dev rootfs# 制作完成rootfs通过mkcramfs工具生成root.cramfs只读文件系统1) 确认serverip是Linux虚拟机的IP地址执行“printenv”,查看serverip是否与Linux虚拟机的IP地址一致若不一致,执行“setenv serverip 192.168.1.12”来指定tftp服务器的IP地址执行“saveenv”保存设置。2)将生成的uImage文件拷贝到tftpboot目录下:cp root.cramfs /tftpboot3) 在ARM开发板上运行命令:tftp 0x30008000 root.cramfs (把uImage文件下载到ARM开发板的SDRAM中0x30008000开始的空间中)nand erase 0x380000 0x400000 (擦除Nand Flash中起始地址为0x380000,大小为0x400000的空间)nand write 0x30008000 0x380000 0x400000 (把SDRAM中0x30008000开始的内容写入Nand Flash0x380000开始的空间内,

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1