ImageVerifierCode 换一换
格式:DOCX , 页数:41 ,大小:1.88MB ,
资源ID:9769491      下载积分:12 金币
验证码下载
登录下载
邮箱/手机:
图形码:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

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

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

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请。


权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4009-655-100;投诉/维权电话:18658249818。

注意事项

本文(嵌入式系统原理及应用.docx)为本站上传会员【精***】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

嵌入式系统原理及应用.docx

1、嵌入式系统原理及应用 嵌入式系统原理与应用 实验报告 班级: 学号: 姓名: 实验一 Linux shell基本命令的使用 一、 实验目的和要求 a) 掌握用户系统常用命令。 b) 掌握文件目录常用命令。 c) 掌握压缩打包常用命令。 d) 掌握网络相关命令。 二、 实验内容和原理 a) 登录系统,查看系统相

2、关信息; b) 查询和更新系统用户数据; c) 创建文件目录和文件,并实现文件操作; d) 打包并解压文件 e) 查询系统网络状态,并设置和更新 三、 实验环境 a) 硬件:PC机 b) 软件:LINUX操作系统、虚拟机 四、 算法描述及实验步骤 a) 启动系统,打开终端; b) 查看系统信息,并将以下查看内容重定向添加到文件systemInfo.txt,最后清屏: 1、 查看系统当前所有进程; 2、 查看当前系统信息 3、 查看硬盘分区情况 4、 查看/etc/fstab文件 5、 查看系统当前的网络地址 c) 系统用户数据: 1、 切换到root状态 2

3、 创建用户(姓名拼间首字母加学号后两位,如张飞 ZF01),密码是123456 3、 进入新用户,并查看默认所在主目录及所有登录系统的用户 d) 文件操作: 1、 在当前用户的主目录下,创建文件夹Labl 2、 进入Lab1文件夹,新建文件welcome.txt,写入“Hello Zhang Fei!”保存退出 3、 将b步骤生成的文件SystemInfo.txt,移动到Lab1文件夹,并设置文件权限为: 文件所有者可读写,其它为只读; 并查看文件列表,权限是否设置 4、 返回到当前用户的主目录 5、 将Lab1文件夹打包生成tar.gz文件,并删除原文件夹 五、 实验报告

4、要求: 按实验步骤执行,在纸质实验报告上详细描述执行流程(使用命令及操作流程),并在电子版的实验报告上要求另加适当截图描述; a) 启动系统,打开终端;或使用putty连接系统(如果未安装ssh,可以使用sudo apt-get install ssh) : 运行Applications→Terminal 图1.1 启动终端 b) 查看系统信息,并将以下查看内容重定向添加到文件systemInfo.txt,最后清屏: 1、 查看系统当前所有进程: 运行Terminal→ps→ps >>SystermInfo.txt 图1.2 查看系统当前所有进程 2、 查看当前系

5、统信息: 运行Terminal→uname -a→uname –a >>SystermInfo.txt 图1.3 查看当前系统信息 3、 查看硬盘分区情况: 运行Terminal→fdisk 图1.4 查看硬盘分区情况 4、 查看/etc/fstab文件: 运行Terminal→cat /etc/fstab→cat /etc/fstab >>SystermInfo.txt 图1.5 查看/etc/fstab文件 5、 查看系统当前的网络地址: 运行Terminal→ifconfig→ifconfig >>SystermInfo.txt→clear 图1

6、6 查看系统当前网络地址 c) 系统用户数据: 1、 切换到root状态: 运行Terminal→su - root→输入密码登录 图1.7 切换到root状态 2、 创建用户(姓名拼间首字母加学号后两位,如张飞 ZF01),密码是123456: 运行Terminal→useradd –m dhy27→passwd dhy27→输入并确定密码 图1.8 创建用户 3、 进入新用户,并查看默认所在主目录及所有登录系统的用户: 运行Terminal→su – dhy27→ls→who 图1.9 进入新用户 d) 文件操作: 1、 在当前用户的主目录下,创建文件

7、夹Labl: 运行Terminal→mkdir Labl 图1.10 创建文件Labl 2、 进入Lab1文件夹,新建文件welcome.txt,写入“Hello Zhang Fei!”保存退出: 运行Terminal→vi welcome.txt 图1.11 进入Labl文件 在vi模式下创建文件 图1.12 在vi模式在创建文件 3、将b步骤生成的文件SystemInfo.txt,移动到Lab1文件夹,并设置文件权限为: 文件所有者可读写,其它为只读; 并查看文件列表,权限是否设置: 运行Terminal→mv /home/dhy/SystermInfo

8、txt /home/dhy27/Labl 图1.13 移动文件 运行Terminal→chmod 644 /home/dhy27/Labl/SystermInfo.txt→ls –l /home/dhy27/Labl 图1.14 更改权限 4、返回到当前用户的主目录: 运行Terminal→su dhy27→pwd→cd→pwd 图1.15 返回主目录 5、将Lab1文件夹打包生成tar.gz文件,并删除原文件夹: 运行Terminal→tar –cvf tar.gz /home/dhy27/Labl→ls→rm –r Labl 图1.16

9、打包文件 实验二 GCC 及GDB的使用 一、实验目的和要求 1. 掌握VI编译环境。 2. 掌握GCC编译命令。 3. 掌握多个文件共同编译方法。 4. 掌握GDB调试命令。 二、实验内容和原理 1.在VI编辑器里编写简单的“hello,world,I am 13050141XX XXX”,利用GCC编译为可执行文件,执行,观察运行结果。 2.在VI编辑器里编写多个文件(至少两个,其中一个为主程序,一个为需要调用的子程序),为其书写头文件,共同编译为可执行文件,执行,观察运行结果。学习书写MAKEFILE文件,编译,执行,观察结果。 3.编写循环结构的程序,利用GCC

10、编译(加参数-g)为可执行文件,利用GDB调试,学习GDB调试命令。 三.实验环境 1.硬件:PC机 2.软件:LINUX操作系统、虚拟机 四. 实验步骤   1.用vi编辑器新建hello.c文件,并用gcc编译器编译,执行,显示结果 图2.1 执行hello   2.makefile文件的编写,多文件编译执行 1) 主程序部分 图2.2 主程序 1) 子程序部分 图2.3 子程序 2) 头文件部分 图2.4 头文件 3) makefile的程序 图2.5 Makefile的程序     5)查看makefile的内容 图2

11、6 查看makefile的内容 6)主程序,子程序的编译执行输出结果 图2.7 执行结果 3.gdb的调试  1)用vi编辑器新建tst.c文件 图2.8 tst源程序    2)使用gdb tst 命令启动gdb调试 图2.9 启动gdb调试    3)使用 gdb l 命令列出源代码 图2.10 使用 gdb l 命令列出源代码    4)使用break 16 命令设置断点位置在16行;使用break func,设置断点,在func函数入口处;使用 info break 查看断点信息; 使用 r 命令,运行程序;使用 n 命令,单条语句执行; 图

12、2.11 使用断点    5)使用 c命令继续运行程序,使用p i 命令打印变量i的值,print命令简写 图2.12 使用继续指令    6)使用 bt 命令查看函数堆栈 图2.13 查看函数堆栈    7)使用 finish 命令退出函数,使用 q 退出gdb调试。 图2.14 使用finish命令退出函数 实验三 交叉编译环境配置 一、 实验目的和要求 熟悉 Linux 开发环境,学会基于S3C2410 的Linux 开发环境的配置和使用。使用Linux 的armv4l-unknown-linux-gcc 编译,使用基于NFS 方式的下载调试,了

13、解嵌入式开发的基本过程。 二、实验内容 e) 配置网络,包括配置IP 地址、NFS 服务、防火墙。 f) 安装交叉编译器 g) 配置超级终端,下载文件到目标机上。 三、实验设备及工具(包括软件调试工具) 硬件:UP-TECH S2410/P270 DVP 嵌入式实验平台、PC 机Pentium 500 以上, 硬盘10G 以上。 软件:REDHAT LINUX 9.0+超级终端+ARM-LINUX 开发环境 四、 实验步骤 1、虚拟机设置为桥接模式。 图3.1 虚拟机设置为桥接模式 2、配置IP地址,设置为192.168.0.121 图3.2 IP设置

14、 图3.3 配制以太网 3、关闭防火墙 操作如下:点击红帽子开始菜单,选择安全级别设置,选中无防火墙。 图3.4 关闭防火墙 4、打开桌面超级终端,配置COM1,115200波特率,8N1,实验箱插上电源线,网线与主机相连,串口线与主机串口1相连,开机,看bootloader程序VIVI是否自动加载,回车后进入命令提示符。 5、宿主机和目标机互相PING,看是否PING通 宿主机Ping 192.168.0.121 超级终端Ping 192.168.0.123 图3.5 ping检验是否联通 6、安装NFS服务器,点击主菜单运行系统设置->添加/删除应用

15、程序->服务器->服务器配置工具->system-config-nfs,system-config-samba,安装 图3.6 安装NFS服务器 7、 安装交叉编译器 利用U盘将提供的文件夹拷入系统中,虚拟机->可移动设备中将你的U盘连接上 建议的代码 fdisk -l (看SDB1出现没有) mkdir /mnt/usb mount -t vfat /dev/sdb1 /mnt/usb -codepage=936,iocharset=cp936 cd /mnt/usb ./install.sh 运行完后卸载U盘 umount /dev/sd

16、b1 图3.7 安装交叉编译器 8、 在超级终端下挂载文件夹 mount -t nfs -o nolock 192.168.0.103:/liqing /host 实验四 熟悉 Linux 开发环境 一、实验目的 熟悉 Linux 开发环境,学会基于 S3C2410 的 Linux 开发环境的配置和使用。使用 Linux 的 armv4l-unknown-linux-gcc 编译,使用基于 NFS 方式的下载调试,了解嵌入式开发的基本 过程。 二、实验内容 本次实验使用 Redhat Linux 9.0 操作系统环境,安装 ARM-Linux

17、的开发库及编译器。创建 一个新目录,并在其中编写 hello.c 和 Makefile 文件。学习在 Linux 下的编程和编译过程, 以及 ARM 开发板的使用和开发环境的设置。下载已经编译好的文件到目标开发板上运行。 三、预备知识 C语言的基础知识、程序调试的基础知识和方法,Linux 的基本操作。 四、实验设备及工具(包括软件调试工具) 硬件:UP-CUP S2410 经典平台、PC 机 Pentium 500 以上, 硬盘 10G 以上。 软件:PC 机操作系统 REDHAT LINUX 9.0+MINICOM+ARM-LINUX 开发环境 五、实验步骤 1

18、建立工作目录 4.1 建立工作目录 2、编写程序源代码 我们可以是用下面的命令来编写 hello.c 的源代码,进入 hello 目录使用 vi 命令来编辑代码: 图4.2 编辑代码 按“i”或者“a”进入编辑模式,将上面的代码录入进去,完成后按 Esc 键进入命令状态,再 用命令“:wq”保存并退出。这样我们便在当前目录下建立了一个名为 hello.c 的文件。 3、编写 Makefile 要使上面的 hello.c 程序能够运行,我们必须要编写一个 Makefile 文件,Makefile 文件 定义了一系列的规则,它指明了哪些文件需要编译,哪些文件需要先编译,哪些

19、文件需要 重新编译等等更为复杂的命令。使用它带来的好处就是自动编译,你只需要敲一个“make” 命令整个工程就可以实现自动编译,当然我们本次实验只有一个文件,它还不能体现出使用 Makefile 的优越性,但当工程比较大文件比较多时,不使用 Makefile 几乎是不可能的。 下面我们介绍本次实验用到的 Makefile 文件。 CC= armv4l-unknown-linux-gcc EXEC = hello OBJS = hello.o CFLAGS +=–g LDFLAGS+= –static all: $(EXEC) $(EXEC): $(OBJS) $(CC) $(L

20、DFLAGS) -o $@ $(OBJS) clean: -rm -f $(EXEC) *.elf *.gdb *.o 下面我们来简单介绍这个 Makefile 文件的几个主要部分: e CC 指明编译器 e EXEC 表示编译后生成的执行文件名称 e OBJS 目标文件表 e CFLAGS 编译参数 e LDFLAGS 连接数 e all: 编译主入口 e clean: 清除编译结果 与上面编写 hello.c 的过程类似,用 vi 来创建一个 Makefile 文件并将代码录入其中 4、编译应用程序 在上面的步骤完成后,我们就可以在 hello 目录下运行“make

21、来编译我们的程序了。如果进行了修改,重新编译则运行: 图4.3 编译应用程序 5、下载调试 在宿主 PC 计算机上启动 NFS 服务,并设置好共享的目录,具体配置请参照前面第一章第四 节中关于嵌入式 Linux 环境开发环境的建立。在建立好 NFS 共享目录以后,我们就可以进入 超级终端中建立开发板与宿主 PC 机之间的通讯了。 再进入/mnt 目录运行刚刚编译好的 hello 程序,查看运行结果。 图4.4 运行结果 实验五 串行端口程序设计 一、实验目的 了解在 linux 环境下串行程序设计的基本方法。 掌握终端的主要属性及设置方法

22、熟悉终端 I/O函数的使用。 学习使用多线程来完成串口的收发处理。 二、实验内容 学习终端 I /O 函数的使用方法,学习将多线程编程应用到串口的接收 和发送程序设计中。发送自己的学号给串口。 三、预备知识 有 C 语言基础。 掌握在 Linux 下常用编辑器的使用。 掌握 Makefile 的编写和使用。 掌握 Linux 下的程序编译与交叉编译过程 四、实验设备及工具 硬件:UP-CUP S2410 经典平台、PC 机 Pentium 500 以上, 硬盘 10G 以上。 软件:PC 机操作系统 REDHAT LINUX 9.0+MINIC

23、OM+ARM-LINUX 开发环境 五、程序分析 本实验的程序流程图如下: 图5.1 实验流程图 本实验的代码如下: #include #include #include #include #include #include #define BAUDRATE B115200 #define COM1 "/dev/ttyS0" #define COM2 "/dev/ttyS1" #define ENDMINITERM 2

24、7 #define FALSE 0 #define TRUE 1 volatile int STOP=FALSE; volatile int fd; void child_handler(int s) { printf("stop!!!\n"); STOP=TRUE; } void* receive(void * data) { int c; printf("read modem\n"); while (STOP==FALSE) { read(fd,&c,1); /* com port */ write(1,&c,1); /* stdout */ } printf

25、"exit from reading modem\n"); return NULL; } int main(int argc,char** argv) { struct termios oldtio,newtio,oldstdtio,newstdtio; struct sigaction sa; int ok; pthread_t th_a, th_b, th_c; void * retval; if( argc > 1) fd = open(COM2, O_RDWR ); else fd = open(COM1, O_RDWR ); //| O_NOCTTY |O_N

26、ONBLOCK); if (fd <0) { error(COM1); exit(-1); } tcgetattr(0,&oldstdtio); tcgetattr(fd,&oldtio); tcgetattr(fd,&newstdtio); newtio.c_cflag = BAUDRATE | CRTSCTS | CS8 | CLOCAL | CREAD; newtio.c_iflag = IGNPAR; newtio.c_oflag = 0; newtio.c_lflag = 0; newtio.c_cc[VMIN]=1; newtio.c_cc[VTI

27、ME]=0; tcflush(fd, TCIFLUSH); tcsetattr(fd,TCSANOW,&newtio); sa.sa_handler = child_handler; sa.sa_flags = 0; sigaction(SIGCHLD,&sa,NULL); pthread_create(&th_a, NULL, keyboard, 0); pthread_create(&th_b, NULL, receive, 0); pthread_create(&th_c, NULL, send, 0); pthread_join(th_a, &retval)

28、 pthread_join(th_b,&retval); pthread_join(th_c,&retval); tcsetattr(fd,TCSANOW,&oldtio); tcsetattr(0,TCSANOW,&oldstdtio); close(fd); exit(0); } 六、实验步骤 1、打开串口 在 Linux 下串口文件位于/dev 下,一般在老版本的内核中串口一为/dev/ttyS0 ,串口二 为 /dev/ttyS1, 在我们的开发板中串口设备位于/dev/tts/下,因为开发板中没有 ttyS0 这个设备,所以我们要建立一个连接,

29、方法如下: [/mnt/yaffs] cd /dev [/dev] ln –sf /dev/tts/0 ttyS0 2、 编写代码(如上) 3、 编译连接 图5.3 编译链接 4、 下载调试 [/mnt/yaffs] mount -t nfs -o nolock 192.168.0.103/arm2410cl /host [/mnt/yaffs]cd /host/exp/basic/03_tty/ [/host/exp/basic/03_tty]./term 41 / 41 七、实验结果 图5.4 实验结果 实验六 A/D 接口

30、实验 一、实验目的 了解在 linux 环境下对 S3C2410 芯片的 8 通道 10 位 A/D 的操作与控制。 二、实验内容 学习 A/D 接口原理,了解实现 A/D 系统对于系统的软件和硬件要求。阅读 ARM 芯片文档, 掌握 ARM 的 A/D 相关寄存器的功能,熟悉 ARM 系统硬件的 A/D 相关接口。利用外部模拟信 号编程实现 ARM 循环采集全部前 4 路通道,并且在超级终端上显示。 三、预备知识 有 C 语言基础。 掌握在 Linux 下常用编辑器的使用。 掌握 Makefile 的编写和使用。 掌握 Linux 下的程序编译与交叉编

31、译过程。 四、实验设备及工具 硬件:UP-CUP S2410 经典平台、PC 机 Pentium 500 以上, 硬盘 10G 以上。 软件:PC 机操作系统 REDHAT LINUX 9.0+MINICOM+ARM-LINUX 开发环境 五、程序代码 ad 驱动对用户来说只是下面的一个文件结构。在用户程序里只需要用到 open、 read、 write、 release 等内核函数即可。本实验采用的是模块方式加载,可以在实验箱的/mnt/yaffs/ad/ 中找到 AD 的驱动程序。 main.c 的代码如下: #include #include

32、 #include #include #include #include #include #include "s3c2410-adc.h" #define ADC_DEV "/dev/adc/0raw" static int adc_fd = -1; static int init_ADdevice(void) { if((adc_fd=open(ADC_DEV, O_RDWR))<0){ printf("Error open

33、ing %s adc device\n", ADC_DEV); return -1; } } static int GetADresult(int channel) { int PRESCALE=0XFF; int data=ADC_WRITE(channel, PRESCALE); write(adc_fd, &data, sizeof(data)); read(adc_fd, &data, sizeof(data)); return data; } static int stop=0; static void* comMonitor(void* data) { ge

34、tchar(); stop=1; return NULL; } int main(void) { int i; float d; pthread_t th_com; void * retval; //set s3c44b0 AD register and start AD if(init_ADdevice()<0) return -1; /* Create the threads */ pthread_create(&th_com, NULL, comMonitor, 0); printf("\nPress Enter key exit!\n"); while( stop

35、0 ){ for(i=0; i<=2; i++){//采样 0~2 路 A/D 值 d=((float)GetADresult(i)*3.3)/1024.0; printf("a%d=%8.4f\t",i,d); } usleep(1); printf("\r"); } /* Wait until producer and consumer finish. */ pthread_join(th_com, &retval); printf("\n"); return 0; } 六、实验步骤 1、编写源码 使用 vi 编辑器或其他编辑器编辑源代码。 2、编译应用

36、程序 运行 make 产生 ad 可执行文件 图6.1 运行make产生ad可执行文件 3、下载调试 换到超级终端窗口,使用 NFS mount 开发主机的/arm2410cl 到/host 目录。 [/mnt/yaffs] mount -t nfs -o nolock 192.168.0.56:/arm2410cl /host [/mnt/yaffs]insmod ad/s3c2410-adc.o [/mnt/yaffs]cd /host/exp/basic/04_ad/ [/host/exp/basic/04_ad]./ad 我们可以通过调节开发板上的三个黄色的电位

37、器,来查看 a0、a1、a2 的变化。 七、 实验结果 图6.2 实验结果 实验七 简单嵌入式 WEB 服务器实验 一、实验目的 掌握在 ARM 开发板实现一个简单 WEB 服务器的过程。 学习在 ARM 开发板上的 SOCKET 网络编程。 学习 Linux 下的 signal()函数的使用。 二、实验内容 学习使用 socket 进行通讯编程的过程,了解一个实际的网络通讯应用程序整体设计,阅读 HTTP 协议的相关内容,学习几个重要的网络函数的使用方法。在 PC 计算机上使用浏览器测试嵌入 式 WEB 服务器的功能。 三、 预备知识 C

38、 语言的基础知识、程序调试的基础知识和方法,Linux环境下常用命令和 vi 编辑器的操作。 HTTP1.0 协议的基本知识。 SOCKET 编程的几个基本函数的使用方法。 四、实验设备及工具 硬件:UP-CUP S2410 经典平台、PC 机 Pentium 500 以上, 硬盘 10G 以上。 软件:PC 机操作系统 REDHAT LINUX 9.0+MINICOM+ARM-LINUX 开发环境 五、功能需求详细说明 1.获取服务器当前目录文件列表 将服务器当前目录下所有文件的信息发送给客户端,信息包括:文件名、大小、日期。 2.获取指定文件 将客户请求的文

39、件发送给客户。 3.获取 HTML 类型文件将客户请求的 HTML 类型文件发送给客户。 4.获取纯文本文件将客户请求的纯文本发送给客户。 5.获取 JPG 图像文件将客户请求的 JPG 图像文件发送给客户。 6.获取 GIF 图像文件将客户请求的 GIF 图像文件发送给客户。 7.解析用户请求 分析客户的请求,将请求信息解析为几个变量。   8.请求的命令、请求的文件名、请求的文件类型。 六、程序代码 switch (content_type) { case 't': fprintf(f,"Content-type: text/plain\n"); break; ca

40、se 'g': fprintf(f,"Content-type: image/gif\n"); break; case 'j': fprintf(f,"Content-type: image/jpeg\n"); break; case 'h': fprintf(f,"Content-type: text/html\n"); break; } 发送服务器信息:fprintf(f,"Server: AMRLinux-httpd 0.2.4\n"); 发送文件永不过期:fprintf(f,"Expires: 0\n"); 七、实验步骤 1. 阅读理解源码 进入/arm241

41、0c1/exp/basic/07_httpd/目录,使用vi编辑器或其他编辑器阅读理解源码。 2. 编译运行文件 运行make产生可执行文件httpd 图7.1 编译 3. 下载调试 图7.2 下载调试 八、实验结果 图7.3 实验结果 实验八 8 字数码管和点阵数码管实验 一、 实验目的 学习 LED 的相关知识 掌握 74HC273 芯片的工作原理 二、实验内容 学习 LED 相关知识,了解 74HC273 芯片对 LED 点亮的工作机制,熟练阅读 74HC273芯片资料,掌握对它的使用。在七段LED上循环轮流显示学号,如“13 05 01

42、 41 01”,在点阵LED上显示自己设计的图案,轮流显示。 三、预备知识 有 C语言基础 掌握在 Linux下常用编辑器的使用 掌握 Makefile的编写和使用 掌握 Linux 下的程序编译与交叉编译过程 需要部分数字电路的知识 四、实验设备及工具 硬件:UP-CUP S2410 经典平台、PC 机 Pentium 500 以上, 硬盘 10G 以上。 软件:PC 机操作系统 REDHAT LINUX 9.0+MINICOM+ARM-LINUX 开发环境 五、LED 数码管电路图 其中各个引脚的功能在下面都有描述。 74HC273 在 8

43、字数码管中开发板中的连接如图 所示: 开发板设置2 个数码管,由74HC273 控制。74HC273是同步串行转并行的锁存器,在此通过SPI 总线和CPU 连接,锁存数据后驱动数码管发光。 上面一副图的 最左边接的是下面图的最右边 六、程序分析 LEDCODE[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//这个是 10 个 数字的编码 //在这里主要是用到编码的过程 假设 a 是 8 字型数码管的最上一横,以顺时针以次列出 b,c,d,e,f.中间那一横为 g,如果要显示 为 0 的话,由于在

44、开发板中的连接是共阳极(请参考我们的电路图),所以只需要满足 a,b,c,d,e,f 为 0 即可,而 g 为 1,因为两个数码管的中间是个点号,我们用 h 表示,并且总是让它置为 1。因为我们在开发板的连接上可以看到 a 对应 d0,b 对应 d1,..........h 对应 d7,所以当想显示为 0 的时候,那 么应该是 。转化成为 16 进制的数据,也就成了 0Xc0.对应我们在 LEDCODE【10】数组中的 第一位。其他的每一位值,大家可以根据上面的方法依次类推。 在 for 循环中我们写了如下语句。 LEDWORD=(LEDCODE[i]<<8)|LEDCODE[9-i];

45、 那是因为 LEDWORD 是一个 16 位的数。我们是需要将两个 8 字数码管同时显示,所以将 LEDCODE[i] 左移 8 位,然后再加上个位使得十位和个位同时显示。 至于显示点阵数码管还是显示 8 字数码管,主要是通过 IOCTL 函数中的命令来实现的,也就是在代 码中出现的 ioctl(fd,0x12,LEDWORD); ioctl(fd,0x11,LEDWORD); 下面分析这个 IOCTL 函数的原型 static int s3c2410_led_ioctl (struct inode *inode, struct file *filp, unsigned int cm

46、d, unsigned int arg) { //printk("DOT buffer is %x\n" ,arg ); switch(cmd){ case LED_TUBE_IOCTRL://如果是 0x11 命令,那么点亮 8 字数码管 return *(volatile unsigned short *)s3c2410_led_tube_base=arg; case LED_DIG_IOCTRL://如果是 0x12 命令 ,那么点亮点阵数码管 return *(volatile unsigned short *)s3c2410_led_dig_base=arg; default : return printk("your command is not exist"); } return 0; } 七、实验步骤 1、编写源码 使用 vi 编辑器或其他编辑器编写源代码 图8.1 图8.2 编写test_led文件 2、编译应用程序 运行 make 产生 test_led 可执行文件 test_led 图8.3 运行make产型可执行文件 3、下载调试 图8.4 下载调试 八、 实验结果(加图) 图8.5 实验结果

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服