欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

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

    • 资源ID:24200728       资源大小:2.40MB        全文页数:41页
    • 资源格式: DOCX        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    嵌入式系统原理与应用实验报告 班级: 学号: 姓名:实验一 Linux shell基本命令的使用一、 实验目的和要求a) 掌握用户系统常用命令。b) 掌握文件目录常用命令。c) 掌握压缩打包常用命令。d) 掌握网络相关命令。二、 实验内容和原理a) 登录系统,查看系统相关信息;b) 查询和更新系统用户数据;c) 创建文件目录和文件,并实现文件操作;d) 打包并解压文件e) 查询系统网络状态,并设置和更新三、 实验环境a) 硬件:PC机b) 软件:LINUX操作系统、虚拟机四、 算法描述及实验步骤a) 启动系统,打开终端;b) 查看系统信息,并将以下查看内容重定向添加到文件systemInfo.txt,最后清屏:1、 查看系统当前所有进程;2、 查看当前系统信息3、 查看硬盘分区情况4、 查看/etc/fstab文件5、 查看系统当前的网络地址c) 系统用户数据:1、 切换到root状态2、 创建用户(姓名拼间首字母加学号后两位,如张飞 ZF01),密码是1234563、 进入新用户,并查看默认所在主目录及所有登录系统的用户d) 文件操作:1、 在当前用户的主目录下,创建文件夹Labl2、 进入Lab1文件夹,新建文件welcome.txt,写入“Hello Zhang Fei!”保存退出3、 将b步骤生成的文件SystemInfo.txt,移动到Lab1文件夹,并设置文件权限为:文件所有者可读写,其它为只读; 并查看文件列表,权限是否设置4、 返回到当前用户的主目录5、 将Lab1文件夹打包生成tar.gz文件,并删除原文件夹五、 实验报告要求:按实验步骤执行,在纸质实验报告上详细描述执行流程(使用命令及操作流程),并在电子版的实验报告上要求另加适当截图描述;a) 启动系统,打开终端;或使用putty连接系统(如果未安装ssh,可以使用sudo apt-get install ssh) :运行ApplicationsTerminal图1.1 启动终端b) 查看系统信息,并将以下查看内容重定向添加到文件systemInfo.txt,最后清屏:1、 查看系统当前所有进程:运行Terminalpsps >>SystermInfo.txt图1.2 查看系统当前所有进程2、 查看当前系统信息:运行Terminaluname -auname a >>SystermInfo.txt图1.3 查看当前系统信息3、 查看硬盘分区情况:运行Terminalfdisk图1.4 查看硬盘分区情况4、 查看/etc/fstab文件:运行Terminalcat /etc/fstabcat /etc/fstab >>SystermInfo.txt图1.5 查看/etc/fstab文件5、 查看系统当前的网络地址:运行Terminalifconfigifconfig >>SystermInfo.txtclear图1.6 查看系统当前网络地址c) 系统用户数据:1、 切换到root状态:运行Terminalsu - root输入密码登录图1.7 切换到root状态2、 创建用户(姓名拼间首字母加学号后两位,如张飞 ZF01),密码是123456:运行Terminaluseradd m dhy27passwd dhy27输入并确定密码图1.8 创建用户3、 进入新用户,并查看默认所在主目录及所有登录系统的用户:运行Terminalsu dhy27lswho图1.9 进入新用户d) 文件操作:1、 在当前用户的主目录下,创建文件夹Labl:运行Terminalmkdir Labl图1.10 创建文件Labl2、 进入Lab1文件夹,新建文件welcome.txt,写入“Hello Zhang Fei!”保存退出:运行Terminalvi welcome.txt图1.11 进入Labl文件在vi模式下创建文件图1.12 在vi模式在创建文件3、将b步骤生成的文件SystemInfo.txt,移动到Lab1文件夹,并设置文件权限为:文件所有者可读写,其它为只读; 并查看文件列表,权限是否设置:运行Terminalmv /home/dhy/SystermInfo.txt /home/dhy27/Labl图1.13 移动文件运行Terminalchmod 644 /home/dhy27/Labl/SystermInfo.txtls l /home/dhy27/Labl图1.14 更改权限4、返回到当前用户的主目录:运行Terminalsu dhy27pwdcdpwd图1.15 返回主目录5、将Lab1文件夹打包生成tar.gz文件,并删除原文件夹:运行Terminaltar cvf tar.gz /home/dhy27/Labllsrm r Labl图1.16 打包文件实验二 GCC 及GDB的使用一、实验目的和要求1 掌握VI编译环境。2 掌握GCC编译命令。3 掌握多个文件共同编译方法。4 掌握GDB调试命令。二、实验内容和原理1.在VI编辑器里编写简单的“hello,world,I am 13050141XX XXX”,利用GCC编译为可执行文件,执行,观察运行结果。2.在VI编辑器里编写多个文件(至少两个,其中一个为主程序,一个为需要调用的子程序),为其书写头文件,共同编译为可执行文件,执行,观察运行结果。学习书写MAKEFILE文件,编译,执行,观察结果。3.编写循环结构的程序,利用GCC 编译(加参数-g)为可执行文件,利用GDB调试,学习GDB调试命令。三实验环境1.硬件:PC机2.软件:LINUX操作系统、虚拟机四 实验步骤1.用vi编辑器新建hello.c文件,并用gcc编译器编译,执行,显示结果图2.1 执行hello2.makefile文件的编写,多文件编译执行) 主程序部分图2.2 主程序) 子程序部分图2.3 子程序) 头文件部分图2.4 头文件) makefile的程序图2.5 Makefile的程序)查看makefile的内容图2.6 查看makefile的内容)主程序,子程序的编译执行输出结果图2.7 执行结果gdb的调试)用vi编辑器新建tst.c文件图2.8 tst源程序)使用gdb tst 命令启动gdb调试图2.9 启动gdb调试)使用 gdb l 命令列出源代码图2.10 使用 gdb l 命令列出源代码)使用break 16 命令设置断点位置在16行;使用break func,设置断点,在func函数入口处;使用 info break 查看断点信息; 使用 r 命令,运行程序;使用 n 命令,单条语句执行;图2.11 使用断点)使用 c命令继续运行程序,使用p i 命令打印变量i的值,print命令简写图2.12 使用继续指令)使用 bt 命令查看函数堆栈图2.13 查看函数堆栈)使用 finish 命令退出函数,使用 q 退出gdb调试。图2.14 使用命令退出函数实验三 交叉编译环境配置一、 实验目的和要求 熟悉 Linux 开发环境,学会基于S3C2410 的Linux 开发环境的配置和使用。使用Linux 的armv4l-unknown-linux-gcc 编译,使用基于NFS 方式的下载调试,了解嵌入式开发的基本过程。二、实验内容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设置图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服务器,点击主菜单运行系统设置->添加/删除应用程序->服务器->服务器配置工具->system-config-nfs,system-config-samba,安装 图3.6 安装服务器7、 安装交叉编译器利用U盘将提供的文件夹拷入系统中,虚拟机->可移动设备中将你的U盘连接上建议的代码fdisk -l (看SDB1出现没有)mkdir /mnt/usbmount -t vfat /dev/sdb1 /mnt/usb -codepage=936,iocharset=cp936 cd /mnt/usb./install.sh运行完后卸载U盘umount /dev/sdb1图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 的开发库及编译器。创建 一个新目录,并在其中编写 hello.c 和 Makefile 文件。学习在 Linux 下的编程和编译过程, 以及 ARM 开发板的使用和开发环境的设置。下载已经编译好的文件到目标开发板上运行。三、预备知识 C语言的基础知识、程序调试的基础知识和方法,Linux 的基本操作。四、实验设备及工具(包括软件调试工具) 硬件:UP-CUP S2410 经典平台、PC 机 Pentium 500 以上, 硬盘 10G 以上。 软件:PC 机操作系统 REDHAT LINUX 9.0MINICOMARM-LINUX 开发环境五、实验步骤1、建立工作目录4.1 建立工作目录2、编写程序源代码我们可以是用下面的命令来编写 hello.c 的源代码,进入 hello 目录使用 vi 命令来编辑代码:图4.2 编辑代码按“i”或者“a”进入编辑模式,将上面的代码录入进去,完成后按 Esc 键进入命令状态,再 用命令“:wq”保存并退出。这样我们便在当前目录下建立了一个名为 hello.c 的文件。3、编写 Makefile要使上面的 hello.c 程序能够运行,我们必须要编写一个 Makefile 文件,Makefile 文件 定义了一系列的规则,它指明了哪些文件需要编译,哪些文件需要先编译,哪些文件需要 重新编译等等更为复杂的命令。使用它带来的好处就是自动编译,你只需要敲一个“make” 命令整个工程就可以实现自动编译,当然我们本次实验只有一个文件,它还不能体现出使用 Makefile 的优越性,但当工程比较大文件比较多时,不使用 Makefile 几乎是不可能的。 下面我们介绍本次实验用到的 Makefile 文件。CC= armv4l-unknown-linux-gcc EXEC = helloOBJS = hello.o CFLAGS +=gLDFLAGS+= staticall: $(EXEC)$(EXEC): $(OBJS)$(CC) $(LDFLAGS) -o $ $(OBJS)clean:-rm -f $(EXEC) *.elf *.gdb *.o下面我们来简单介绍这个 Makefile 文件的几个主要部分:eCC 指明编译器eEXEC 表示编译后生成的执行文件名称eOBJS 目标文件表 eCFLAGS 编译参数 eLDFLAGS 连接数 eall: 编译主入口eclean: 清除编译结果与上面编写 hello.c 的过程类似,用 vi 来创建一个 Makefile 文件并将代码录入其中4、编译应用程序在上面的步骤完成后,我们就可以在 hello 目录下运行“make”来编译我们的程序了。如果进行了修改,重新编译则运行:图4.3 编译应用程序5、下载调试在宿主 PC 计算机上启动 NFS 服务,并设置好共享的目录,具体配置请参照前面第一章第四 节中关于嵌入式 Linux 环境开发环境的建立。在建立好 NFS 共享目录以后,我们就可以进入 超级终端中建立开发板与宿主 PC 机之间的通讯了。 再进入/mnt 目录运行刚刚编译好的 hello 程序,查看运行结果。图4.4 运行结果实验五 串行端口程序设计一、实验目的 了解在 linux 环境下串行程序设计的基本方法。 掌握终端的主要属性及设置方法,熟悉终端 I/O函数的使用。 学习使用多线程来完成串口的收发处理。二、实验内容 学习终端 I /O 函数的使用方法,学习将多线程编程应用到串口的接收 和发送程序设计中。发送自己的学号给串口。三、预备知识有 C 语言基础。掌握在 Linux 下常用编辑器的使用。掌握 Makefile 的编写和使用。掌握 Linux 下的程序编译与交叉编译过程四、实验设备及工具硬件:UP-CUP S2410 经典平台、PC 机 Pentium 500 以上, 硬盘 10G 以上。 软件:PC 机操作系统 REDHAT LINUX 9.0MINICOMARM-LINUX 开发环境 五、程序分析本实验的程序流程图如下:图5.1 实验流程图本实验的代码如下:#include <termios.h>#include <stdio.h>#include <unistd.h>#include <fcntl.h>#include <sys/signal.h>#include <pthread.h>#define BAUDRATE B115200#define COM1 "/dev/ttyS0"#define COM2 "/dev/ttyS1"#define ENDMINITERM 27#define FALSE 0#define TRUE 1volatile int STOP=FALSE; volatile int fd;void child_handler(int s)printf("stop!n"); STOP=TRUE;void* receive(void * data)int c;printf("read modemn"); while (STOP=FALSE)read(fd,&c,1); /* com port */ write(1,&c,1); /* stdout */printf("exit from reading modemn"); 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 ); elsefd = open(COM1, O_RDWR ); /| O_NOCTTY |O_NONBLOCK);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_ccVMIN=1; newtio.c_ccVTIME=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); 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 这个设备,所以我们要建立一个连接,方法如下:/mnt/yaffs cd /dev/dev ln sf /dev/tts/0 ttyS02、 编写代码(如上)3、 编译连接图5.3 编译链接4、 下载调试/mnt/yaffs mount -t nfs -o nolock 192.168.0.103/arm2410cl /host/mnt/yaffscd /host/exp/basic/03_tty/ /host/exp/basic/03_tty./term41七、实验结果图5.4 实验结果实验六 A/D 接口实验一、实验目的 了解在 linux 环境下对 S3C2410 芯片的 8 通道 10 位 A/D 的操作与控制。二、实验内容 学习 A/D 接口原理,了解实现 A/D 系统对于系统的软件和硬件要求。阅读 ARM 芯片文档, 掌握 ARM 的 A/D 相关寄存器的功能,熟悉 ARM 系统硬件的 A/D 相关接口。利用外部模拟信 号编程实现 ARM 循环采集全部前 4 路通道,并且在超级终端上显示。三、预备知识有 C 语言基础。掌握在 Linux 下常用编辑器的使用。掌握 Makefile 的编写和使用。掌握 Linux 下的程序编译与交叉编译过程。四、实验设备及工具硬件:UP-CUP S2410 经典平台、PC 机 Pentium 500 以上, 硬盘 10G 以上。 软件:PC 机操作系统 REDHAT LINUX 9.0MINICOMARM-LINUX 开发环境 五、程序代码ad 驱动对用户来说只是下面的一个文件结构。在用户程序里只需要用到 open、 read、 write、 release 等内核函数即可。本实验采用的是模块方式加载,可以在实验箱的/mnt/yaffs/ad/ 中找到 AD 的驱动程序。 main.c 的代码如下:#include <stdio.h>#include <unistd.h>#include <sys/types.h>#include <sys/ipc.h>#include <sys/ioctl.h>#include <pthread.h>#include <fcntl.h>#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 opening %s adc devicen", 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)getchar(); 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=0 )for(i=0; i<=2; i+)/采样 02 路 A/D 值 d=(float)GetADresult(i)*3.3)/1024.0; printf("a%d=%8.4ft",i,d);usleep(1); printf("r");/* Wait until producer and consumer finish. */ pthread_join(th_com, &retval);printf("n"); return 0;六、实验步骤1、编写源码 使用 vi 编辑器或其他编辑器编辑源代码。2、编译应用程序运行 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/yaffsinsmod ad/s3c2410-adc.o/mnt/yaffscd /host/exp/basic/04_ad/ /host/exp/basic/04_ad./ad我们可以通过调节开发板上的三个黄色的电位器,来查看 a0、a1、a2 的变化。七、 实验结果图6.2 实验结果实验七 简单嵌入式 WEB 服务器实验一、实验目的掌握在 ARM 开发板实现一个简单 WEB 服务器的过程。学习在 ARM 开发板上的 SOCKET 网络编程。学习 Linux 下的 signal()函数的使用。二、实验内容 学习使用 socket 进行通讯编程的过程,了解一个实际的网络通讯应用程序整体设计,阅读 HTTP 协议的相关内容,学习几个重要的网络函数的使用方法。在 PC 计算机上使用浏览器测试嵌入 式 WEB 服务器的功能。三、 预备知识 C 语言的基础知识、程序调试的基础知识和方法,Linux环境下常用命令和 vi 编辑器的操作。 HTTP1.0 协议的基本知识。 SOCKET 编程的几个基本函数的使用方法。四、实验设备及工具硬件:UP-CUP S2410 经典平台、PC 机 Pentium 500 以上, 硬盘 10G 以上。 软件:PC 机操作系统 REDHAT LINUX 9.0MINICOMARM-LINUX 开发环境五、功能需求详细说明.获取服务器当前目录文件列表 将服务器当前目录下所有文件的信息发送给客户端,信息包括:文件名、大小、日期。2.获取指定文件 将客户请求的文件发送给客户。3.获取 HTML 类型文件将客户请求的 HTML 类型文件发送给客户。4.获取纯文本文件将客户请求的纯文本发送给客户。5.获取 JPG 图像文件将客户请求的 JPG 图像文件发送给客户。6.获取 GIF 图像文件将客户请求的 GIF 图像文件发送给客户。7.解析用户请求 分析客户的请求,将请求信息解析为几个变量。8请求的命令、请求的文件名、请求的文件类型。六、程序代码switch (content_type)case 't':fprintf(f,"Content-type: text/plainn"); break;case 'g':fprintf(f,"Content-type: image/gifn"); break;case 'j':fprintf(f,"Content-type: image/jpegn"); break;case 'h':fprintf(f,"Content-type: text/htmln"); break;发送服务器信息:fprintf(f,"Server: AMRLinux-httpd 0.2.4n");发送文件永不过期:fprintf(f,"Expires: 0n");七、实验步骤1. 阅读理解源码进入/arm2410c1/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 41 01”,在点阵LED上显示自己设计的图案,轮流显示。三、预备知识有 C语言基础掌握在 Linux下常用编辑器的使用 掌握 Makefile的编写和使用掌握 Linux 下的程序编译与交叉编译过程 需要部分数字电路的知识四、实验设备及工具硬件:UP-CUP S2410 经典平台、PC 机 Pentium 500 以上, 硬盘 10G 以上。 软件:PC 机操作系统 REDHAT LINUX 9.0MINICOMARM-LINUX 开发环境五、LED 数码管电路图其中各个引脚的功能在下面都有描述。74HC273 在 8 字数码管中开发板中的连接如图 所示:开发板设置2 个数码管,由74HC273 控制。74HC273是同步串行转并行的锁存器,在此通过SPI 总线和CPU 连接,锁存数据后驱动数码管发光。上面一副图的最左边接的是下面图的最右边六、程序分析LEDCODE10=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/这个是 10 个数字的编码/在这里主要是用到编码的过程假设 a 是 8 字型数码管的最上一横,以顺时针以次列出 b,c,d,e,f.中间那一横为 g,如果要显示 为 0 的话,由于在开发板中的连接是共阳极(请参考我们的电路图),所以只需要满足 a,b,c,d,e,f 为 0 即可,而 g 为 1,因为两个数码管的中间是个点号,我们用 h 表示,并且总是让它置为 1。因为我们在开发板的连接上可以看到 a 对应 d0,b 对应 d1,.h 对应 d7,所以当想显示为 0 的时候,那 么应该是 11000000。转化成为 16 进制的数据,也就成了 0Xc0.对应我们在 LEDCODE【10】数组中的 第一位。其他的每一位值,大家可以根据上面的方法依次类推。在 for 循环中我们写了如下语句。LEDWORD=(LEDCODEi<<8)|LEDCODE9-i;那是因为 LEDWORD 是一个 16 位的数。我们是需要将两个 8 字数码管同时显示,所以将 LEDCODEi左移 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 cmd, unsigned int arg)/printk("DOT buffer is %xn" ,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 实验结果

    注意事项

    本文(嵌入式系统原理与应用.docx)为本站会员(寂****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开