嵌入式驱动开发.docx

上传人:b****5 文档编号:8003079 上传时间:2023-01-27 格式:DOCX 页数:20 大小:357.25KB
下载 相关 举报
嵌入式驱动开发.docx_第1页
第1页 / 共20页
嵌入式驱动开发.docx_第2页
第2页 / 共20页
嵌入式驱动开发.docx_第3页
第3页 / 共20页
嵌入式驱动开发.docx_第4页
第4页 / 共20页
嵌入式驱动开发.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

嵌入式驱动开发.docx

《嵌入式驱动开发.docx》由会员分享,可在线阅读,更多相关《嵌入式驱动开发.docx(20页珍藏版)》请在冰豆网上搜索。

嵌入式驱动开发.docx

嵌入式驱动开发

 

《嵌入式驱动开发》

实验报告

 

学期:

2013年第二学期

班级:

信A1013

学号:

08

姓名:

张鹏

专业:

计算机科学与技术

注意:

输入命令并运行,观察并记录输出结果。

Ø对于无法预料的预期结果可不写,或概略描述即可。

Ø若无法用截图来说明实验结果,则可用文字加以概要描述。

目录

实验1-2Linux基本命令的使用-1-

实验3-4模块程序开发简单实验-7-

实验5-6LED驱动程序-11-

实验7-8按键驱动程序-16-

注意:

更新目录页码时,右键单目录内容,“更新域”――>“只更新页码”即可

实验1-2Linux基本命令的使用

实验室/日期

2013/09/04

成绩评定

教师签名

一、实验目的

1、了解Linux系统中的文件和目录管理,掌握Linux系统中文件和目录管理相关的常用命令

2、了解Linux系统中的用户管理,掌握Linux系统中用户管理相关的常用命令

3、掌握Linux系统中其它的一些常用命令

二、实验内容及步骤

预期结果

(或其概述)

实验结果(可截全图或部分图)

cd/

ls

列出当前目录中的文件,但不包含隐含文件。

[root@localhostroot]#ls

anaconda-ks.cfgDocumentsinstall.log.syslogSettingsApplicationsinstall.logopen.czylinux

cd/

ll

显示文件或子目录的详细信息,包括文件类型和权限、文件状态、所有者、组、大小、修改时间和文件名。

[root@localhostroot]#ll

总用量88

-rw-r--r--1rootroot9122009-06-14anaconda-ks.cfg

drwxr-xr-x6rootroot40962009-06-14Applications

cd/tmp

ls

进入/tmp,列出其所有文件及目录。

[root@localhostroot]#cd/tmp

[root@localhosttmp]#ls

jd_sockV4qcop-msg-qpessh-XXDy3Hje

kde-rootqcop-msg-quicklauncherssh-XXt1P8AY

mkdirabc

ls

建立目录abc,显示可看到建立成功。

[root@localhosttmp]#mkdirabc

[root@localhosttmp]#ls

abcqcop-msg-filebrowserssh-XX5MvE75

cdabc

mkdir123

ls

进入abc,并建立目录123,显示成功。

[root@localhosttmp]#cdabc

[root@localhostabc]#mkdir123

[root@localhostabc]#ls

123

cd..

rm–rfabc

ls

返回到上级目录,删除当前目录下的子目录abc,包含其下所有文件和子目录,并不提示用户确认。

[root@localhosttmp]#rm-rfabc

[root@localhosttmp]#ls

jd_sockV4qcop-msg-qpessh-XXDy3Hje

kde-rootqcop-msg-quicklauncherssh-XXt1P8AY

cd/mnt/hgfs

whoami

进入指定目录,显示当前用户。

[root@localhosttmp]#cd/mnt/hgfs

[root@localhosthgfs]#whoami

root

pwd

显示用户当前所处目录。

[root@localhosthgfs]#pwd

/mnt/hgfs

date

显示当前时间。

[root@localhosthgfs]#date

四1月100:

24:

23CST2004

cal

显示本月日历。

[root@localhosthgfs]#cal

一月2004

日一二三四五六

123

45678910

11121314151617

18192021222324

25262728293031

su-root

cd/

useraddtonny

passwd123456

切换用户到root,添加用户tonny和密码。

[root@localhosthgfs]#su–root

[root@localhost/]#useraddtonny

useradd:

usertonnyexists

[root@localhost/]#passwdtonny

Changingpasswordforusertonny.

Newpassword:

BADPASSWORD:

itistoosimplistic/systematic

Retypenewpassword:

passwd:

allauthenticationtokensupdatedsuccessfully.

[root@localhost/]#

init6

重启。

当前系统进入重启状态。

以tonny及密码

登录后的Linux桌面图标

重启后,用新用户名和密码重新登录。

新建终端,并开始操作:

su-root

su–tonny

su-root

切换用户。

[tonny@localhosttonny]$suroot

Password:

[root@localhosttonny]#sutonny

[tonny@localhosttonny]$suroot

Password:

[root@localhosttonny]#

ps-aux

显示进程。

[root@localhosttonny]#ps-aux

USERPID%CPU%MEMVSZRSSTTYSTATSTARTTIMECOMMAND

root10.50.0136884?

S01:

120:

04init

root20.00.000?

SW01:

120:

00[keventd]

root30.00.000?

SW01:

120:

00[kapmd]

root40.00.000?

SWN01:

120:

00[ksoftirqd_CPU0]

ifconfig

配置网卡和显示网卡信息。

[root@localhostroot]#ifconfig

eth0Linkencap:

EthernetHWaddr00:

0C:

29:

75:

97:

FA

inetaddr:

192.168.38.166Bcast:

192.168.38.255Mask:

255.255.255.0

UPBROADCASTRUNNINGMULTICASTMTU:

1500Metric:

1

RXpackets:

0errors:

0dropped:

0overruns:

0frame:

0

TXpackets:

19errors:

0dropped:

0overruns:

0carrier:

0

ifconfigeth0down

ifconfig

关闭eth0端口。

显示端口已关闭。

[root@localhostroot]#ifconfigeth0down

[root@localhostroot]#

Messagefromsyslogd@localhostatThuJan100:

11:

052004...

localhostkernel:

vmxnet_close:

failedtofinishallpendingtx.

[root@localhostroot]#ifconfig

loLinkencap:

LocalLoopback

inetaddr:

127.0.0.1Mask:

255.0.0.0

UPLOOPBACKRUNNINGMTU:

16436Metric:

1

ifconfigeth0up

ifconfig

重新开启端口。

显示端口重开。

[root@localhostroot]#ifconfigeth0up

[root@localhostroot]#ifconfig

eth0Linkencap:

EthernetHWaddr00:

0C:

29:

75:

97:

FA

inetaddr:

192.168.38.166Bcast:

192.168.38.255Mask:

255.255.255.0

UPBROADCASTRUNNINGMULTICASTMTU:

1500Metric:

1

RXpackets:

0errors:

0dropped:

0overruns:

0frame:

0

TXpackets:

55errors:

0dropped:

0overruns:

0carrier:

0

clear

清空界面

[root@localhostroot]#clear

[root@localhostroot]#

三、思考题

1、如何删除一个非空的目录?

答:

答:

新建一个目录a,在其中新建目录b,c。

使用rm–rfa删除目录a,其下b,c目录也一并删除。

2、如何修改Linux虚拟机的IP地址?

答:

用命令“ifconfigeth0原IP地址目的IP地址”可达到目的,例如“ifconfigeth0192.168.23.151192.168.38.166”

四、实验总结及体会(必须写)

本次试验主要是熟悉和更好的掌握linux命令,使我们回忆起命令的使用。

过程中有一点阻碍,但经过同学和老师的指导,还是顺利的完成了任务。

Linux命令还是和很有用处的,有时用起来可能比使用窗口更加快速便捷。

只要好好掌握并熟悉命令的使用,对我们还是有好处的。

 

实验3-4模块程序开发简单实验

实验室/日期

2013/09/18

成绩评定

教师签名

一、实验目的

1、掌握模块程序的开发流程。

2、掌握模块程序查看、加载、卸载命令

二、实验内容及步骤

预期结果

(或其概述)

实验结果(可截全图或部分图)

cd/root/zylinux/drive(需自建)

ls

查看到drive目录下文件

[root@localhostroot]#cdzylinux/drive

[root@localhostdrive]#ls

hello_module_1.chello_module_2.c

vihello_module_1.c

(注:

源码后附)

编辑hello_module_1.c

使用下面命令对模块源码进行编译:

gcc–chello_module_1.c–DMODULE–D_KERNEL_-DLINUX–Wall–O2–I/usr/src/linux-2.4/include

lshello_module_1.o

查看文件

[root@localhostdrive]#lshello_module_1.o

hello_module_1.o

lsmod

查看已加载模块

[root@localhostdrive]#lsmod

ModuleSizeUsedbyTainted:

PF

mousedev54921(autoclean)

input58560(autoclean)[mousedev]

parport_pc90761(autoclean)

lp89960(autoclean)

parport370561(autoclean)[parport_pclp]

autofs132680(autoclean)(unused)

ide-cd357080(autoclean)

insmodhello_module_1.o

加载hello_module_1.o

模块

lsmod

查看已加载模块

rmmodhello_module_1

卸载模块

lsmod

查看已加载模块

cdtmp

vihello_module_2.c

(注:

源码后附)

编辑hello_module_2.c

使用下面命令对模块源码进行编译:

gcc–chello_module_2.c–DMODULE–D_KERNEL_-DLINUX–Wall–O2–I/usr/src/linux-2.4/include

lshello_module_2.o

列出文件

lsmod

显示加载的模块

insmodhello_module_2.o

加载hello_module_2.o

模块

lsmod

显示加载的模块

rmmodhello_module_2

删除模块

lsmod

显示模块

实验源码:

三、思考题

1、为什么要安装交叉编译工具?

答:

因为开发板和PC机的体系结构不一样,PC端编译工具编译的文件不能在开发板上运行。

四、实验总结及体会(必须写)

通过这个实验,我对模块程序的开发流程有了一定的认识和理解,初步掌握了模块程序查看、加载、卸载的命令,能够独自编写出简单的模块程序。

在实验中,做到条理清晰,认真仔细,还是很容易掌握这部分内容的。

实验5-6LED驱动程序

实验室/日期

2013/10/16

成绩评定

教师签名

一、实验目的

1、掌握LED驱动程序的框架

2、掌握有关LED驱动的数据结构

3、了解LED驱动的系统调用

二、实验内容及步骤

预期结果

(或其概述)

实验结果(可截全图或部分图)

cd/root/zylinux/drive(无则自建)

mkdirled_driver

ls

切换到drive,创建目录,列出目录

[root@localhostdrive]#mkdirled_driver

[root@localhostdrive]#ls

led_driver

cdled_driver

mkdirdriver

cddirver

mkdirleds

cdleds

切换到led_driver,创建目录dirver,leds,切换到leds

[root@localhostdrive]#cdled_driver

[root@localhostled_driver]#mkdirdriver

[root@localhostled_driver]#cddirver

[root@localhostdriver]#mkdirleds

[root@localhostdriver]#cdleds

[root@localhostleds]#

vimagic-leds.c

(源代码在压缩包zy.rar中)

编辑magic-leds.c

viMakefile

(源代码在压缩包zy.rar中)

make

ls

编辑MakeFIle,显示文件列表

[root@localhostleds]#make

arm-linux-gcc-O2-Wall-D__KERNEL__-DMODULE-I/zylinux/kernel/include-I.-march=armv4t-c-o-mapcs-cmagic-leds.c-omagic-leds.o

make:

arm-linux-gcc:

Commandnotfound

make:

***[magic-leds.o]Error127

[root@localhostleds]#ls

leds.komagic-leds.cmagic-leds.oMakefile

cd/root/zylinux/drive

cdled_driver

mkdirtest

cdtest

mkdirled

cdled

切换drive目录创建testled目录。

[root@localhostleds]#cd/root/zylinux/drive

[root@localhostdrive]#cdled_driver

[root@localhostled_driver]#mkdirtest

[root@localhostled_driver]#cdtest

[root@localhosttest]#mkdirled

[root@localhosttest]#cdled

vimain.c

(源代码在压缩包zy.rar中)

编辑main.c函数

viMakefile

(源代码在压缩包zy.rar中)

make

ls

编辑makefile文件

[root@localhostled]#make

arm-linux-gcc-O2-Wall-cmain.c-omain.o

[root@localhostled]#ls

ledmain.cmain.oMakefile

建立超级终端。

使用NFS将Linux虚拟主机的/root/zylinux目录mount到目标机的/mnt目录。

设Linux虚拟主机的IP地址为:

192.168.0.166。

在目标机上使用如下mount命令:

mount–tnfs192.168.0.166:

/root/zylinux/mnt–onolock

然后进入目标机的/mnt目录:

cd/mnt

cdylf/drive/led_driver/driver

cdleds

insmodleds.ko

加载leds.ko模块

cdylf/drive/led_driver/test

cdled

./led

运行led,开发板上的LED1闪烁后熄灭

三、思考题

1、字符设备驱动程序常用哪些数据结构?

其各自的作用是什么?

答:

常用的有file_operations,file等数据结构;file_operations定义了文件操作接口,这个结构的每一个成员的名字都对应着一个调用,起着联系应用程序和设备驱动的作用;file是执行open函数时产生的,每打开一个文件就产生一个structfile,供设备驱动关联的函数使用。

2、字符设备驱动程序包含哪些函数?

答:

包括read(),write(),open(),ioctl(),release()等接口函数,加载函数以及卸载函数。

四、实验总结及体会(必须写)

通过此次实验,我对LED驱动程序的框架有了比较深刻的了解和掌握,理解了有关LED驱动的数据结构,对LED驱动的系统调用也有了一定的了解。

我感觉这部分的知识有些难度,在做实验的时候应下些功夫,认真仔细,结合教材,一步一步的做下去,不要急于求成。

 

实验7-8按键驱动程序

实验室/日期

2013/10/23

成绩评定

教师签名

一、实验目的

1、掌握按键驱动程序的框架

2、掌握有关按键驱动的数据结构

3、掌握按键驱动程序开发常用的系统调用

二、实验内容及步骤

预期结果

(或其概述)

实验结果(可截全图或部分图)

cd/root/zylinux/drive(无则自建)

mkdirkey_driver

ls

建立key_driver目录

cdkey_driver

mkdirdriver

cddirver

mkdirkey

cdkey

切换到key_drive.创建key目录

vimagic-key.c

(源代码在压缩包zy.rar中)

编写magic-key.c

viMakefile

(源代码在压缩包zy.rar中)

make

ls

编辑makefile文件

cd/root/zylinux/drive

cdkey_driver

mkdirtest

cdtest

mkdirkey

cdkey

建立相关目录

vimain.c

(源代码在压缩包zy.rar中)

编写main.c

viMakefile

(源代码在压缩包zy.rar中)

make

ls

编辑makefile文件,显示列表

建立超级终端。

使用NFS将Linux虚拟主机的/root/zylinux目录mount到目标机的/mnt目录。

设Linux虚拟主机的IP地址为:

192.168.0.166。

在目标机上使用如下mount命令:

mount–tnfs192.168.0.166:

/root/zylinux/mnt–onolock

然后进入目标机的/mnt目录:

cd/mnt

cdylf/drive/key_driver/driver

cdkey

insmodkey.ko

加载key.ko

cdylf/drive/key_driver/test

cdkey

./key

运行key,按下开发板的KEY1几次超级终端就显示几次

三、思考题

1、请简要说明net_device和sk_buf在网络驱动程序中所起的作用

答:

net_device结构体提供了对所有网络设备的操作集合;sk_buf用于管理套接字缓冲区的结构,在数据包的发送和接收中起着重要的作用,Linux网络各层之间的数据发送都是通过sk_buf来进行的。

四、实验总结及体会(必须写)

通过此次实验,我对按键驱动程序的框架有了比较深刻的了解和掌握,理解了有关按键驱动的数据结构,对按键驱动的系统调用也有了一定的了解。

由于上次做了LED驱动程序的实验,因此这次做按键驱动程序,上手要快一些,能独立完成这个实验。

不过在实验时仍要小心仔细,不要大意。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1