浙工大 嵌入式实验报告
- 格式:doc
- 大小:14.59 MB
- 文档页数:25
金艳霞通信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篇(一)嵌入式实训报告一、实训目的和背景嵌入式系统在现代社会中应用广泛,具有重要的实际意义。
为了进步学生的实际应用才能,我们组织了一次嵌入式实训。
通过实际操作与理论,培养学生的嵌入式系统开发才能和解决实际问题的才能。
二、实训内容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篇(一)嵌入式实训报告一、实训目的和背景嵌入式实训的目的是通过设计和实现一个嵌入式系统,培养学生的嵌入式系统开发才能和团队协作才能。
本次实训的背景是为了满足社会对嵌入式系统开发人才的需求,进步学生的实际动手才能。
二、实训内容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.学习cygwin;2.通过上机实验,使学生验证、巩固和充实所学理论知识,加深对相关内容的理解,了解嵌入式Linux的工具链,掌握基于Linux的C程序设计。
二、实验要求:1.安装cygwin;2.学习GCC的使用和Makefile的编写。
3.编程实现文件拷贝功能。
三、问题:1.简述Gcc的常用选项并举例说明。
Linux中gcc常用编译选项-x language filename设定文件所使用的语言,使后缀名无效,对以后的多个有效.也就是根据约定,C语言的后缀名称是.c的,而C++的后缀名是.C或者.cpp,如果你很个性,决定你的C代码文件的后缀名是. pig 哈哈,那你就要用这个参数,这个参数对他后面的文件名都起作用,除非到了下一个参数的使用。
可以使用的参数有下面的这些:`c', `objective-c', `c-header', `c++', `cpp-output', `assembler', and `assembler-with-cpp'.看到英文,应该可以理解的。
例子用法: cd..gcc -x c hello.pig-x none filename关掉上一个选项,也就是让gcc根据文件名后缀,自动识别文件类型例子用法:gcc -x c hello.pig -x none hello2.c-c只激活预处理,编译,和汇编,也就是他只把程序做成obj文件例子用法:gcc -c hello.c他将生成.o的obj文件-S只激活预处理和编译,就是指把文件编译成为汇编代码。
例子用法gcc -S hello.c他将生成.s的汇编代码,你可以用文本编辑器察看-E只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面.例子用法:gcc -E hello.c > pianoapan.txtgcc -E hello.c | more慢慢看吧,一个hello word 也要预处理成800行的代码-o制定目标名称,缺省的时候,gcc 编译出来的文件是a.out,很难听,如果你和我有同感,改掉它,哈哈例子用法gcc -o hello.exe hello.c (哦,windows用习惯了)gcc -o hello.asm -S hello.c-pipe使用管道代替编译中临时文件,在使用非gnu汇编工具的时候,可能有些问题gcc -pipe -o hello.exe hello.c-ansi关闭gnu c中与ansi c不兼容的特性,激活ansi c的专有特性(包括禁止一些asm inline typeof 关键字,以及UNIX,vax等预处理宏/* 注释中的不常用****************************************************-fno-asm此选项实现ansi选项的功能的一部分,它禁止将asm,inline和typeof用作关键字。
文件编号:GD/FS-8708(报告范本系列)嵌入式实验四实验报告详细版The Short-Term Results Report By Individuals Or Institutions At Regular Or Irregular Times, Including Analysis, Synthesis, Innovation, Etc., Will Eventually Achieve Good Planning For TheFuture.编辑:_________________单位:_________________日期:_________________嵌入式实验四实验报告详细版提示语:本报告文件适合使用于个人或机构组织在定时或不定时情况下进行的近期成果汇报,表达方式以叙述、说明为主,内容包含分析,综合,新意,重点等,最终实现对未来的良好规划。
文档所展示内容即为所得,可在下载完成后直接进行编辑。
3.4基于UART的加法器的实现一、实验目的学习lm3s9b92的串口通信学习应用超级终端调试串口学会应用UART有关的库函数二、实验设备计算机、LM3S9B92开发板、USB A型公口转Mini B型5Pin 数据线1 条三、实验原理Stellaris系列ARM的UART具有完全可编程、16C550型串行接口的特性。
Stellaris系列ARM含有2至3个UART模块。
该指导书在第一部分的1.2节中说明,该开发板使用了FT2232芯片实现usb到串口的转换。
并设置在芯片的B通道上使用虚拟COM接口(VCP)。
虚拟串行端口(VCP)与LM3s9b92上的UART0模块连接。
在安装FTDI驱动程序后,windows会分配一个串行通信端口号到VCP通道,并允许windows 应用程序(如超级终端)通过USB与LM3s9b92上的UART0进行通信。
利用Windows超级终端调试UART的方法对于该开发板,使用的是USB虚拟的COM端口,无须使用DB9连接器。
第1篇一、引言随着信息技术的飞速发展,嵌入式系统在各个领域得到了广泛的应用。
为了培养适应社会需求的高素质人才,我国高校纷纷开展嵌入式教学。
本文以某高校嵌入式教学实践为例,分析嵌入式教学的现状、方法及成效,以期为我国嵌入式教学提供参考。
二、嵌入式教学现状1. 课程设置目前,我国高校嵌入式课程设置主要包括嵌入式系统原理、嵌入式系统设计、嵌入式Linux、嵌入式编程等。
这些课程旨在使学生掌握嵌入式系统的基本原理、设计方法、编程技巧和开发工具。
2. 教学方法(1)理论教学:通过课堂讲授、案例分析等方式,使学生掌握嵌入式系统的基本概念、原理和设计方法。
(2)实践教学:通过实验、项目实践等环节,提高学生的动手能力和工程实践能力。
(3)线上教学:利用网络平台,为学生提供在线课程、在线实验、在线讨论等资源。
3. 教学资源(1)教材:高校普遍采用国内外优秀的嵌入式教材,如《嵌入式系统原理与应用》、《嵌入式Linux编程》等。
(2)实验设备:高校普遍配备嵌入式实验箱、开发板等实验设备,为学生提供实践平台。
(3)在线资源:高校积极建设在线教学资源,为学生提供丰富的学习资料。
三、嵌入式教学方法探讨1. 案例教学法案例教学法通过分析实际嵌入式系统项目,引导学生掌握嵌入式系统设计、开发和应用方法。
具体步骤如下:(1)选择典型案例:根据教学目标,选择具有代表性的嵌入式系统项目。
(2)分析案例:引导学生分析案例中嵌入式系统的设计思路、关键技术、开发过程等。
(3)讨论与总结:组织学生进行讨论,总结案例中的经验和教训。
2. 项目驱动教学法项目驱动教学法以项目为导向,让学生在完成项目的过程中,掌握嵌入式系统设计、开发和应用技能。
具体步骤如下:(1)确定项目:根据学生的兴趣和市场需求,确定嵌入式系统项目。
(2)项目分解:将项目分解为若干个子任务,明确每个子任务的技术要求和完成时间。
(3)分工与合作:学生分组,明确每个组员的责任,共同完成项目。
嵌入式实验(1-8)第一次实验1. 用汇编语言编程实现:若R0=0,则转移到标号L0处;若R0=1,则转移到标号L1处;若R0=2,则转移到标号L2处。
否则不转移。
2. 用汇编语言编程实现128位整数减法。
3. 用汇编语言编程实现:有4个数分别存放在R0~R3中,编程实现:4数相乘,其积存放在R4中。
4. 用汇编语言编程实现:R0中的高24位[31:8]保持不变,低8位[7:0]设置为0xB。
5. 用汇编语言编程实现:快速中断的使能和禁止。
第二次实验1. 用汇编语言编程实现:将存储器中起始地址M1处的4个字数据复制到地址M2处。
2. 用汇编语言编程实现:100+101+102+…+200,其和存于R0。
3. 用汇编语言编程实现:从存储器中起始地址M1处的20个字节数据中,找出一个最小数存放在R0中。
4. 利用跳转表的思想编写一个汇编子程序,根据键入的值(存放在R0中)不同来完成不同的子程序跳转(假设有四个子程序SUB0、SUB1、SUB2、SUB3)。
第三次实验1 用C语言和汇编语言混合编程实现:在C语言程序中调用汇编语言代码,完成字符串STR1与STR2内容的互换(假设STR1和STR2长度一致)。
2. 用C语言和汇编语言混合编程实现:在C语言程序中调用汇编语言代码,将输入的20个字节数据,从大到小加以排序,大数在前,小数在后。
3. 用C语言和汇编语言混合编程实现:用汇编语言完成对C语言全局变量的访问。
假设CV AR1和CV AR2是C语言中定义的全局变量,请用一段汇编语言访问它们,完成两者的相加运算,结果存放在CV AR1中。
第四次实验1. 用C语言和汇编语言混合编程实现:在C语言程序中调用汇编语言代码,完成两个字符串的比较,并返回比较结果。
如果比较字符串相同,返回1,否则返回0。
2. 用C语言和汇编语言混合编程实现:请完成一段字符串“Hello Zhejiang University of Technology!”的拷贝,要求主程序用C语言编写,字符串拷贝子程序用汇编语言编写。
嵌入式实习报告嵌入式实习报告(精选5篇)在生活中,报告的用途越来越大,我们在写报告的时候要注意逻辑的合理性。
相信许多人会觉得报告很难写吧,以下是店铺精心整理的嵌入式实习报告(精选5篇),希望对大家有所帮助。
嵌入式实习报告篇1一、实习时间20xx年4月12日-20xx年4月26日二、指导教师姓名陈xx三、实习地点长沙市牛耳服务外包实训基地四、实习目的与内容对于嵌入式项目进行学习培训,掌握嵌入式的主要项目及相关技术五、实习收获与体会一转眼半个月的实习生活过去了,现在我已经回到学校,回想起半个月的实习生活,自己学到了很多,懂得了很多。
真的说不出是什么感觉,伴着时间,就像是在和自己的影子赛跑,不可能从真实的两面去看清它,只是经意不经意的感受着有种东西在过去,也许更适合的只有那句话:时不待我,怎可驻足。
原以为实习对于我来说会是很长,但实际却不同。
想象收获的东西,真的很多,看看我的工作笔记,一篇又一篇,记别人的事情比自己的还多,也许实习,并不像我想象中的那样轻松惬意,而是充满了挑战和艰辛。
我给自己敲响了警钟:“不要半途而废,做事情切忌三分热度。
”我信心十足的回答到:“我一定会坚持到底!”天下英雄皆我辈,一入江湖立马催。
” 从学校到社会的大环境的转变,身边接触的人也完全换了角色,老师变成老板,同学变成同事,相处之道完全不同。
在这巨大的转变中,我们可能彷徨,迷茫,无法马上适应新的环境,但在同学、同事的帮助和自己摸索的情况下,我还是完成了这次实习。
但我发现,以我们的经验,不学到一定的深度和广度是难以在实际工作中应付自如的。
因此反映出学习的还不够,缺点疏漏。
需在加以刻苦钻研及学习,不断开拓视野,增强自己的实践操作技能,我们也许看不惯企业之间残酷的竞争,无法忍受同事之间漠不关心的眼神和言语。
很多时候觉得自己没有受到领导重用,所干的只是一些无关重要的杂活,自己的提议或工作不能得到老板的肯定。
做不出成绩时,会有来自各方面的压力,老板的眼色同事的嘲讽。
嵌入式系统实验报告一、实验目的本次嵌入式系统实验的主要目的是深入了解嵌入式系统的基本原理和开发流程,通过实际操作和项目实践,提高对嵌入式系统的设计、编程和调试能力。
二、实验设备与环境1、硬件设备嵌入式开发板:_____计算机:_____调试工具:_____2、软件环境操作系统:_____开发工具:_____编译环境:_____三、实验内容1、基础实验熟悉开发板的硬件结构和接口,包括处理器、存储器、输入输出端口等。
学习使用开发工具进行程序编写、编译和下载。
2、中断实验了解中断的概念和工作原理。
编写中断处理程序,实现对外部中断的响应和处理。
3、定时器实验掌握定时器的配置和使用方法。
利用定时器实现定时功能,如周期性闪烁 LED 灯。
4、串口通信实验学习串口通信的协议和编程方法。
实现开发板与计算机之间的串口数据传输。
5、 ADC 转换实验了解 ADC 转换的原理和过程。
编写程序读取 ADC 转换结果,并进行数据处理和显示。
四、实验步骤1、基础实验连接开发板与计算机,打开开发工具。
创建新的项目,选择合适的芯片型号和编译选项。
编写简单的程序,如控制 LED 灯的亮灭,编译并下载到开发板上进行运行和调试。
2、中断实验配置中断相关的寄存器,设置中断触发方式和优先级。
编写中断服务函数,在函数中实现相应的处理逻辑。
连接外部中断源,观察中断的触发和响应情况。
3、定时器实验初始化定时器相关的寄存器,设置定时器的工作模式和定时周期。
在主程序中启动定时器,并通过中断或查询方式获取定时时间到达的标志。
根据定时标志控制 LED 灯的闪烁频率。
4、串口通信实验配置串口相关的寄存器,设置波特率、数据位、停止位等参数。
编写发送和接收数据的程序,实现开发板与计算机之间的双向通信。
使用串口调试助手在计算机上进行数据收发测试。
5、 ADC 转换实验配置 ADC 模块的相关寄存器,选择输入通道和转换精度。
启动 ADC 转换,并通过查询或中断方式获取转换结果。
嵌入式实验报告二在当今科技飞速发展的时代,嵌入式系统已经成为了众多领域中不可或缺的一部分。
从智能家居到工业自动化,从医疗设备到汽车电子,嵌入式系统的应用无处不在。
本次嵌入式实验,让我对嵌入式系统有了更深入的理解和认识。
本次实验的目的是通过实际操作,进一步掌握嵌入式系统的开发流程和相关技术。
实验所使用的硬件平台是_____开发板,其搭载了_____处理器,具有丰富的接口和资源。
软件方面,我们使用了_____集成开发环境(IDE)进行程序的编写、编译和调试。
实验的第一个任务是实现一个简单的 LED 闪烁程序。
通过配置开发板的引脚,控制连接在引脚上的 LED 灯按照一定的频率闪烁。
这个看似简单的任务,却让我对嵌入式系统的底层硬件操作有了初步的了解。
在编写代码的过程中,需要熟悉开发板的引脚定义、时钟配置以及中断处理等知识。
经过多次调试和修改,终于成功地让 LED 灯闪烁起来,那一刻的成就感难以言表。
接下来的实验是实现一个温度传感器的数据采集和显示。
我们使用了_____型号的温度传感器,通过 SPI 接口与开发板进行通信。
在这个过程中,不仅要掌握传感器的通信协议,还要学会如何处理采集到的数据,并将其在数码管或者液晶显示屏上进行显示。
在遇到数据读取不稳定、显示错误等问题时,通过仔细检查代码和硬件连接,最终解决了问题。
在实验过程中,也遇到了不少的困难和挑战。
例如,在配置开发板的时钟时,由于对时钟源和分频系数的理解不够深入,导致系统运行不稳定。
还有在编写中断服务程序时,出现了中断响应不及时的情况,经过查阅资料和反复测试,发现是中断优先级设置不正确。
这些问题的解决,让我深刻体会到了嵌入式系统开发的复杂性和严谨性。
通过这次实验,我不仅掌握了嵌入式系统开发的基本技能,还培养了自己解决问题的能力和团队协作精神。
在实验中,与小组成员共同探讨问题、分享经验,使得实验进展更加顺利。
同时,也让我认识到了自己在知识储备和实践能力方面的不足之处,为今后的学习和研究指明了方向。
浙工大嵌入式实验报告1嵌入式实验报告通信1202XX年03110210金艳霞实验1:ADS1.2集成开发环境练习一、实验目的了解ADS1.2集成开发环境的实用方法二、实验内容1.建立一个新的工程2.建立一个C源文件,并添加到工程中3.建立编译连接控制选项4.编译连接工程三、实验设备1.硬件:PC机;(1)基于ARM9系统教学实验系统(2)串口线(3)Multi-ICE仿真器2.软件:PC机操作系统(WindowXP)(1)WIndows下的Multi-ICEServer、CodewarriorforARMDeveloperSuite和AXDDebugger;四、实验步骤1.建立工程启动CodewarriorforARMDeveloperSuite,选择File—New,使用ARMExecutableImage工程建立一个工程,工程名为ADS;2.在工程中创建一个新文件选择File—New,建立一个新的文件TEST1.s,设置直接添加到项目中,输入程序如下:AREAExamplel,CODE,READONLYENTRYCODE32;定义后面的指令为32位的ARM指令STARTMOVR0,#15;将15放入R0MOVR1,#8;将8放入R1ADDSR0,R0,R1;R0=R0+R1BSTARTEND3.设置地址选择Edit-DebugRelSettings,在DebugRelSettings对话框的左边选择ARMLinker项,然后在Output页设置连接地址;4.编译工程选择Project-Make5..单步运行程序实验2:汇编指令实验1一、实验目的1.了解ADS1.2集成开发环境及ARMulator仿真软件2.掌握汇编指令的用法,并能编写简单的汇编指令3.掌握指令的条件执行和使用LDR/STR指令完成存储器的访问二、实验内容1.使用LDR指令读取0x40003100地址上的数据,将数据加1,若结果小于10,则使用STR指令把结果写回原地址;若结果大于等于10,则把0写回原地址2.使用ADS1.2仿真软件,单步、全速运行程序,设置断点,打开寄存器窗口监视R0和R1的值,打开存储器观察窗口监视0x40003100地址上的值3.建立编译连接控制选项4.编译连接工程三、实验设备1.硬件:PC机;(1)基于ARM9系统教学实验系统(2)串口线(3)Multi-ICE仿真器2.软件:PC机操作系统(WindowXP)(1)WIndows下的Multi-ICEServer、CodewarriorforARMDeveloperSuite和AXDDebugger;四、实验步骤1.建立工程启动CodewarriorforARMDeveloperSuite,选择File—New,使用ARMExecutableImage工程建立一个工程,工程名为Instruction1;2.在工程中创建一个新文件选择File—New,建立一个新的文件Test2.s,设置直接添加到项目中,输入程序如下:COUNTEQU0x40031000AREAExample2,CODE,READONLYENTRYCODE32STARTLDRR1,=COUNT;将等于COUNT地址的数据放入R1MOVR0,#0;R0清零STRR0,[R1];将R0的数据送入R1LOOPLDRR1,=COUNT;将等于COUNT地址的数据放入R1LDRR0,[R1];将R1中的值作为地址的数据送给R1ADDR0,R0,#1;R0=R0+1CMPR0,#10;比较R0和10,影响条件标志位MOVHSR0,#0;若R0>=10,则此指令执行,R0=0STRR0,[R1];将R0中的数据送给R1,保存CONUTBLOOP;跳转到循环位置END。
嵌入式系统实验77.1#include "Config.h"#include "Target.h"#define LED (1 << 7) /* P0.7引脚控制LED,低电平点亮*//***************************************************************************** 函数名称:main()* 函数功能:通过查询定时器0中断标志位控制LED点亮****************************************************************************/int main(void){PINSEL0 = 0x00000000; // 设置管脚连接GPIOIO0DIR = LED; // 设置LED控制口输出T0TC = 0; // 定时器0初始化T0PR = 99; // 设置定时器0分频为100分频,得120000HzT0MCR = 0x03; // 匹配通道0匹配中断并复位T0TCT0MR0 = 60024; // 比较值(0.5s定时值)T0TCR = 0x03; // 启动并复位T0TCT0TCR = 0x01;while (1){while ((T0IR & 0x01) == 0); // 等待定时时间到T0IR = 0x01; // 清除中断标志if ((IO0SET & LED) == 0) // 取反LED状态IO0SET = LED;elseIO0CLR = LED;}}7.2#include "Config.h"#include "Target.h"#define LED2 (1 << 7) /* P0.7引脚控制LED2,低电平点亮*//************************************************************************************* ** 函数名称:IRQ_Timer0()** 函数功能:定时器0中断服务程序,取反LED2控制口。
金艳霞通信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的网络通信程序是基于套接字模式的。