嵌入式系统实验指导书
- 格式:doc
- 大小:103.50 KB
- 文档页数:17
第1部分DK-LM3S9B92 教学实验平台简介1.1 Stellaris® LM3S9B92开发板本书中的所有实验都是基于DK-LM3S9B92开发平台,LM3S9B92开发板提供了一个平台给基于ARM Cortex-M3的高性能的LM3S9B92微控制器开发系统。
LM3S9B92是Stellaris® T empest-class微控制器家族的成员之一。
T empest-class系列设备拥有性能为80MHz的时钟速率,一个外围设备接口(EPI)和Audio I2S接口。
除了支持这些功能的新硬件外,DK-LM3S9B92还包含了一系列丰富的基于其他Stellaris®板的外设。
开发板包括一个板载线上调试接口(on-board in-circuit debug interface,ICDI),该接口支持JTAG和SWD调试。
一个标准的ARM 20针脚的调试头支持大量的调试解决方案。
Stellaris® LM3S9B92开发套件加快了T empest-class微控制器的开发。
该套件还包含了完整的实验源代码。
Stellaris®LM3S9B92开发板包含以下特性:设置简单的USB线提供调试、通讯和供电功能拥有众多外设的灵活开发平台彩色LCD图形显示– 320×240分辨率的TFT LCD模块–电阻式触摸接口拥有256K闪存,96K SDRAM以及整合以太网、MAC+PHY、USB OTG和CAN通讯功能的80 MHz LM3S9B92 微控制器8MB SDRAM扩展(通过EPI接口)1MB串行闪存精确3.00V电压参考微处理器ROM中内建SAFERTOS™操作系统I2S立体声音频编解码器–输入输出–耳机输出–麦克风输入控制器区域网络(CAN)接口10/100 BaseT 以太网USB On-The-Go(OTG)连接器– Device、Host、以及OTG模式用户LED和按钮指轮电位器(可以用于菜单导航)MicroSD 卡插槽支持一系列调试选项–集成在线调试接口(ICDI)–全面支持JTAG、SWD和SWO–标准的ARM 20 针脚JTAG 调试连接器USB 虚拟COM 端口跳线分流方便重新分配I/O 资源为StellarisWare 软件所支持,包括图形库、USB 库和外围驱动库图1-1 DK-LM3S9B92开发板1.1.1 开发工具清单Stellaris®LM3S9B92 开发工具包括开发和运行使用Stellaris®微处理器的应用程序所需的所有东西:LM3S9B92 开发板网线用于调试的USB Mini-B 线缆用于OTG 连接PC 的USB Micro-B 线缆用于USB 主机的连接USB A 适配器的USB Micro-A 线缆USB 闪存记忆棒microSD 卡20 位带状电缆线光盘包含以下工具的评估版本:– StellarisWare 及用于本开发板的实验代码– IAR Embedded Workbench Kickstart Edition1.1.2 系统框图图1-2 DK-LM3S9B92开发板框图1.1.3 开发板说明开发板的供电电压:4.75—5.25 VDC,从以下的输入源中的一个得到:–调试器(ICDI)USB 线缆(连接至PC)– USB Micro-B 线缆(连接至PC)–直流电源插孔(2.1x5.5mm 由外部电源供应)尺寸:-107mmx 114mm模拟参考电压:3.0V +/-0.2%RoHS 状态:符合注:当LM3S9B92开发板工作在USB主机模式时,主机的连接器供电给已连接的USB 设备。
《嵌入式操作系统》实验指导书实验1 Linux编程基础实验序号:1 实验名称:Linux编程基础适用专业:计算机科学与技术、通信工程学时数:4学时一、实验目的1、熟悉Vim的工作模式,熟练使用vim中的常见操作。
2、熟练掌握gcc编译命令及gdb的调试命令,通过对有问题程序的跟踪调试,进一步提高发现问题和解决问题的能力。
3、熟悉多文件的makefile的编写,熟悉各种形式的makefile,并且进一步加深对makefile中用户自定义变量、自动变量的理解。
4、使用autotools生成多文件的makefile,进一步掌握autotools的使用方法。
二、实验内容1、vim使用练习(1)在“/root”目录下建一个名为“vim”的目录。
(2)进入“vim”目录。
(3)将文件“/etc/inittab”复制到“vim”目录下。
(4)使用vim打开“vim”目录下的inittab.(5)设定行号,指出设定initdefault(类似于“id:5:initdefault”)的所在行号。
(6)将光标移到该行。
(7)复制该行内容。
(8)将光标移到最后一行行首。
(9)粘贴复制行的内容。
(10)撤销第9步的动作。
(11)将光标移动到最后一行的行尾。
(12)粘贴复制行的内容。
(13)光标移到“si::sysinit:/etc/rc.d/rc.sysinit”。
(14)删除该行。
(15)存盘但不退出。
(16)将光标移到首行。
(17)插入模式下输入“Hello,this is vi world!”.(18)返回命令行模式。
(19)向下查找字符串“0:wait”。
(20)再向上查找字符串“halt”。
(21)强制退出vim,不存盘。
2、用gdb调试程序的bug(1)使用vi编辑器,将以下代码输入到名为greet.c的文件中。
此代码的原意为输出倒序main函数中定义的字符串,但结果显示没有输出,代码如下所示。
#include<stdio.h>int display1(char *string);int display2(char *string);int main(){char string[]=”Embedded Linux”;display1(string);display2(string);}int display1(char *string){printf(“The original string is %s \n”,string);}int display2(char *string1){char *string2;int size,i;size=strlen(string1);string2=(char *)malloc(size+1);for (i=0,i<size;i++){string2[size-i]=string[i];}string2[size+1]=’’;printf(“The string afterward is %s\n”,string2);}(2)使用gcc编译这段代码,注意要加上“-g”选项以方便之后的调试。
基于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()的访问。
实验一: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工程文件的配置及主要的初始化代码是相对固定的,因此可以把这些相关文件按一定方式组织起来,称为工作模板。
嵌入式系统实验指导书襄樊学院物理与电子信息学院实验要求1.进入实验室前完成的部分1)认真阅读实验指导书,弄懂实验原理和实验内容。
2)编写实验所要用到的程序,将其放在U盘上。
3)写出预习报告。
2. 进入实验室后完成的部分1)建立工程,加入已准备好的程序文件。
2)对程序进行调试,修改错误,获得要求的结果。
3)保存调试后的程序。
3.实验结束后的部分对实验结果进行分析、总结,写出实验报告。
实验报告内容及格式1.实验目的2.实验设备3.实验原理及环境4.实验内容只做文字叙述,程序部分放在程序清单中。
流程图也可不画。
5.程序清单本实验使用的完整程序。
如果使用了本实验或前面实验中完全相同的子程序,可不列写,只做注明即可。
6.实验步骤7.实验总结主要包括对实验结果、调试过程、错误及产生的原因的分析,以及本次实验的重要收获等。
此项为实验成绩评定的重要依据。
实验1 Keil C51的使用(汇编语言)实验目的:初步掌握Keil C51(汇编语言)和ZY15MCU12BD型综合单片机实验箱的操作和使用,能够输入和运行简单的程序。
实验设备:ZY15MCU12BD型综合单片机实验箱一台、具有一个RS232串行口并安装Keil C51的计算机一台。
实验原理及环境:在计算机上已安装Keil C51软件。
这个软件既可以与硬件(ZY15MCU12BD型综合单片机实验箱)连接,在硬件(单片机)上运行程序;也可以不与硬件连接,仅在计算机上以虚拟仿真的方法运行程序。
如果程序有对硬件的驱动,就需要与硬件连接;如果没有硬件动作,仅有软件操作,就可以使用虚拟仿真。
实验内容:1.掌握软件的开发过程:1)建立一个工程项目选择芯片确定选项。
2)加入C 源文件或汇编源文件。
3)用项目管理器生成各种应用文件。
4)检查并修改源文件中的错误。
5)编译连接通过后进行软件模拟仿真。
6)编译连接通过后进行硬件仿真。
2.按以上步骤实现在P1.0输出一个频率为1Hz的方波。
嵌入式系统实验指导书单位:长江大学工程技术学院院系: 信息系作者:朱嵘涛实验一 ADS开发环境的使用(2学时)一实验目的1.熟悉Proteus和ADS软件的使用2.掌握引脚连接模块和GPIO相关寄存器的的操作方法二实验要求利用LPC2138和8个发光二级管等器件,构建一个流水灯嵌入式系统。
三实验设备1.电脑一台2.Proteus-ARM实验箱四实验电路及连线1.实验电路图1 流水灯实验原理图2.Proteus-ARM实验箱硬件连接CPU板主板P0.0 LED1P0.1 LED2P0.2 LED3P0.3 LED4 P0.4 LED5 P0.5 LED6 P0.6 LED7 P0.7LED8五 实验原理1.主要知识点概述LPC2138微控制器具有46个I/O 口,内部无上拉电阻,输入/输出方式要进行设置后才能操作(设置寄存器IODIR )。
口线与其它功能复用,所以要进行相关的连接配置(设置寄存器PINSEL0和PINSEL1)。
电路采用了I/O 口灌电流的驱动方式来驱动LED ,这样做主要是因为I/O 口能提供的灌电流大于其拉电流,保证了LED 的显示亮度。
限流电阻为220Ω,发光二极管的导通压降值,一般为1.7V 。
在本实验中,我们使用了P0.0~P0.7的输出功能,控制八个LED 闪动。
程序首先设置PINSEL0进行IO 口配置,然后由IO0DIR 设置P0.0~P0.7为输出模式,最后即可通过IO0SET 和IO0CLR 寄存器进行口线置1或置0输出控制。
2.实验效果说明要求利用查表的方式,控制8个LED 先是全灭、然后依次逐个点亮、依次逐个叠加、依次逐个递减、两边靠拢后分开、两边叠加后递减、最后全亮,循环从而达到花样流水灯效果。
六 实验步骤 1. 实验流程图是否开始P0[7:0]选择连接GPIO设置P0[7:0]为输出状态从数组中读取数据,点亮部分LED ,其余熄灭延时将点亮LED 熄灭,即所有的灯熄灭延时取样指针加1到末尾了吗?取样指针复位2、实验程序#include "config.h"#define LED8 0xFF/******************************************************************* *名称: DelayNS()*功能: 长软件延时*******************************************************************/ void DelayNS(uint32 dly){uint32 i;for(;dly>0;dly--)for(i=0;i<5000;i++);}/******************************************************************* *File:Main.c*功能: 流水灯显示实验*****************************************************************/ const uint32 led_tab[] = {0x00,0xff,//全亮,全灭0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,//依次逐个点亮0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,//依次逐个叠加0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,//依次逐个递减0x7e,0xbd,0xdb,0xe7,0xe7,0xdb,0xbd,0x7e,//两边靠拢后分开0x7e,0x3c,0x18,0x00,0x00,0x18,0x3c,0x7e,//两边叠加后递减};//定义循环用数据表格int main(void){ uint32 i;PINSEL0=0x00000000;PINSEL1=0x00000000;IODIR =LED8;while(1){for(i=0;i<42;i++){IOSET=led_tab[i];DelayNS(50);IOCLR=~led_tab[i];DelayNS(50);}}}七实验结果和心得体会实验二外部中断实验(2学时)一、实验目的1、熟悉向量IRQ的操作过程2、熟悉LPC213X微控制器掉电模式的进入。
《嵌入式系统原理》实验指导书目录《嵌入式系统原理》实验指导书 (1)目录 (1)实验报告要求: ....................................................................................... 错误!未定义书签。
实验一Linux的初步使用 (2)实验二linux驱动程序 (5)实验三交叉编译程序 (11)实验四编译内核与下载 (15)实验一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 的开发,第一次编写嵌入式系统的应用程序,亲身实践一下开发的步骤。