浙工大 嵌入式实验报告

合集下载

浙工大-嵌入式实验报告

浙工大-嵌入式实验报告

金艳霞通信2班201203110210实验五Linux交叉编译平台一、实验目的1.掌握一些基本的linux读写操作2.利用vcc编译c程序3.通过nfs挂载到实验箱中,利用交叉编译执行文件二.实验设备1.Arm9试验箱2.Pc机3.Linux系统服务器三.实验过程及实验结果1.连接电脑箱2.设置交叉编译环境启动putty.exe登陆192.168.1.1163.添加软件包至实验目录:①[shiyan@localhost ~]$ cd /home/shiyan②[shiyan@localhost ~]$ tar –zxvf arm-linux-gcc-3.4.4-glib-2.3.5-static.tar.gztar -zxvf arm-linux-gcc-3.4.4-glib-2.3.5-static.tar.gz③[shiyan@localhost201203110210]$exportPATH=$PATH:/home/shiyan/201203110210/opt/crosstool/arm-linux/gcc-3.4.4-glib-2.3.5/arm-linux/bin④[shiyan@localhost 201203110210]$ setOSTYPE=linux-gnuPATH=/usr/lib/qt-3.3/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/shiya n/bin:/home/shiyan/opt/crosstool/arm-linux/gcc-3.4.4-glibc-2.3.5/arm-linux/bin:/ho me/shiyan/opt/crosstool/arm-linux/gcc-3.4.4-glibc-2.3.5/arm-linux/bin:/home/shiyan /opt/crosstool/arm-linux/gcc-3.4.4-glibc-2.3.5/arm-linux/bin可以看出路径已添加⑤[shiyan@localhost 201203110210]$ arm-linux-g再按tabarm-linux-g++ arm-linux-gcc arm-linux-gcc-3.4.4 arm-linux-gccbug arm-linux-gcov⑥[shiyan@localhost 201203110210]$ arm-linux-gccarm-linux-gcc: no input files此时出错,无此文件3.测试程序①创建hello.c[shiyan@localhost ~]$ vi hello.c#include<stdio.h>int main(){printf("jin123");return 0;}:wq②查看是否生成文件[shiyan@matrix 201203110210]$ lsarm-linux-gcc-3.4.4-glib-2.3.5-static.tar.gz hello.c已经生成③打开hello.c[shiyan@localhost ~]$ ./hello.c-bash:/hello cannot execute binary file表示无法在服务器上执行④交叉编译hello.c[shiyan@localhost ~]$ arm-linux-gcc -o hello hello.c⑤将文件拷贝到nfs下[shiyan@localhost ~]$ cp hello /home/shiyan/nfs⑥挂载服务器到板子上/ $ mount –tnfs -o nolock 192.168.1.116:/home/shiyan/nfs/mnt/nfs/ $cdmnt/nfs⑦打开hello文件/ $./hello结果输出:Jin 123四.实验总结上述实验可以得出,交叉编译的二进制可以在板子上运行,却不能在服务器上运行,很好的认清了交叉编译的意义和功能。

嵌入式实训报告2篇

嵌入式实训报告2篇

嵌入式实训报告嵌入式实训报告精选2篇(一)嵌入式实训报告一、实训目的和背景嵌入式系统在现代社会中应用广泛,具有重要的实际意义。

为了进步学生的实际应用才能,我们组织了一次嵌入式实训。

通过实际操作与理论,培养学生的嵌入式系统开发才能和解决实际问题的才能。

二、实训内容1. 嵌入式系统开发环境的搭建:学生首先学习如何搭建嵌入式系统的开发环境,包括安装集成开发环境、配置编译工具链等。

2. 嵌入式系统根底知识的学习:学生学习嵌入式系统的根本概念、原理和架构,理解嵌入式系统的工作原理和开发流程。

3. 嵌入式系统软件开发:学生通过实际编程理论,掌握嵌入式系统的软件开发技术,包括编写驱动程序、应用程序等。

4. 嵌入式系统硬件开发:学生通过实际操作,学习嵌入式系统的硬件开发技术,包括电路设计、硬件接口设计等。

5. 嵌入式系统应用理论:学生完成一个实际工程,将所学的嵌入式系统开发技术应用到实际问题的解决中,加深对嵌入式系统的理解和应用才能。

三、实训过程1. 搭建嵌入式系统开发环境:学生按照实训指导书的要求,完成嵌入式系统开发环境的搭建。

2. 学习嵌入式系统根底知识:学生通过听课和自学,理解嵌入式系统的根本原理和架构。

3. 软件开发理论:学生根据实训指导书中的实例,编写嵌入式系统的软件程序。

4. 硬件开发理论:学生根据实训指导书中的实例,完成嵌入式系统的硬件设计和接口设计。

5. 应用理论:学生根据自己的兴趣和实际需求,选择一个实际工程,并使用嵌入式系统开发技术,完成工程的开发和施行。

四、实训效果通过嵌入式实训,学生深化学习了嵌入式系统的开发技术和实际应用,掌握了嵌入式系统的开发流程和方法。

同时,学生通过理论操作,进步了自己的动手才能和解决问题的才能。

实训过程中,学生不断考虑和探究,解决了许多实际问题,获得了良好的效果。

五、总结与展望嵌入式实训是一次富有意义的理论活动,通过实际操作与理论,加深了学生对嵌入式系统的理解和应用才能。

嵌入式技术及应用实验报告

嵌入式技术及应用实验报告

嵌入式技术及应用实验报告嵌入式技术及应用实验报告一、实验目的本实验旨在通过学习嵌入式技术及应用,掌握嵌入式系统的基本原理和应用方法,培养学生的嵌入式系统设计和开发能力。

二、实验内容1. 嵌入式系统的概念和特点2. 嵌入式系统的硬件平台和软件开发环境3. 嵌入式系统的应用案例分析4. 嵌入式系统的设计和开发实践三、实验原理1. 嵌入式系统的概念和特点嵌入式系统是一种专门设计用于特定应用领域的计算机系统,它通常由硬件和软件两部分组成。

嵌入式系统的特点包括:实时性要求高、资源受限、功耗低、体积小、成本低等。

2. 嵌入式系统的硬件平台和软件开发环境嵌入式系统的硬件平台通常由处理器、存储器、输入输出设备等组成。

常用的处理器有ARM、MIPS等,存储器包括RAM、ROM、Flash等,输入输出设备有键盘、显示器、传感器等。

嵌入式系统的软件开发环境包括编译器、调试器、仿真器等工具。

3. 嵌入式系统的应用案例分析嵌入式系统广泛应用于各个领域,如智能手机、汽车电子、医疗设备、工业控制等。

以智能手机为例,它是一种集成了通信、计算、娱乐等功能的嵌入式系统,通过操作系统和应用软件实现各种功能。

4. 嵌入式系统的设计和开发实践嵌入式系统的设计和开发包括硬件设计和软件开发两个方面。

硬件设计主要包括电路设计、PCB设计等,软件开发主要包括驱动程序开发、应用程序开发等。

在设计和开发过程中,需要考虑系统的性能、可靠性、安全性等因素。

四、实验步骤1. 学习嵌入式系统的概念和特点,了解嵌入式系统的基本原理。

2. 学习嵌入式系统的硬件平台和软件开发环境,掌握常用的处理器、存储器和输入输出设备。

3. 分析嵌入式系统的应用案例,了解不同领域的嵌入式系统的设计和开发方法。

4. 进行嵌入式系统的设计和开发实践,包括硬件设计和软件开发两个方面。

5. 调试和测试嵌入式系统,验证系统的功能和性能。

6. 总结实验结果,撰写实验报告。

五、实验结果与分析通过本次实验,我对嵌入式系统的概念和特点有了更深入的了解。

嵌入式实训报告范文2篇

嵌入式实训报告范文2篇

嵌入式实训报告范文嵌入式实训报告范文精选2篇(一)嵌入式实训报告一、实训目的和背景嵌入式实训的目的是通过设计和实现一个嵌入式系统,培养学生的嵌入式系统开发才能和团队协作才能。

本次实训的背景是为了满足社会对嵌入式系统开发人才的需求,进步学生的实际动手才能。

二、实训内容1. 硬件平台的选择和搭建:选择了一款ARM开发板作为硬件平台,并搭建了相应的开发环境。

2. 系统设计和分析:根据实训要求,我们团队设计了一个智能门锁系统,包括用户认证、门锁控制和远程监控功能。

3. 软件开发:使用C语言和嵌入式开发工具进展软件开发,实现了用户认证、门锁控制和远程监控等功能。

4. 硬件连接和调试:将开发板和相关传感器、执行器等硬件设备进展连接和调试,确保系统可以正常运行。

5. 功能测试和调优:对系统进展全面测试,发现并修复了一些问题,并对系统进展了性能优化。

三、实训心得和体会通过本次实训,我深入认识到嵌入式系统开发的复杂性和挑战性。

在实训过程中,我们团队遇到了许多问题,比方硬件和软件的兼容性、性能优化等方面。

但是通过团队的努力和合作,我们成功解决了这些问题,并完成了一个功能完善的嵌入式系统。

此外,我还学到了许多软件开发和硬件调试的技巧,进步了自己的实际动手才能。

在团队协作方面,我们团队成员之间互相配合,共同解决问题,形成了良好的协作机制。

总结起来,本次嵌入式实训让我受益匪浅,学会了许多实际应用的技能和知识,并进步了自身的综合才能。

四、实训成果展示在实训完毕后,我们团队成功完成了一个智能门锁系统,具备用户认证、门锁控制和远程监控等功能。

系统的稳定性和可靠性得到了验证,并且在实际使用中得到了积极的反应。

附图:〔展示系统界面、硬件设备连接示意图等〕五、实训改良意见尽管本次实训获得了良好的成果,但仍有一些方面需要改良。

首先,实训的时间安排可以更合理一些,以便更充分地利用时间进展理论操作。

其次,可以增加一些真实场景的案例分析和解决方案的设计,以提升学生的实际应用才能。

嵌入式系统实验报告

嵌入式系统实验报告

实验报告课程名称:嵌入式系统学院:信息工程专业:电子信息工程班级:学生姓名:学号:指导教师:开课时间:学年第一学期实验名称:IO接口(跑马灯)实验时间:11.16 实验成绩:一、实验目的1.掌握 STM32F4 基本IO口的使用。

2.使用STM32F4 IO口的推挽输出功能,利用GPIO_Set函数来设置完成对 IO 口的配置。

3.控制STM32F4的IO口输出,实现控制ALIENTEK 探索者STM32F4开发板上的两个LED实现一个类似跑马灯的效果。

二、实验原理本次实验的关键在于如何控制STM32F4的IO口输出。

IO主要由:MODER、OTYPER、OSPEEDR、PUPDR、ODR、IDR、AFRH和AFRL等8个寄存器的控制,并且本次实验主要用到IO口的推挽输出功能,利用GPIO_Set函数来设置,即可完成对IO口的配置。

所以可以通过了开发板上的两个LED灯来实现一个类似跑马灯的效果。

三、实验资源实验器材:探索者STM32F4开发板硬件资源:1.DS0(连接在PF9)2.DS1(连接在PF10)四、实验内容及步骤1.硬件设计2.软件设计(1)新建TEST工程,在该工程文件夹下面新建一个 HARDWARE文件夹,用来存储以后与硬件相关的代码。

然后在 HARDWARE 文件夹下新建一个LED文件夹,用来存放与LED相关的代码。

(2)打开USER文件夹下的test.uvproj工程,新建一个文件,然后保存在 LED 文件夹下面,保存为 led.c,在led.c中输入相应的代码。

(3)采用 GPIO_Set 函数实现IO配置。

LED_Init 调用 GPIO_Set 函数完成对 PF9 和 PF10 ALIENTEK 探索者 STM32F407 开发板教程 119 STM32F4 开发指南(寄存器版) 的模式配置,控制 LED0 和 LED1 输出 1(LED 灭),使两个 LED 的初始化。

嵌入式系统开发实习报告正文

嵌入式系统开发实习报告正文

嵌入式系统开发实习报告正文一、实习背景及目的随着信息技术的飞速发展,嵌入式系统已经广泛应用于各个领域,如家电、工业控制、医疗设备等。

作为一种具有特定功能、成本低、功耗小、体积小的计算机系统,嵌入式系统在我国经济社会发展中具有重要地位。

为了更好地了解嵌入式系统开发技术,提高自己的实际动手能力,我参加了为期两周的嵌入式系统开发实习。

本次实习的主要目的是学习嵌入式系统的基本原理,掌握嵌入式系统开发流程,培养实际动手能力和团队协作精神。

二、实习内容与过程1. 实习前的准备工作在实习开始前,我们参加了为期一周的嵌入式系统基础知识培训,学习了嵌入式系统的基本概念、硬件组成、软件结构以及开发工具等。

通过培训,我们对嵌入式系统有了初步的认识,为实习打下了基础。

2. 实习过程实习过程中,我们分为若干小组,每组选定一个项目进行嵌入式系统开发。

我所在的小组选定了基于STM32微控制器的温湿度监控系统项目。

实习过程主要包括以下几个环节:(1)需求分析:根据实际应用场景,确定监控系统需要实现的功能,如温度、湿度测量、数据存储、实时显示等。

(2)硬件选型:根据需求分析,选择合适的微控制器、传感器、存储器等硬件组件。

(3)硬件调试:搭建硬件平台,对各个组件进行调试,确保硬件系统正常工作。

(4)软件设计:编写嵌入式软件,实现对硬件的控制和数据处理。

(5)系统集成与测试:将硬件和软件整合在一起,进行系统测试,确保系统稳定可靠。

3. 实习成果通过实习,我们完成了基于STM32微控制器的温湿度监控系统开发,实现了以下功能:(1)温度、湿度测量:采用DS18B20温度传感器和DHT11湿度传感器,实现实时测量温度和湿度。

(2)数据存储:将测量数据存储在SD卡中,以便后续分析。

(3)实时显示:通过LCD显示屏实时显示温度和湿度数据。

(4)报警功能:当温度或湿度超过设定阈值时,系统发出报警提示。

三、实习收获与反思通过本次实习,我收获颇丰,具体表现在以下几个方面:1. 知识与技能:掌握了嵌入式系统的基本原理,学会了使用嵌入式开发工具,提高了实际动手能力。

嵌入式综合实验报告

嵌入式综合实验报告

嵌入式综合实验报告本科生课程考试成绩单(试卷封面)任课教师签名:日期:注:1. 以论文或大作业为考核方式的课程必须填此表,综合考试可不填。

“简要评语缺填无效。

2. 任课教师填写后与试卷一起送院系研究生教务员处。

3. 学位课总评成绩以百分制计分。

1目录一、实验目的和要求 (2)二、实验原理 (2)(一)实验板功能 (2)(二)硬件 (2)三、实验方案与实验步骤 (2)(一)实现开机动画(10分) (2)(二)GUI界面设计(10分) (2)(三)电子相册相应功能(30分) (3)(四)MP3相应功能(30分) (3)(五)屏保功能(20分) (4)四、实验设备与器材配置 (4)五、实验记录 (4)(一)实现开机动画 (4)(二)GUI界面设计 (7)(三)MP3相应功能 (10)(四)电子相册相应功能 (17)(五)屏保功能 (27)六、实验总结 (32)一、实验目的和要求1、通过“基于华邦710的智能机器宠物”产品开发为案例,掌握基于uCLinux/ARM7的产品开发的流程及方法;2、熟悉AC97接口的应用,了解音频文件编解码方法;3、开发简答的人机交互界面。

二、实验原理(一)实验板功能本系统围绕华邦的ARM7芯片(w90p710/745)实现了丰富的软硬件应用实例,既有前后台系统的应用,又有基于操作系统uClinux的应用,在这个基础上,用户可以快速开发自己的产品。

(二)硬件开发板由底板、核心板、LCD模块构成。

其中LCD模块采用AUO 的3寸TFT 真彩屏,型号为A030DL01,分辨率为960*240。

三、实验方案与实验步骤(一)实现开机动画(10分)要求:起始状态在屏幕中央有一蓝色方块(大小自定,背景色为黑色),蓝色方块的四条边逐渐向四周扩展,扩展到接近屏幕边界时,蓝色方块又逐渐缩小到原来的起始状态。

(二)GUI界面设计(10分)按键定义:定义四个键:左键、右键、确定键、退出键(每个按键对应一个指示灯,当按下此按键的时候,对应的指示灯点亮)(1)在实现开机动画后,显示主界面,在主界面上有两个菜单选项,分别表示MP3播放和电子相册功能。

嵌入式实训报告

嵌入式实训报告

嵌入式实训报告嵌入式实训报告1. 实训目标我们的嵌入式实训课程旨在培养学生的嵌入式系统开发和设计能力。

通过实训,学生将学习嵌入式系统的基本原理和设计方法,并能够应用所学知识开发具有实际应用价值的嵌入式系统。

2. 实训内容我们的实训课程内容包括以下方面:- 嵌入式系统的原理和基础知识:学习嵌入式系统的基本概念、架构和工作原理。

- 嵌入式软件开发:学习嵌入式软件的开发工具和环境,掌握嵌入式软件的编程技巧。

- 嵌入式硬件设计与开发:学习嵌入式硬件的设计方法和工具,了解嵌入式硬件的基本原理和电路设计技术。

- 嵌入式系统的集成与测试:学习嵌入式系统的集成方法和测试技术,掌握嵌入式系统的调试和故障排除方法。

3. 实训项目我们为学生设计了一个实际的嵌入式项目,学生需要在实训期间完成该项目的开发和测试工作。

项目的要求是设计一个智能家居控制系统,该系统能够对家居设备进行远程控制,并能根据用户的需求进行智能调控。

项目的开发过程包括以下几个阶段:- 系统需求分析:学生需要根据项目要求分析系统的功能和性能需求,并编写相应的系统需求文档。

- 系统设计与实现:学生需要进行系统的结构设计、模块划分和接口设计,并实现系统的软硬件模块。

- 系统集成与测试:学生需要将各个模块进行集成,并进行系统的功能测试和性能测试,确保系统能够正常工作。

- 系统优化与调试:学生需要对系统进行优化和调试,解决系统中可能存在的问题和缺陷。

4. 实训效果评估实训结束后,我们将对学生的实训效果进行评估。

评估的指标包括项目的完成情况、实训报告的撰写质量、实训过程中的表现和学生的实际能力提升情况等。

学生将根据评估结果获得相应的实训成绩和证书。

5. 实训总结通过嵌入式实训课程,学生将获得嵌入式系统开发和设计的能力,并能够将所学知识应用到实际项目中。

实训过程中,学生将锻炼团队合作能力、创新能力和问题解决能力,培养实际工作中所需的技能和素质。

嵌入式实训对于学生的就业竞争力提升和职业发展具有重要意义。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

金艳霞通信2班201203110210实验五Linux交叉编译平台一、实验目的1.掌握一些基本的linux读写操作2.利用vcc编译c程序3.通过nfs挂载到实验箱中,利用交叉编译执行文件二.实验设备1.Arm9试验箱2.Pc机3.Linux系统服务器三.实验过程及实验结果1.连接电脑箱2.设置交叉编译环境启动putty.exe登陆192.168.1.1163.添加软件包至实验目录:①[shiyan@localhost ~]$ cd /home/shiyan②[shiyan@localhost ~]$ tar –zxvf arm-linux-gcc-3.4.4-glib-2.3.5-static.tar.gztar -zxvf arm-linux-gcc-3.4.4-glib-2.3.5-static.tar.gz③[shiyan@localhost201203110210]$exportPATH=$PATH:/home/shiyan/201203110210/opt/crosstool/arm-linux/gcc-3.4.4-glib-2.3.5/arm-linux/bin④[shiyan@localhost 201203110210]$ setOSTYPE=linux-gnuPATH=/usr/lib/qt-3.3/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/shiya n/bin:/home/shiyan/opt/crosstool/arm-linux/gcc-3.4.4-glibc-2.3.5/arm-linux/bin:/ho me/shiyan/opt/crosstool/arm-linux/gcc-3.4.4-glibc-2.3.5/arm-linux/bin:/home/shiyan /opt/crosstool/arm-linux/gcc-3.4.4-glibc-2.3.5/arm-linux/bin可以看出路径已添加⑤[shiyan@localhost 201203110210]$ arm-linux-g再按tabarm-linux-g++ arm-linux-gcc arm-linux-gcc-3.4.4 arm-linux-gccbug arm-linux-gcov⑥[shiyan@localhost 201203110210]$ arm-linux-gccarm-linux-gcc: no input files此时出错,无此文件3.测试程序①创建hello.c[shiyan@localhost ~]$ vi hello.c#include<stdio.h>int main(){printf("jin123");return 0;}:wq②查看是否生成文件[shiyan@matrix 201203110210]$ lsarm-linux-gcc-3.4.4-glib-2.3.5-static.tar.gz hello.c已经生成③打开hello.c[shiyan@localhost ~]$ ./hello.c-bash:/hello cannot execute binary file表示无法在服务器上执行④交叉编译hello.c[shiyan@localhost ~]$ arm-linux-gcc -o hello hello.c⑤将文件拷贝到nfs下[shiyan@localhost ~]$ cp hello /home/shiyan/nfs⑥挂载服务器到板子上/ $ mount –tnfs -o nolock 192.168.1.116:/home/shiyan/nfs/mnt/nfs/ $cdmnt/nfs⑦打开hello文件/ $./hello结果输出:Jin 123四.实验总结上述实验可以得出,交叉编译的二进制可以在板子上运行,却不能在服务器上运行,很好的认清了交叉编译的意义和功能。

实验六Armboot下载运行及tcp实验一.实验目的1.掌握armboot的编译2.掌握tftp工具的使用3.掌握armboot下载运行4.掌握windows的tcp客户端的建立及通信过程5.掌握tcp的基本原理二.实验设备1.Arm9试验箱2.Pc机3.Linux系统服务器三.实验过程及实验结果1)Armboot①编译armboot-1.1.0cd /home/shiyan/arm-linux-2.6/armboot-1.1.0[shiyan@matrix armboot-1.1.0]$ make②产生的armboot.bin拷贝到tftp的目录服务下[shiyan@matrixarmboot-1.1.0]$cparmboot.bin /home/shiyan/arm-linux-2.6/armboot-1.1.0/tftpboot/armboot③打开arm9开发板,在五秒内按ESC,检查网络环境CPE>printenvbootdelay=3baudrate=38400ethaddr=00:40:25:00:00:01netmask=255.255.255.0sererip=192.168.1.65ipaddr=192.168.1.111serverip=192.168.1.30Environment size: 139/131068 bytes④将armboot的网络环境改为tftp服务的网络地址setenv serverip 192.168.1.220CPE>saveenvUn-Protected 1 sectorsErasing sector 6 ... ok.0x800e0000 o Flash...done.Protected 1 sectors⑤将armboot.bin文件通过tftp传输到内存0x2000000H中CPE>tftp 0x2000000 armboot.binARP broadcast 1ARP broadcast 2⑥运行go 0x2000000⑦检查网络环境CPE> printenvbootdelay=3baudrate=38400ethaddr=00:40:25:00:00:01netmask=255.255.255.0sererip=192.168.1.65ipaddr=192.168.1.111serverip=192.168.1.220通过serverip的改变可看出armboot下载的正确性。

实验七Mount挂载实验一.实验目的1.掌握一些基本的linux读写操作(touch指令)2.掌握Usb挂载方法3.掌握配置nfs的方法二.实验设备1.Arm9试验箱2.Pc机3.Linux系统服务器4.U盘三.实验过程及实验结果A.文件夹挂载1.服务器[shiyan@matrix ~]$/etc/rc.d/init.d/nfs start2.板子挂载/ $ ifconfig eth0 192.168.1.98/ $ mount -t nfs -o nol ock 192.168.1.220:/home/shiyan/nfs/mnt/nfs/$ dfFilesystem 1k-bl ocks Used Availabl e Use% Mounted on/d ev/mtdbl ock1 1024 544 480 53% /mnt/mtd192.168.1.220:/home/shiyan/nfs 515455456 59590720 429681056 12% /mnt/nfsb 挂载①将u盘插入arm9开发板,并启动②查看盘符信息/ $ fdisk -l③创建一个/mnt/usb文件夹/ $ mkdir /mnt/usb④把sda1盘符mount到/mnt/usb文件上/ $ mount /dev/sda1 /mnt/usb// $ cd /mnt/usb/mnt/usb $ ls⑤创建文件,并输入字符串/mnt/usb $ vi jin.txthello!⑥解挂载/mnt/usb $ unmount /mnt/usb//bin/sh: unmount: not found⑦将u盘拔出,插入电脑,观察该文件结果正确实验八RTC时钟驱动实验一.实验目的1.了解RTC工作原理2.掌握RTC时钟驱动编程二.实验内容1.编写RTC驱动程序2.通过insmod加载驱动程序3.编写代码修改RTC内部时间三.实验设备1.PC机2.Arm9实验箱客户端3.Linux操作系统服务端四.实验过程及结果1.实验代码#include <linux/module.h>#include <linux/fs.h>#include <linux/miscdevice.h>#include <linux/string.h>#include <linux/init.h>#include <linux/poll.h>#include <linux/proc_fs.h>#include <linux/ioport.h>#include <asm/bitops.h>#include <asm/hardware.h>#include <asm/irq.h>#include <asm/io.h>#include <linux/rtc.h>#include <linux/delay.h>#include <linux/i2c.h>#include <linux/bcd.h>#define DRIVER_VERSION "0.01"/* Register map *//* rtc section */// control and status registers#define REG_CS1 0x00#define TEST1 (1<<7) // 0-normal mode, must be set to logic 0 during normal operations; 1-EXT_CLK test mode#define STOP (1<<5) // 0-RTC source clock runs; 1-the RTC clock is stopped (CLKOUT at 32.768KHz is still available)#define TESTC (1<<3) // 0-power-on reset (POR) override facility is disable; set to logic 0 for normal operation; 1-POR override may be enable#define REG_CS2 0x01#define TI_TP (1<<4) // 0-\int is active when TF is active (subject to the status of TIE)#define AF (1<<3)#define TF (1<<2)#define AIE (1<<1)#define TIE (1<<0)// Time and date registers#define REG_SC 0x02 // vl_seconds (0-59)#define REG_MN 0x03 // minutes (0-59)#define REG_HR 0x04 // hours (0-23)#define REG_DT 0x05 // days (1-31)#define REG_DW 0x06 // weekdays (0-6)#define REG_MO 0x07 // century_months (1-12)#define REG_YR 0x08 // years (0-99)// Alarm registers#define REG_MA 0x09 // minute_alarm#define AE_M (1<<7)#define REG_HA 0x0a // hour_alarm#define AE_H (1<<7)#define REG_DA 0x0b // day_alarm#define AE_D (1<<7)#define REG_WA 0x0c // weekday_alarm#define AE_W (1<<7)// CLKOUT control register#define REG_CC 0x0d#define FE (1<<7)// Timer registers#define REG_TC 0x0e // timer_control#define TE (1<<7)#define REG_TMR 0x0f // timer#define RTC_SECTION_LEN 7/* i2c configuration */#define I2C_ADDR 0xa2/////////////////////////////////////////////////////////////#define DEFAULT_I2C_CLOCKDIV 180//for APB 108MHz staticunsignedlong rtc_status;staticvolatileunsignedlong rtc_irq_data;staticunsignedlong rtc_freq = 1; /*FTRTC010 supports only 1Hz clock*/ staticstruct fasync_struct *rtc_async_queue;static DECLARE_WAIT_QUEUE_HEAD(rtc_wait);extern spinlock_t rtc_lock;MODULE_AUTHOR("GM Corp.");MODULE_LICENSE("GM License");externint GM_i2c_xfer(struct i2c_msg *msgs, int num, int clockdiv);/* block read */staticint i2c_read_regs(u8 reg, u8 buf[], unsigned len){struct i2c_msg msgs[1];//////////////buf[0] = reg;msgs[0].addr = I2C_ADDR>>1;msgs[0].flags = 0;msgs[0].len = 1;msgs[0].buf = buf;if (GM_i2c_xfer(msgs, 1, DEFAULT_I2C_CLOCKDIV) != 1)return -1;//////////////msgs[0].addr = I2C_ADDR>>1;msgs[0].flags = 1;msgs[0].len = len+1;msgs[0].buf = buf;if (GM_i2c_xfer(msgs, 1, DEFAULT_I2C_CLOCKDIV) != 1)return -1;return 0;}/* block write */staticint i2c_set_regs(u8 reg, u8 const buf[], unsigned len){u8 i2c_buf[10];struct i2c_msg msgs[1];i2c_buf[0] = reg;memcpy(&i2c_buf[1], &buf[0], len);msgs[0].addr = I2C_ADDR>>1;msgs[0].flags = 0;msgs[0].len = len+1;msgs[0].buf = i2c_buf;if (GM_i2c_xfer(msgs, 1, DEFAULT_I2C_CLOCKDIV) != 1)return -1;return 0;}staticint set_time(struct rtc_time const *tm){int sr;u8 regs[RTC_SECTION_LEN] = { 0, };printk("stop RTC\n");regs[0] = STOP;regs[1] = 0x00; // disable interrupt and clear all flagssr = i2c_set_regs(REG_CS1, regs, 2);if (sr < 0) { // write control and status registersprintk("%s: stop RTC failed\n", __func__);return sr;}printk("set_time Date(y/m/d):%d/%d/%dTime(h/m/s):%d/%d/%d\n",tm->tm_year,tm->tm_mon,tm->tm_mday,tm->tm_hour,tm->tm_mi n,tm->tm_sec);regs[REG_SC-REG_SC] = BIN2BCD(tm->tm_sec);regs[REG_MN-REG_SC] = BIN2BCD(tm->tm_min);regs[REG_HR-REG_SC] = BIN2BCD(tm->tm_hour);regs[REG_DT-REG_SC] = BIN2BCD(tm->tm_mday);regs[REG_MO-REG_SC] = BIN2BCD(tm->tm_mon);regs[REG_YR-REG_SC] = BIN2BCD(tm->tm_year-100);regs[REG_DW-REG_SC] = BIN2BCD(tm->tm_wday & 7);/* write RTC registers */sr = i2c_set_regs(REG_SC, regs, RTC_SECTION_LEN);if (sr < 0) {printk("%s: writing RTC section failed\n", __func__);return sr;}printk("start RTC\n");regs[0] = 0x00;sr = i2c_set_regs(REG_CS1, regs, 1);if (sr < 0) { // write control and status registersprintk("%s: start RTC failed\n", __func__);return sr;}return 0;}staticvoid read_time (struct rtc_time *tm){int sr;u8 regs[RTC_SECTION_LEN] = { 0, };sr = i2c_read_regs(REG_SC, regs, RTC_SECTION_LEN);if (sr < 0) {printk("%s: reading RTC section failed\n", __func__);return;}tm->tm_sec = BCD2BIN(regs[REG_SC-REG_SC]&0x7f);tm->tm_min = BCD2BIN(regs[REG_MN-REG_SC]&0x7f);tm->tm_hour = BCD2BIN(regs[REG_HR-REG_SC]&0x3f);tm->tm_mday = BCD2BIN(regs[REG_DT-REG_SC]&0x3f);tm->tm_wday = BCD2BIN(regs[REG_DW-REG_SC]&0x07);tm->tm_mon = BCD2BIN(regs[REG_MO-REG_SC]&0x1f); /* rtc starts at 1 */tm->tm_year = BCD2BIN(regs[REG_YR-REG_SC])+100;printk("read_time Date(YY/MM/DD):%d/%d/%dTime(hh/mm/ss):%d/%d/%d\n",tm->tm_year,tm->tm_mon,tm->tm_mday,tm->tm_hour,tm->tm _min,tm->tm_sec);}staticunsigned AIE_stat=0;/*ijsung: arch-indep function*/staticint rtc_open(struct inode *inode, struct file *file){if (test_and_set_bit (1, &rtc_status))return -EBUSY;rtc_irq_data = 0;return 0;}staticint rtc_release(struct inode *inode, struct file *file){unsignedchar buf[7];rtc_status = 0;return 0;}staticint rtc_fasync (int fd, struct file *filp, int on){return fasync_helper (fd, filp, on, &rtc_async_queue);}staticunsignedint rtc_poll(struct file *file, poll_table *wait){poll_wait (file, &rtc_wait, wait);return (rtc_irq_data) ? 0 : POLLIN | POLLRDNORM;}static loff_t rtc_llseek(struct file *file, loff_t offset, int origin){return -ESPIPE;}ssize_t rtc_read(struct file *file, char *buf, size_t count, loff_t *ppos) {DECLARE_WAITQUEUE(wait, current);unsignedlong data;ssize_t retval;if (count <sizeof(unsignedlong))return -EINVAL;add_wait_queue(&rtc_wait, &wait);set_current_state(TASK_INTERRUPTIBLE);for (;;) {spin_lock_irq (&rtc_lock);data = rtc_irq_data;if (data != 0) {rtc_irq_data = 0;break;}spin_unlock_irq (&rtc_lock);if (file->f_flags & O_NONBLOCK) {retval = -EAGAIN;goto out;}if (signal_pending(current)) {retval = -ERESTARTSYS;goto out;}schedule();}spin_unlock_irq (&rtc_lock);data -= 0x100; /* the first IRQ wasn't actually missed */ retval = put_user(data, (unsignedlong *)buf);if (!retval)retval = sizeof(unsignedlong);out:set_current_state(TASK_RUNNING);remove_wait_queue(&rtc_wait, &wait);return retval;}staticint rtc_ioctl(struct inode *inode, struct file *file, unsignedint cmd, unsignedlong arg){struct rtc_time tm, tm2;unsignedchar buf[7];switch (cmd) {case RTC_AIE_OFF:printk("Not Support\n");return 0;case RTC_AIE_ON:printk("Not Support\n");return 0;case RTC_ALM_READ:printk("Not Support\n");return 0;case RTC_ALM_SET:printk("Not Support\n");return 0;case RTC_RD_TIME:read_time(&tm);break;case RTC_SET_TIME:{unsigned usertime;unsignedchar buf[7];if (!capable(CAP_SYS_TIME))return -EACCES;if (copy_from_user (&tm, (struct rtc_time*)arg, sizeof (tm)))return -EFAULT;set_time(&tm);}return 0;case RTC_IRQP_READ:return put_user(rtc_freq, (unsignedlong *)arg);case RTC_IRQP_SET:if (arg != 1) return -EINVAL;return 0;case RTC_EPOCH_READ:return put_user (1970, (unsignedlong *)arg);default:return -EINVAL;}return copy_to_user ((void *)arg, &tm, sizeof (tm)) ? -EFAULT : 0;}staticstruct file_operations rtc_fops = {owner: THIS_MODULE,llseek: rtc_llseek,read: rtc_read,poll: rtc_poll,ioctl: rtc_ioctl,open: rtc_open,release: rtc_release,fasync: rtc_fasync,};staticstruct miscdevice ftrtc010rtc_miscdev = {RTC_MINOR,"rtc",&rtc_fops};staticint rtc_read_proc(char *page, char **start, off_t off, int count, int *eof, void *data) {// unsigned alarm_time;unsignedchar buf[7];char *p = page;int len;struct rtc_time tm;read_time(&tm);//printk("RTC ... %d\n",_sec);p += sprintf(p, "rtc_time\t: %02d:%02d:%02d\n""rtc_date\t: %04d-%02d-%02d\n""rtc_epoch\t: %04d\n",tm.tm_hour + 1, tm.tm_min, tm.tm_sec,tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday, 2000);// read_alarm(&tm);// p += sprintf(p, "alrm_time\t: %2dth day of week day\n"// "alrm_date\t: N/A for Platform\n",// tm.tm_wday);p += sprintf(p, "alrm_time\t: Not Support\n""alrm_date\t: Not Support\n");p += sprintf(p, "alarm_IRQ\t: %s\n", AIE_stat ? "yes" : "no" );len = (p - page) - off;if (len < 0)len = 0;*eof = (len <= count) ? 1 : 0;*start = page + off;return len;}staticint __init rtc_init(void){misc_register (&ftrtc010rtc_miscdev);create_proc_read_entry ("driver/rtc", 0, 0, rtc_read_proc, NULL); printk("PCF8563 Real Time Clock driver\n");return 0;}staticvoid __exit rtc_exit(void){remove_proc_entry ("driver/rtc", NULL);misc_deregister (&ftrtc010rtc_miscdev);}module_init(rtc_init);module_exit(rtc_exit);2.挂载usb/ $ ifconfig eth0 192.168.1.99/ $ mount -t nfs -o nolock 192.168.1.220:/home/shiyan/nfs /mnt/nfs / $ fdisk –l/ $ mkdir /mnt/usb/ $ mount /dev/sda1 /mnt/usb// $ cd /mnt/usb3.找到u盘中的pcf8563.ko/mnt/usb $ ls4.加载pcf8563.ko/mnt/usb $ insmod pcf8563.ko5.更改日期并写入6.重启检验日期与当前时间相符实验九视频采集RTP发送及远程视频监控实验一.实验目的1. 理解视频传输原理2. 掌握在IP网络中实现视频传输的方法3.理解远程控制原理4.掌握在windows下TCP客户端建立及通信过程二.实验内容1.搭建点对点视频传输模式2.开启视频采集3.开启Windows下tcp客户端,完成控制命令三.实验设备1.硬件:基于双核处理器架构的网络音视频传输教学实验系统;对接线;串口连接线;网线;集线器(HUB),PC机;2.软件:H.264流媒体软件设备端视频采集程序设备端视频传输程序串口操作软件四.实验步骤及结果A.视频采集1.连接好实验箱,打开串口通信端,远程mount到home/nfs文件夹/ $ mount -t nfs -o nolock 192.168.1.116:/home/shiyan/nfs /mnt/nfs2.挂载服务器下nfs与板子的/mnt/nfs,进入/mnt/nfs文件夹/ $ cd /mnt/nfs3.输入ls命令,目录下文件/mnt/nfs $ ls123321 clientxxww readme tcpserver StartLog0 ffgpio.ko server tcpserver19a gpio_test serverfxf tcpserver_arm_11 bo hello serverxw tcpserver_hdt client nfs1 tcpclient tcpserver_zn client_arm ok tcpclient19 tcpseverclient_arm_17 program_20_1.c tcpclient_29 tw2835_menu client_arm_st20 program_20_2.c tcpclient_arm_11 xianshiclient_dalan programyk tcpclient_hdt ykclientxw programyq tcpclient_zn yq4.运行tw2835_menu进行视频采集/mnt/nfs $ ./tw2835_menu&5.进入挂载目录并查看文件/mnt/nfs $ cd nfs1/mnt/nfs/nfs1 $ lsdev_app.app hello vedio.confTCPS1dev_app3 ffgpio.ko tw2835_menudev_app gpio_test tw2835_pic6.运行dev_app到板子IP192.168.1.9/mnt/nfs/nfs1 $ ./dev_app 192.168.1.97.开启H.264流媒体播放器进行视频接受a)用解码器解码,并允许注册.batb)打开H.264流媒体播放器,点击开启视频接收B.远程视频监控1.重复以上实验1~4步2.进入已挂载目录/mnt/nfs/nfs1,看到多个程序/mnt/nfs $ cd nfs1/mnt/nfs/nfs1 $ lsStartLog0 dev_app.app hello vedio.conf TCPS1 dev_app3 wwwboot.sh ffgpio.ko tw2835_menu3.运行TCPS1/mnt/nfs/nfs1 $ ./ TCPS14.程序进入等待状态,等待TCP连接到来5.开启H.264流媒体播放器,点击“开始视频接收”,屏幕变黑6.点击“控制功能”,输入设备端ip地址192.168.1.68,点击连接7.设备端出现下列字样,表示连接成功Servergetconnectionfrom192.168.1.688.点击“开启视频监控”,获得视频数据实验十一Tcp网络编程一、实验目的1.了解网络编程原理2.了解套接字的使用二、实验原理嵌入式Linux的网络通信程序是基于套接字模式的。

相关文档
最新文档