ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:1.46MB ,
资源ID:19092394      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/19092394.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(《嵌入式操作系统》实验报告文档格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

《嵌入式操作系统》实验报告文档格式.docx

1、static int hello_init(void)printk(KERN_ALERT #Hello, world#nreturn 0;/驱动程序出口函数static void hello_exit(void)#Goodbye, world#nmodule_init(hello_init);module_exit(hello_exit);有关驱动程序的编写规,请参考课程教材,本实验只在编写简单的驱动(核)程序并加入到 Linux核目录树中,使用户熟悉编译核的过程。该驱动程序是向终端输出相关程序信息。编写好 helloworld.c 后将其拷贝到核源码树的 drivers/char/目录下。r

2、ootlocalhost /# cp helloworld.c /UP-Magic210/SRC/kernel/linux-2.6.35.7/drivers/char/(2)、进入实验核源码目录修改 driver/char/目录下的 Kconfig 文件,按照 Kconfig 语法添加 helloworld 程序的菜单支持rootlocalhost /# cd UP-Magic210/SRC/kernel/linux-2.6.35.7/rootlocalhost linux-2.6.35.7# vi drivers/char/Kconfig例如:在 Kconfig 文件中的 source“dr

3、iver/char/hw_random/Kconfig”下面添加如下:source“driver/char/hw_random/Kconfig”config HELLO_MODULEbool Hello World Testdepends on CPU_S5PV210helpThis is a demo to test kernel experiment On UP-Magic210. (3)、进入实验核源码目录修改 driver/char/目录下的 Makefile 文件,按照核中 Makefile 语法添加 helloworld程序的编译支持rootlocalhost linux-2.6.

4、35.7# vi drivers/char/Makefile在 Makefile 中(大约在 91 行)添加如下一行obj-$(CONFIG_TOSHIBA) += toshiba.oobj-$(CONFIG_I8K) += i8k.oobj-$(CONFIG_DS1620) += ds1620.oobj-$(CONFIG_HW_RANDOM) += hw_random/obj-$(CONFIG_HELLO_MODULE) += helloworld.oobj-$(CONFIG_PPDEV) += ppdev.o(4)、运行 make menuconfig 配置核对 helloworld 程序

5、的支持: rootlocalhost linux-2.6.35.7# make distcleanrootlocalhost linux-2.6.35.7# make menuconfig先加载核配置单,如图:然后进入到 Device Drivers -菜单中如图:进入到 Character devices-如图:进入该菜单会发现 Hello World Test 选项,按下空格将其静态编译进核退出保存核配置(5)、重新编译核在核源码的顶层目录下编译核rootlocalhost linux-2.6.35.7# makescripts/kconfig/conf -s arch/arm/Kconf

6、igCHK include/linux/version.hCHK include/generated/utsrelease.hmake1:“include/generated/mach-types.h”是最新的。CALL scripts/checksyscalls.shCHK include/generated/compile.hCC drivers/char/helloworld.oLD drivers/char/built-in.oLD drivers/built-in.oLD vmlinux.oMODPOST vmlinux.o初次编译核源码,由核代码庞大,所需较长时间(大约几分钟至 1

7、0 几分钟不等)。编译成功后会在核源码目录的 arch/arm/boot/目录下生成核压缩文件 zImage。rootlocalhost linux-2.6.35.7# ls arch/arm/boot/zImagearch/arm/boot/zImagerootlocalhost linux-2.6.35.7#(6)、将新生成的核镜像文件 zImage 烧写到 UP-Magic210 型设备中,这里不在赘述(烧写步骤可以参考文档“UP-Magic210出厂程序烧写手册(LINUX)V1.0.pdf”第23页)。新核烧写成功后启动 UP-Magic210 型系统,可以在串口终端中查看到 Lin

8、ux 核在启动过程中打印出来的如下信息:S3C_LCD clock got enabled : 133.000 MhzWindow0- FB1 : map_video_memory: clear ff600000:00096000FB1 : dma=57100000 cpu=ff600000 size=00096000Console: switching to colour frame buffer device 80x30fb-1069494052: frame buffer devicelp: driver loaded but no devices found#Hello, world#

9、ppdev: user-space parallel port drivers3c-uart.0: ttySAC0 at MMIO 0x7f005000 (irq = 37) is a S3Cs3c-uart.1: ttySAC1 at MMIO 0x7f005400 (irq = 38) is a S3Cs3c-uart.2: ttySAC2 at MMIO 0x7f005800 (irq = 39) is a S3CRAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksizeloop: loaded (max 8

10、 devices)nbd: registered device at major 43dm9000 Ethernet Drivereth0: dm9000 at c7866000,c7866002 IRQ 78 MAC: 00:22:12:34:56:90S3C IrDA driver, (c) 2006 Samsung ElectronicsLinux video capture interface: v2.00可以看到在终端上打印出#Hello, world#信息。同样进入 ARM 系统后也可以通过 dmesg 命令查看核启动信息。rootUP-TECH yaffs# dmesg4.实验结

11、果思考:如何能在Linux系统启动时,输出显示自定义的文本信息,请修改Linux核启动代码,完成此功能。5. 实验中遇到的问题及解决方法在实验中遇到一些问题,例如在复制的时候我记得原来用cpa/tmp/linux-2.4.18-br.tar.gz就可以了,可这次不行必须要用cp./到自己的目录下。不过最后都顺利解决了问题,在编译复习了make menuconfig的编译配置。实验二 根文件系统实验 了解 UP-Magic210 魔法师实验套件 Linux 系统下根文件系统结构 掌握根文件系统的搭建过程 掌握 busybox、mkcramfs 等工具的使用方法 使用 busybox 生成文件系统

12、中的命令部分,使用 mkcramfs 工具制作 CRAMFS 格式的根文件系统。 分析根文件系统 etc 目录下重要配置文件的格式及语法,熟悉根文件系统的启动过程3实验步骤/UP-Magic210/SRC/rootfs/一、在核中添加文件系统类型支持(1)、进入宿主机中 UP-Magic210 型光盘核目录:rootlocalhost # cd /UP-Magic210/SRC/kernel/linux-2.6.35.7/(2)、运行 make menuconfig 命令配置核文件系统相关支持添加对 CRAMFS 根文件以及 YAFFS2 文件系统系统支持进入 File systems -菜单

13、进入 Miscellaneous filesystems -选择 Compressed ROM file system support (cramfs) 支持,如图: YAFFS2 file system support 支持,配置如下图 退出保存核配置 运行make编译核,重新烧写核。二、根文件系统的实现(1)、制作 BUSYBOX 工具集进入本次实验目录rootlocalhost rootfs# cd /UP-Magic210/SRC/rootfs/rootlocalhost rootfs# lsbash-4.0.tar.bz2 busybox-1.19.3.tar.bz2 rootfs解

14、压 busybox-1.19.3.tar.bz2 压缩包rootlocalhost rootfs# tar xjvf busybox-1.19.3.tar.bz2产生 busybox-1.19.3 目录bash-4.0.tar.bz2 busybox-1.19.3 busybox-1.19.3.tar.bz2 rootfs进入 busybox-1.19.3 目录进行 busybox 的修改及配置修改此目录的 Makefile 文件,更改 ARCH ?和 CROSS_COMPILE ?=宏定义,如下:CROSS_COMPILE ?= arm-none-linux-gnueabi-ARCH ?=

15、arm退出保存。运行 make menuconfig 对工具集进行定制rootlocalhost busybox-1.19.3# make menuconfig进入 Busybox Settings -选项进入 Busybox Library Tuning -选中*Fancy shell prompts 支持进入 Miscellaneous Utilities -去除 inotifyd 选项接下来的配置可以根据具体情况来设置或裁剪相关工具。退出保存设置。编译 busyboxrootlocalhost busybox-1.19.3# make安装 busyboxrootlocalhost bus

16、ybox-1.19.3# make install成功后会在当前目录下生成 _install 目录,编译的工具也都集成在该安装目录下。rootlocalhost busybox-1.19.3# cd _install/rootlocalhost _install# lsbin linuxrc sbin usrrootlocalhost _install#可以看到_install 目录下生成了根文件系统常用的命令及工具,接下来的工作,用户可以根据需要将_install目录下生成的命令拷贝到根文件系统相应目录下。将从 busybox 生成的 which 命令拷贝到根文件系统目录的 usr/bin

17、目录下,这样,我们的根文件系统就支持 which 命令了。(2)、制作 CRAMFS 根文件系统镜像实验中已经提供了 mkcramfs 制作工具以及 mkrootfs.sh 脚本文件,用户只需执行 mkrootfs.sh 脚本文件来使用mkcramfs 制作根文件系统镜像即可。当然也可以手动的执行命令:./mkcramfs rootfs_up210 rootfs_up210.cramfsrootlocalhost rootfs# ./mkrootfs.sh此时在当前目录下生成根文件系统镜像文件 rootfs_up210.cramfsmkcramfs mkrootfs.sh rootfs_up2

18、10 rootfs_up210.cramfs三、烧写根文件系统将新生成的根文件系统镜像文件rootfs_up210.cramfs烧写到UP-Magic210 型设备中进行测试,这里不在赘述(烧写步骤可以参考文档“UP-Magic210出厂程序烧写手册(LINUX)V1.0.pdf”第24页)。如果用户新添加了相关命令或工具(例如 which 命令)启动系统后可以验证用户添加入的新命令或工具。make 编译有错误,进行源代码的修改。之后再make menuconfig中将这个宏对应的东西配置成没有就好了,如果没有这个宏,那么就直接用出错的那个文件的名字找就行了,找到后给它去掉,将来make的时候

19、就不会编译这个文件了,在次进行make 编译后,编译出来了busybox这个东西,就在证明编译通过了。实验三 模块方式驱动实验 学习在 LINUX 下进行驱动设计的原理 掌握使用模块方式进行驱动开发调试的过程 在 PC 机上编写简单的虚拟硬件驱动程序并进行调试,实验驱动的各个接口函数的实现,分析并理解驱动与应用程序的交互过程。 在 ARM 设备上创建设备驱动节点,编写用户空间应用程序,对驱动程序进行测试。(1)、编译驱动程序/UP-Magic210/SRC/exp/driver/01_demo /demo.c,手工加载驱动程序,通过设备号建立驱动设备节点,执行应用程序测试该驱动及设备,分析驱动

20、程序demo.c。进入实验目录编译源程序rootlocalhost /# cd /UP-Magic210/SRC/exp/driver/01_demo/ 清除中间代码,重新编译rootlocalhost 01_demo# make clean rootlocalhost 01_demo# make当前目录下生成驱动程序demo.ko和应用测试程序test_demo。启动 UP-Magic210 实验系统,连好网线、串口线。通过串口终端挂载宿主机实验目录(注意:虚拟机IP地址需要设置为:192.168.12.157)。rootUP-TECH yaffs# mount -t nfs -o nolo

21、ck 192.168.12.157:/UP-Magic210 /mnt/nfs进入串口终端的 NFS 共享实验目录rootUP-TECH yaffs# cd /mnt/nfs/SRC/exp/driver/01_demo/手动加载驱动程序 demo.korootUP-TECH 01_demo# insmod demo.ko通过设备号建立驱动设备节点 rootUP_210 01_demo# mknod /dev/demo c 251 0执行应用程序测试该驱动及设备,分析应用程序测试结果。rootUP-TECH 01_demo# ./test_demo(2)、请参考驱动程序demo.c,编写一个虚

22、拟字符设备驱动程序并进行调试,该虚拟字符设备驱动程序完成如下功能: 在核模块初始化函数中,实现动态申请设备号并注册该设备,动态建立设备文件节点; 在核模块的退出函数中,实现设备注销,删除该设备文件节点; 实现file_operations设备驱动文件结构体中的open、read、write、ioctl和release函数功能,其中: open函数:设置一个计数器count,每调用一次open函数,计数器count加1。 read函数:读取用户写入的字符串数据的排列结果。 write函数:实现将用户写入的字符串数据,按照每个字符的ASCII值逆序或升序排序(根据开关值asc排序:asc=0,逆序

23、排序;asc=1,升序排序;)。 ioctl函数:设置排序方式开关值asc。 release函数:每调用一次release函数,计数器count减1。5. 实验中遇到的问题及解决方法。没有修改makefile文件直接进行编译导致出错。实验前没有认真阅读实验原理,看懂实验代码,所以在使用make命令以后无法实现。最后在同学的帮助下找到了原因。忽略了自己使用的是gcc编译而不是交叉编译,因而没有设置节点。尝试了很多次以后才发现了问题,期间以为是test_demo文件的问题,但是导入导出很多次都没有解决,问了同学才找到了问题。实验四 LED 驱动及控制实验 了解 ARM 设备外围电路结构与接口原理

24、熟悉 Linux 系统下硬件驱动编程 编程实现对嵌入式设备上 LED 灯的控制 阅读 UP-Magic210 平台硬件文档,熟悉 ARM 处理硬件外围接口电路 编程实现 UP-Magic210 平台设备上 LED 驱动及应用测试程序编写UP-Magic210 平台设备上 LED 驱动及应用测试程序并进行调试,该LED驱动程序完成如下功能: 实现file_operations设备驱动文件结构体中的ioctl函数,完成如下功能: 一次调用控制所有的LED亮或灭; 控制单个LED亮或灭; 实现流水灯显示,流水灯显示效果自行定义,流水灯循环显示次数由用户应用程序传入。程序:驱动程序分析:linux/kernel.hlinux/fs.hlinux/miscdevice.hlinux/delay.hasm/irq.hasm/arch/regs-gpio.hasm/hardware.hGPL#define DEVICE_NAME leds /驱动名称#define DEVICE_MAJOR 231 /驱动主设备号#define DEVICE_MINOR 0 /驱动次设备号/声明字符设备类结构struct c

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

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