嵌入式系统实验指导书
- 格式:doc
- 大小:96.00 KB
- 文档页数:18
目录第一节实验 ------------------------------------------------------------------------------------- 2实验一ADS 1.2集成开发环境练习 ----------------------------------------------------- 2实验二:汇编指令实验1----------------------------------------------------------------- 3实验三:汇编指令实验2----------------------------------------------------------------- 4第二节实验 ------------------------------------------------------------------------------------- 6实验四:ARM微控制器工作模式实验-------------------------------------------------- 6实验五:C语言程序实验----------------------------------------------------------------- 9第三节实验 ------------------------------------------------------------------------------------11 实验六:GPIO输出控制实验1 ---------------------------------------------------------11 实验七:GPIO输出控制实验2 -------------------------------------------------------- 13 第四节实验 ----------------------------------------------------------------------------------- 15 实验八:存储器重映射实验------------------------------------------------------------ 15 实验九:外部中断实验 ----------------------------------------------------------------- 17 第五节实验 ----------------------------------------------------------------------------------- 19 实验十:定时器实验-------------------------------------------------------------------- 19 实验十一:UART实验 ----------------------------------------------------------------- 21 实验十二:IIC接口实验---------------------------------------------------------------- 24 第六节彩色液晶绘图设计------------------------------------------------------------------ 28 第七节 UC/OS-II移植----------------------------------------------------------------------- 31 第八节UC/OS-II下蜂鸣器设计 ------------------------------------------------------------ 35 第九节 RTC设计 ----------------------------------------------------------------------------- 38 第十节数码管显示设计--------------------------------------------------------------------- 41 附录------------------------------------------------------------------------------------------- 44第一部分实验课程第一节实验实验一ADS 1.2集成开发环境练习1 、实验目的了解ADS 1.2集成开发环境的使用方法2 、实验设备硬件:PC机一台软件:Windows98/XP/2000系统,ADS1.2集成开发环境3 、实验内容(1)建立一个新的工程(2)建立一个汇编源文件,添加到工程(3)设置文本编译器支持中文(4)设置编译链接控制选项(5)编译连接工程(6)调试工程4 、源代码:AREA Example1,CODE,READONLY ; 声明代码段Example1ENTRY ; 标识程序入口CODE32 ; 声明32位ARM指令START MOV R0,#15 ; 设置参数MOV R1,#8ADDS R0,R0,R1 ; R0 = R0 + R1B STARTEND/********************************************************************/实验二:汇编指令实验 11 、实验目的(1)了解ADS 1.2集成开发环境以及ARMulator软件仿真(2)掌握ARM7TDMI汇编指令的用法,编写简单的汇编程序(3)掌握指令的条件执行和使用LDR/STR完成存储器的访问2 、实验设备硬件:PC机一台软件:Windows98/XP/2000系统,ADS1.2集成开发环境3 、实验内容(1)使用LDR读取0x40003100的数据,将数据加1,如小于10则用STR将结果写回原地址,如大于等于10,把0写回原地址。
《嵌入式系统》实验指导书南昌航空大学信息工程学院2013-10realview MDK开发环境简介一、RealView MDK软件开发环境简介RealView MDK源自德国Keil公司,被全球超过10万的嵌入式开发工程师验证和使用,是ARM公司目前最新推出的对各种嵌入式处理器的软件开发工具。
RealView MDK集成了业内最领先的技术,包括µVision3集成开发环境与 RealView编译器,支持ARM7、ARM9和最新的Cortex-M3核处理器,自动配置启动代码,集成Flash烧写模块,强大的Simulation设备模拟,性能分析等功能,与ARM之前的工具包ADS等相比,RealView编译器的最新版本可将性能改善超过20%。
1、 RealView MDK的突出特性—启动代码生成向导,自动引导,一日千里—软件模拟器,完全脱离硬件的软件开发过程—性能分析器,看得更远、看得更细、看得更清— Cortex-M3支持—业界最优秀的编译器RealView 编译器,代码更小,性能更高,配备ULINK2仿真器,无需安装驱动— Flash编程模块轻松实现Flash烧写2µVision3 IDEµVision IDE在全球拥有庞大的用户群,超过10万开发工程师在使用Keil开发工具。
不管以前是用8位、16位MCU,还是现在改用ARM 32位处理器,µVision IDE简单易用,能让您立马上手。
µVision3 ID E主要特性:●功能强大的源代码编辑器;●可根据开发工具配置的设备数据库;●用于创建和维护工程的工程管理器;●集汇编、编译和链接过程于一体的编译工具;●用于设置开发工具配置的对话框;●真正集成高速CPU及片上外设模拟器的源码级调试器;●高级GDI接口,可用于目标硬件的软件调试和ULINK2仿真器的连接;●用于下载应用程序到Flash ROM中的Flash编程器;●完善的开发工具手册、设备数据手册和用户向导。
基于OMAP3530处理器的嵌入式系统实验实验指导书光电信息学院 李绍荣 杨承目录实验一嵌入式Linux实验 (1)实验二 OMAP3530基本接口实验 (2)附录一 Linux系统的安装 (4)附录二 Fedora中高级管理用户root的启用方法 (25)附录三在Fedora系统中安装VMware Tools (30)附录四设置Windows与Fedora之间的文件共享 (33)附录五实验箱主板的外设连接图 (38)附录六实验箱快速操作指导 (40)Linux实验一嵌入式实验一、实验目的掌握嵌入式Linux操作系统的环境搭建方法。
二、实验原理熟悉并掌握嵌入式Linux操作系统的相关知识。
三、实验设备计算机。
四、实验步骤1、安装Vmware Workstation虚拟机工作平台;2、在Vmware Workstation虚拟机工作平台新建一个虚拟机Virtual Machine;3、安装Fedora 11 Linux操作系统;4、安装Vmware Tools;5、设置共享文件夹;五、实验报告要求1、画出实验的工作流程图;2、结合每个实验步骤的关键画面,详细描述Linux操作系统的环境搭建;3、针对实验中遇到的问题,分析原因,并给出解决问题的办法。
六、注意事项实验中禁止带电插拔元器件。
实验二 OMAP3530基本接口实验一、实验目的掌握OMAP3530的IO口、定时器、串口、USB和LCD等外设的使用。
二、实验原理熟读OMAP3530硬件手册的相关内容,掌握相关部件的寄存器使用方法。
三、实验设备1、OMAP3530嵌入式系统实验箱;2、计算机。
四、实验步骤1、LED测试主板上的LEDB、LED1、LED2和LED3为用户LED灯。
在串口助手中输入如下命令点亮LEDB:在串口助手中输入如下命令熄灭LEDB:LEDB会随着用户的操作进行亮灭。
2、触摸屏测试在串口助手中输入以下指令执行触摸屏校准程序:按照屏幕上提示,点击“+”图标5次完成校准。
福建农林大学计算机与信息学院信息工程类实验报告课程名称:嵌入式系统姓名:系:专业:年级:学号:指导教师:职称:年月日实验项目列表序号实验项目名称成绩指导教师1 搭建实验环境罗超2 HelloWorld 罗超3 编译Bootloader 罗超编译Bootloader实验一搭建实验环境一、实验目的1.正确连接宿主PC机与PXA270-EP目标板。
2.建立宿主 PC机端的开发环境。
3.配置宿主 PC机端的minicom,使宿主PC机与PXA270-EP目标板可以通过串口通讯。
4.配置宿主 PC机端的TFTP服务,并开通此服务。
5.配置宿主P机端的NFS 服务,并开通此服务。
二、实验内容1.参照本实验指导书所列的步骤,一步一步地完成宿主PC机与PXA270-EP目标板的连接。
2.参照本实验指导书给出的步骤,一步一步地完成宿主机端开发环境的安装与配置。
3.参照本实验指导书给出的步骤,一步一步地完成minicom的配置。
4.参照本实验指导书给出的步骤,一步一步地完成TFTP服务的配置。
5.参照本实验指导书给出的步骤,一步一步地完成NFS服务的配置。
三、实验设备1.一套PXA270EP嵌入式实验箱。
2.安装Redhat9的宿主PC机,并且配置好ARM Linux的开发环境。
四、预备知识1.串口(COM1)、并口(LTP1)、网口(Ethernet)的基本知识。
2.Linux 基本命令。
五、实验原理及说明绝大多数的Linux 软件开发都是以native 方式进行的,即本机(HOST)开发、调试,本机运行的方式。
这种方式通常不适合于嵌入式系统的软件开发,因为对于嵌入式系统的开发,没有足够的资源在本机(即板上系统)运行开发工具和调试工具。
通常嵌入式系统软件的开发采用交叉编译调试的方式。
交叉编译调试环境建立在宿主机(即一台PC 机)上,对应的开发板叫做目标板,如图1-1。
图1-1开发时使用宿主机上的交叉编译、汇编及连接工具形成可执行的二进制代码,(这种可执行代码并不能在宿主机上执行,而只能在目标板上执行。
实验一熟悉嵌入式LINUX开发环境1、实验目的熟悉UP-TECHPXA270-S的开发环境。
学会WINDOWS环境与嵌入式Linu环境共享资源的基本方法。
2、实验内容学习UP-TECHPXA270-S系统的使用、XP和虚拟机之间传送文件方法以及UP-TECHPXA270-S和虚拟机之间共享目录的建立方法。
3、预备知识了解UP-TECHPXA270-S的基本结构和配置,Linux基本知识。
4、实验设备硬件:UP-TECHPXA270-S开发板、PC机(内存500M以上)。
软件:PC机操作系统RADHAND LINUX 9+MIMICOM+RAM LINUX操作系统5、实验步骤(1)、在虚拟机下练习Linux常用命令。
(注意以下操作只能在[root@BC root]#,也就是root文件夹下运行,不然会导致系统不能启动)a. 学习命令通过“man ***”和“*** --help”得到的命令使用方法。
b.学习并掌握如下命令:ls,cd ,pwd,cat,more,less,mkdir, rmdir ,rm,mv,cp,tar,ifconfig(2)、XP与虚拟机之间传送文件(Samba服务器建立、网络设置、文件传送);(3)、了解系统资源和连线;(4)、开发板与虚拟机之间共享目录建立(设置NFS、开发板IP设置、目录挂载),挂载文件;(5)vi(vim)的使用(6)输入qt,启动桌面,按CTRL+C退出6、实验报告要求(1)、XP和虚拟机之间传送文件步骤;虚拟机共享XP文件:选择虚拟机设置,设置要共享的文件启动Linux进入/mnt/hgfs即可看到共享文件夹服务器设置——samba服务器(设置需要共享的目录)XP共享虚拟机文件:服务器设置——samba服务器(设置需要共享的目录)确保网络的PING通(即在同一局域网):1.虚拟机的192.168.1.234(RH9)2.XP的为192.168.1.1253.在XP 下点击开始-》运行(\\192.168.1.234)4.用户名bc密码123456以上实现了Linux虚拟机(RH9)和XP的文件的共享(2)、开发板与虚拟机之间建立共享目录以及文件挂载步骤;1.服务器设置——nfs服务器(设置需要共享的目录)2.设置开发板的ip地址:ifconfig eth0 192.168.1.53.在实验箱终端里输入mount -t nfs -o nolock 192.168.1.234:/up-techpxa270/exp /mnt/nfs4./mnt/nfs即为共享目录(3)、请画出虚拟机、PC机和ARM实验箱之间的硬件连接图;(4)、在Linux中怎样配置网络;系统设置->网络,在新的选项卡中(5)、实验中遇到的问题与解决过程。
嵌入式实验指导书2016.5嵌入式实验是学习嵌入式系统原理及应用课程的一个重要环节。
通过实验加深嵌入式系统原理的认识,训练学生嵌入式系统应用及开发的基本技能,培养学生合理选择嵌入式处理器和接口芯片、正确设计嵌入式系统的接口电路、学会程序调试的基本方法以及解决实验中所遇到问题的能力,同时,培养学生理论联系实际、严谨认真的科学态度和良好的工作作风。
实验一搭建嵌入式开发环境实验 (4)实验二编译下载uboot kernel yaffs2 (18)实验三GPIO模块驱动程序及测试 (23)实验四编写串口通信程序 (27)实验一搭建嵌入式开发环境实验一、实验目的1、掌握嵌入式开发环境的搭建2、掌握嵌入式开发常用工具的使用3、掌握嵌入式交叉编译环境的搭建二、实验内容及原理1.vmware虚拟机的安装及配置2.ubuntu操作系统的安装及配置3.windows环境中常用工具的安装及使用三、实验步骤(一)、vmware虚拟机的安装及配置1)打开VMware-8.0.2-591240.exe安装程序。
2)之后操作按图进行。
3)安装完成后打开刚安装的VMware程序。
4)虚拟机使用固定IP 地址的网络方式默认情况下,虚拟机安装完成后与宿主机共享一个IP 地址,没有属于自己的IP,这里首先需要设置虚拟机的网络联系方式为桥接方式。
单击VM 菜单下面的Settings 项,弹出虚拟机设置对话框,如下图:选择Bridged 连接,确定即可。
(二)、ubuntu的安装及配置1)安装Ubuntu首先准备一张Ubuntu12.04 的安装光盘。
将光盘插入光驱,在PC的bios 中把PC启动方式设置为光驱启动,启动PC。
启动PC 后,安装盘会提示选择安装语言种类。
使用PC键盘的方向键选择在安装过程中显示的语言,在这里我们选择English>>点击“Install Ubuntu”按钮。
选择“Erase disk and install Ubuntu”>>点击“Continue”按钮硬盘空间以及挂载点的分配。
目录目录 (I)实验一、 uC/OSII移植及时钟中断和时间管理 (1)实验二、利用信号量和邮箱实现多任务间同步 (I)实验三、信号量集与内存动态分配的应用................................ 1实验一、 uC/OSII移植及时钟中断和时间管理实验项目名称:uC/OSII移植及时钟中断和时间管理实验项目性质:普通性所属课程名称:嵌入式系统实验计划学时:2实验目的熟悉uCOSII的移植方法,了解任务切换的过程;掌握创建任务和启动任务的方法;了解uCOSII的中断过程,学会使用时间管理函数;实验设备计算机,Keil C51软件实验步骤与内容1、参照KeilC51帮助文件,新建工程EXP1,选取器件为Philips公司的P89C51RD2Hxx,依次按顺序添加工程文件Exp1.c, OS_CPU_C.c, UCOS_II.c, OS_CPU_A.asm, Startup.asm, serial.c, C51L.LIB,编译前按照下图所示设置:编译工程;2、运行调试参考例程EXP1;3、在理解EXP1基础上,完成以下实验任务:在时钟中断里调用供用户自己编写服务代码的函数OSTimeTickHook(),计算MyTask任务的剩余时间(也就是MyTask调用OSTimeDly进入等待状态后的等待时间节拍数),把剩余时间输出到Serial Window#1上(KeilC51串口数据输出窗口)。
4、填写实验报告。
实验结果:参考例程EXP1结果如下图示:实验二、利用信号量和邮箱实现多任务间同步实验项目名称:利用信号量和邮箱实现多任务间同步实验项目性质:普通性所属课程名称:嵌入式系统实验计划学时:2实验目的熟悉多任务的创建;掌握利用信号量实现多任务同步的方法;掌握利用邮箱实现多任务间数据传递的方法;实验设备计算机,Keil C51软件实验步骤与内容1、参照KeilC51帮助文件,新建工程EXP2,选取器件为Philips公司的P89C51RD2Hxx,依次按顺序添加工程文件Exp2.c, OS_CPU_C.c, UCOS_II.c, OS_CPU_A.asm, Startup.asm, serial.c, C51L.LIB,其他设置参考实验一,然后编译工程;2、运行调试参考例程;3、在理解参考例程EXP2的基础上,完成以下实验任务:(1)在时钟中断里调用的供用户自己编写服务代码的函数OSTimeTickHook()里计算StartTask任务的剩余时间,把剩余时间用邮箱发送到MyTask显示;(2)计算YouTask的运行次数,用邮箱发送到HerTask显示;(3)MyTask和HerTask使用互斥信号量实现共享函数Fun()的访问。
嵌入式系统设计实验指导书山东建筑大学计算机学院计算机科学与技术教研室2017年9月实验报告格式和内容 (3)实验一基本ARM指令 (4)实验二高级ARM指令 (9)实验三汇编语言与C语言混合编程 (13)实验四开关量输入/输出接口应用 (18)实验五中断及定时器应用 (23)实验六串行通信接口应用 (27)实验七嵌入式操作系统移植 (33)实验八嵌入式软件综合设计 (38)实验报告格式和内容书写实验报告,语言要简练,书写端正、作图正规。
按照如下格式和内容书写。
注意:实验八为综合性实验,其格式和实验一到实验七不同,并且需要有封面并装订成册。
一般实验(实验1——实验7)项目名称一、实验目的及要求二、实验仪器设备三、实验内容(程序)、结果四、实验总结包括实验中遇到的问题,如何解决遇到的问题;实验后的认识和感悟等。
综合性实验(实验8)项目名称一、实验内容二、实验目的及要求三、实验仪器设备四、实验结果(程序)五、实验总结实验一基本ARM指令一、实验目的1.初步学会使用RealView MDK开发环境及ARM软件模拟器。
2.通过实验掌握简单ARM汇编指令的使用方法。
二、实验设备1.硬件:PC机。
2.软件:RealView MDK集成开发环境,Windows 2000/NT/XP/7。
三、实验内容1.熟悉开发环境的使用,利用LDR、STR、MOV等访问寄存器或存储单元的指令编写简单的程序。
2.使用ADD/SUB/LSL/LSR/AND/ORR等指令,完成基本的数学/逻辑运算。
四、实验原理1.ARM寄存器ARM寄存器R0-R15可分为3类,即通用寄存器R0-R12、堆栈指针R13(SP)、链接寄存器R14(LR)和程序计数器R15(PC)。
2.存储器格式ARM体系结构将存储器看作是从零地址开始的字节的线性组合,字节0-3存放第一个字,字节4-7存放第二个字。
可以采用两种方法存储一个字,分别称为“大端格式”和“小端格式”。
实验一:ADS1.2集成开发环境练习(注:实验一“ADS1.2集成开发环境练习”为必做内容,选作实验一“汇编指令实验1”为选做内容。
)1.实验目的●了解ADS 1.2集成开发环境的使用方法。
●掌握ARM7TDMI汇编指令的用法.并能编写简单的汇编程序。
●建立汇编源程序文件、建立工程以及工程编译连接。
2.实验设备●硬件:PC机一台●软件:Windows XP系统,ADS 1.2集成开发环境3.实验内容(1) 建立一个新的工程。
(2) 建立一个汇编源程序文件,并添加到工程中。
(3) 设置编译链接控制选项。
(4) 编译链接工程。
4.实验预习要求仔细阅读“ADS1.2集成开发环境练习”实验指导书。
5.实验步骤①启动ADSl.2 IDE集成开发环境,选择File→New,使用ARM Executable Image工程模板建立一个工程,工程名称为ADS,见图1.1。
②选择File→New建立一个新的文件TESTl.S,设置直接添加到项目中,见图1.2。
输入如程序清单1.1所示的代码并保存。
程序清单1.1 TESTl.S文件代码③选择Edit→DebugRel Settings,在DebugRel Settings对话框的左边选择ARM Linker项,然后在Output页设置连接地址(见图1.3),在Options页设置调试入口地址(见图1.4)。
④选择Project→Make.将编译链接整个工程。
1.1建立ARM指令代码的工程1.2 新建文件TESTl.S图1.3 工程连接地址设置图1.4 工程调试入口地址设置6.思考(1) 工程模板有哪些作用? (例如:本实验中使用的“ARM Executable Image”工程模板。
)ADS工程文件的设置比较复杂,不同的实验板、开发板由于硬件电路结构和资源不同,需要进行不同的设置,而对于同一实验板,则启动文件、ADS工程文件的配置及主要的初始化代码是相对固定的,因此可以把这些相关文件按一定方式组织起来,称为工作模板。
嵌入式系统实验指导王艳春李英一张劲松实验一嵌入式微处理器系统的开发环境一、实验环境PC机一台软件: ADS 1.2集成开发环境一套二、实验目的1.了解嵌入式系统及其特点;2.熟悉嵌入式系统的开发环境和基本配置并能编写简单的汇编程序三、实验内容1.嵌入式系统的开发环境、基本配置2.使用汇编指令完成简单的加法实验四、实验步骤(1)在D:\新建一个目录,目录名为experiment。
(2)点击 WINDOWS 操作系统的“开始|程序|ARM Developer Suite v1.2 |Code Warrior for ARM Developer Suite”启动Metrowerks Code Warrior,或双击“ADS 1.2”快捷方式启动。
启动ADS 1.2 如图1-1所示:图1-1启动ADS1.2(3) 在CodeWarrior 中新建一个工程的方法有两种,可以在工具栏中单击“New”按钮,也可以在“File”菜单中选择“New…”菜单。
这样就会打开一个如图1-2 所示的对话框。
选择【File】->【New…】,使用ARM Executable Image工程模板建立一个工程,名称为ADS,目录为D:\experiment。
图1-2 新建文件在这个对话框中为用户提供了7 种可选择的工程类型:1)ARM Executabl Image:用于由ARM 指令的代码生成一个ELF 格式的可执行映像文件;2)ARM Object Library:用于由ARM 指令的代码生成一个armar 格式的目标文件库;3)Empty Project:用于创建一个不包含任何库或源文件的工程;4)Makefile Importer Wizard:用于将Visual C 的nmake 或GNU make 文件转入到CodeWarrior IDE 工程文件;5)Thumb ARM Executable Image:用于由ARM 指令和Thumb 指令的混和代码生成一个可执行的ELF 格式的映像文件;6)Thumb Executable image:用于由Thumb 指令创建一个可执行的ELF 格式的映像文件;7)Thumb Object Library:用于由Thumb 指令的代码生成一个armar 格式的目标文件库。
《嵌入式系统原理》实验指导书目录《嵌入式系统原理》实验指导书 (1)目录 (1)实验报告要求: (2)实验一Linux的初步使用 (3)实验二linux驱动程序 (6)实验三交叉编译程序 (12)实验四编译内核与下载 (16)实验报告要求:1. 统一用学院所发实验模板,各项内容要求填写准确,规范;2. 实验报告命名要求: 完整学号+姓名+实验序号+实验报告.DOC,如:实验报告.doc3.上交实验报告时,应将实验报告文档、源代码及相关文件用RAR压缩,命名为完整学号+姓名+实验序号实验报告.rar,如:200409013张三实验1实验报告.rar实验一Linux的初步使用实验目的:熟练掌握linux命令的使用,linux程序的编译与调试实验学时:3学时实验内容:1.掌握虚拟机VMWARE的基本应用;2. 掌握虚拟机中RED hat linux 的安装;3. 掌握基本linux命令的使用;4. 掌握linux程序编译与调试。
实验设备:装有VMWARE的PC机一台,RED HAT安装光盘(或ISO映像文件)。
实验步骤:1.创建一虚拟机MYLINUX1)从桌面上单击“VMWARE WORKSTAION”启动虚拟机软件,单击新建虚拟机,指定保存路径“D:\MYLINUX”,选择虚拟机操作系统类型:linux,然后完成虚拟机的创建;2)双击虚拟机中CDROM,选择将虚拟机光驱连接修改为:使用ISO映像,并指定映像文件为共享磁盘:I:\redhat-disk-1.iso。
3)单击虚拟机中启动虚拟机,开始从光盘上启动系统并安装linux。
2.安装linux注意:在虚拟机和主机之间进行切换方法:鼠标单击虚拟机,可以进入;要回到主机,请用CTRL+ALT1)输入回车,进入图形化安装;也可以linux text进入文本界面安装;2)选择Skip(跳过CD检查),回车3)点击NEXT(下一步)4)安装语言,选择简体中文;或选择English5)安装类型,选择定制:Custom6)分区选择:自动分区7)网络配置:选择为自动获取IP,无防火墙;8)设置根(root)用户密码:1234569)安装包选择:至少要选择:开发工具、编辑工具、内核开发工具。
如果实在不知选什么,可以选择:所有(everything),但这样安装时间较长。
10)安装过程中提示插入第2张磁盘时,请用鼠标右击虚拟机的标题栏,找到可移动设备中的CDROM,然后指定RED-HAT-disk-2.iso作为光盘映像文件。
3.练习linux命令的使用:启动linux后,在登录框中输入用户名:root,密码:123456(不显示),直到进入提示符状态#:执行如下命令,掌握基本命令的使用1)mkdir /mydir //建立文件夹2)cp /proc/version /mydir/ //复制文件3)cd /mydir //进入文件夹4)mv version myfile //重命名文件5)ls //显示目录6)cat myfile //显示文件内容7)vi myfile (按:q退出) //编辑文件下面是光驱的装载1)cd /mnt2)ls若没有CDROM,执行mkdir cdrom创建CDROM1)mount cdrom //装载光驱2)cd cdrom3)ls4)cd ..5)umount cdrom //卸载光驱4.vi 编辑器的使用用VI编辑一个文件:vi helloworld.c按i键进入插入模式,输入如下内容:#include <stdio.h>#inlcude <stdlib.h>int main(){printf(“hello world!\n”);return 0 ;}按ESC键退出插入模式.按:w保存文件按:q退出文件编辑.5.使用gcc命令编译该文件:gcc –o helloworld helloworld.c若有错,根据提示的行号修改错误,直到编译没有错误.执行:./helloworld查看是否能正确输出:hello world!.6 .用GDB调试test1.c带调试信息的编译:gcc –g –o test1 test1.c启动调试器:gdb test1在提示符下执行如下命令进行调试:1)list2)用回车继续执行上述命令,找到第2个函数的入口点行号3)break n //n为第2个函数的入口点行号(第19行)4)run5)step6)next7)用watch i,string2[i]来观察变量的变化反复执行next,直到循环退出.7.参考test2.c修改test1.c ,重新编译并运行,看是否能正确得到反转的结果. 实验小结:小结实验过程中遇到了哪些问题,是如何解决的?实验二linux驱动程序实验目的:1)熟悉驱动程序的结构;2)掌握驱动程序各函数的作用3)熟悉驱动程序的编译与运行实验学时:3学时实验设备:装有VMWARE的PC机一台,RED HAT安装光盘(或ISO映像文件)。
实验步骤:1.参照附录中的参考代码,使用VI完成skeleton.c与skeleton_test.c的编写.2.执行如下命令编译程序:export PATH=/opt/host/armv4l/bin:$PATHarmv4l-unkown-linux-gcc -D__KERNEL__ _DMODULE -I/s3c2410/kernel/include -o skeleton.o skeleton.carmv4l-unkonw-linux-gcc -o skeleton_test skeleton_test.c3.使用驱动程序插入模块:Insmod skeleton.o查看设备文件:/dev/skeleton执行测试程序./skeleton_test卸载模块:rmmod skeleton.o实验小结:参考代码:1. 驱动程序skeleton.c/* driver/char/skeleton.c* this is a skeleton char device driver*/#include <module.h>#include <linux/fs.h>#include <linux/iobuf.h>#include <linux/major.h>#include <linux/blkdev.h>#include <linux/capability.h>#include <linux/smp_lock.h>#include <asm/uacces.h>#include <asm/hardware.h>#include <asm/arch/cpu_s3c2410.h>#include <asm/io.h>#include <linux/vmalloc.h>#define IOWRITE 0xf021#define IOCLEAR 0xf022#define SKELETON_MAJOR 220#define STRLEN 100char skeleton_drvinfo[100];devfs_handle_t devfs_skeleton;int skeleton_open(struct inode *,struct file *);int skeleton_release(struct inode *,struct file *);int skeleton_ioctl(struct inode *,struct file *,unsigned int ,unsigned long); ssize_t skeleton_read(struct file *,char * ,size_t,loff_t *);ssize_t skeleton_write(struct file *,const char * ,size_t,loff_t *);static struct file_operations skeleton_fops={ioctl: skeleton_ioctl,open: skeleton_open,read: skeleton_read,write: skeleton_write,release: skeleton_release,};int skeleton_open(struct inode *inode,struct file *filp){printk("open ok\n");return 0;}ssize_t skeleton_read(struct file *filp,char *buf,size_t size,loff_t *offp) {char * _buf;_buf=skeleton_drvinfo;copy_to_user(buf,_buf,sizeof(skeleton_drvinfo);return 0;}ssize_t skeleton_write(struct file *filp,char *buf,size_t size,loff_t *offp) {char * _buf;_buf=skeleton_drvinfo;copy_from_user(_buf,buf,sizeof(skeleton_drvinfo);return 0;}int skeleton_release(struct inode *inode,struct file *filp){printk("release ok\n");return 0;}int skeleton_ioctl(struct inode *inode,struct file *filp,unsigned int command,unsigned arg) {int err=0;switch(command){case IOWRITE:printk("write ok\n");return 0;case IOCLEAR:printk("clear ok\n");return 0;default:err=-EINV AL;}return err;}int __init skeleton_init(void){devfs_skeleton=devfs_register(NULL,"skeleton",DEVFS_FL_DEFAULT,SKELETON_MAJOR,0,S_IFCHR|S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP,&skeleton_fops,NULL);return 0;}void __exit skeleton_exit (void){devfs_unregister(devfs_skeleton);}module_init(skeleton_init);module_exit(skeleton_exit);2.测试程序skeleton_test.c#include <stdio.h>#include <fcntl.h>#include <stdlib.h>char *device="/dev/skeleton";int skeleton_fd;char cBuffer[100];char readchar[100];int main( int argc,char *argv[]){int i,count;char *constchar;constchar="This is a skeleton device driver\n";sprintf(cBuffer,constchar);printf("driver info is %s\n",cBuffer);fflush(stdout);skeleton_fd=open(device,O_RDWR);if (skeleton_fd==-1){printf("Unable to open skeleton device");exit(0);}count=write(skeleton_fd,cBuffer,100);count=read(skeleton_fd,readchar ,100);printf("driver info is :%s\n",readchar );fflush(stdout);close(skeleton_fd);}实验三交叉编译程序实验目的:第一次正面接触嵌入式Linux 的开发,第一次编写嵌入式系统的应用程序,亲身实践一下开发的步骤。