当前位置:文档之家› 嵌入式操作系统实验报告

嵌入式操作系统实验报告

《嵌入式操作系统》实验报告班级计算机学号姓名指导教师庄旭菲内蒙古工业大学信息工程学院计算机系2018年6月实验一 Linux内核移植与编译实验1. 实验目的了解 Linux 内核相关知识与内核结构了解 Linux 内核在 ARM 设备上移植的基本步骤和方法掌握 Linux 内核裁剪与定制的基本方法2. 实验内容分析 Linux 内核的基本结构,了解 Linux 内核在 ARM 设备上移植的一些基本步骤及常识。

学习 Linux 内核裁剪定制的基本配置方法,利用 UP-Magic210 型设备配套 Linux 内核进行自定义功能(如helloworld 显示)的添加,并重新编译内核源码,生成内核压缩文件 zImage,下载到 UP-Magic210 型设备中测试。

3. 实验步骤实验目录:/UP-Magic210/SRC/kernel/编译内核:在宿主机端为UP-Magic210 设备的Linux 内核编写简单的测试驱动(内核)程序并修改内核目录中相关文件,添加对测试驱动程序的支持。

(1)、使用 vim 编辑器手动编写实验代码内如如下:#include <linux/>#include <linux/>MODULE_LICENSE("Dual BSD/GPL");(3)、进入实验内核源码目录修改 driver/char/目录下的 Makefile 文件,按照内核中Makefile 语法添加 helloworld程序的编译支持[root@localhost vi drivers/char/Makefile在 Makefile 中(大约在 91 行)添加如下一行obj-$(CONFIG_TOSHIBA) +=obj-$(CONFIG_I8K) +=obj-$(CONFIG_DS1620) +=obj-$(CONFIG_HW_RANDOM) += hw_random/obj-$(CONFIG_HELLO_MODULE) +=obj-$(CONFIG_PPDEV) +=(4)、运行 make menuconfig 配置内核对 helloworld 程序的支持:[root@localhost make distclean[root@localhost make menuconfig先加载内核配置单,如图:然后进入到 Device Drivers --->菜单中如图:进入到 Character devices--->如图:进入该菜单会发现[ ] Hello World Test 选项,按下空格将其静态编译进内核退出保存内核配置(5)、重新编译内核在内核源码的顶层目录下编译内核[root@localhost makescripts/kconfig/conf -s arch/arm/KconfigCHK include/linux/CHK include/generated/make[1]:“include/generated/”是最新的。

CALL scripts/CHK include/generated/CC drivers/char/LD drivers/char/LD drivers/LDMODPOST初次编译内核源码,由内核代码庞大,所需较长时间(大约几分钟至 10 几分钟不等)。

编译成功后会在内核源码目录的 arch/arm/boot/目录下生成内核压缩文件 zImage。

[root@localhost ls arch/arm/boot/zImagearch/arm/boot/zImage[root@localhost 、将新生成的内核镜像文件 zImage 烧写到 UP-Magic210 型设备中,这里不在赘述(烧写步骤可以参考文档“UP-Magic210出厂程序烧写手册(LINUX)第23页)。

新内核烧写成功后启动 UP-Magic210 型系统,可以在串口终端中查看到 Linux 内核在启动过程中打印出来的如下信息:S3C_LCD clock got enabled :: MhzWindow[0]- FB1 : map_video_memory: clear ff600000:00096000FB1 : map_video_memory: dma= cpu=ff600000 size=00096000Console: switching to colour frame buffer device 80x30fb-52: frame buffer devicelp: driver loaded but no devices found###################Hello, world###################ppdev: user-space parallel port driver: ttySAC0 at MMIO 0x7f005000 (irq = 37) is a S3C: ttySAC1 at MMIO 0x7f005400 (irq = 38) is a S3C: ttySAC2 at MMIO 0x7f005800 (irq = 39) is a S3CRAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksizeloop: loaded (max 8 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:可以看到在终端上打印出###################Hello, world###################信息。

同样进入 ARM 系统后也可以通过 dmesg 命令查看内核启动信息。

[root@UP-TECH yaffs]# dmesgS3C_LCD clock got enabled :: MhzWindow[0]- FB1 : map_video_memory: clear ff600000:00096000FB1 : map_video_memory: dma= cpu=ff600000 size=00096000Console: switching to colour frame buffer device 80x30fb-52: frame buffer devicelp: driver loaded but no devices found###################Hello, world###################ppdev: user-space parallel port driver: ttySAC0 at MMIO 0x7f005000 (irq = 37) is a S3C: ttySAC1 at MMIO 0x7f005400 (irq = 38) is a S3C: ttySAC2 at MMIO 0x7f005800 (irq = 39) is a S3CRAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize4.实验结果思考:如何能在Linux系统启动时,输出显示自定义的文本信息,请修改Linux内核启动代码,完成此功能。

5. 实验中遇到的问题及解决方法在实验中遇到一些问题,例如在复制的时候我记得原来用cp??–a??/tmp/?就可以了,可这次不行必须要用cp??–a??/tmp/??./到自己的目录下。

不过最后都顺利解决了问题,在编译复习了make menuconfig的编译配置。

实验二根文件系统实验1. 实验目的了解 UP-Magic210 魔法师实验套件 Linux 系统下根文件系统结构掌握根文件系统的搭建过程掌握 busybox、mkcramfs 等工具的使用方法2. 实验内容使用 busybox 生成文件系统中的命令部分,使用 mkcramfs 工具制作 CRAMFS 格式的根文件系统。

分析根文件系统 etc 目录下重要配置文件的格式及语法,熟悉根文件系统的启动过程3.实验步骤实验目录:/UP-Magic210/SRC/kernel/一、在内核中添加文件系统类型支持(1)、进入宿主机中 UP-Magic210 型光盘内核目录:[root@localhost ~]# cd /UP-Magic210/SRC/kernel/(2)、运行 make menuconfig 命令配置内核文件系统相关支持添加对 CRAMFS 根文件以及 YAFFS2 文件系统系统支持进入 File systems --->菜单进入 Miscellaneous filesystems --->菜单选择<*> Compressed ROM file system support (cramfs) 支持,如图:选择<*> YAFFS2 file system support 支持,配置如下图退出保存内核配置运行make编译内核,重新烧写内核。

二、根文件系统的实现(1)、制作 BUSYBOX 工具集进入本次实验目录[root@localhost rootfs]# cd /UP-Magic210/SRC/rootfs/[root@localhost rootfs]# lsrootfs解压压缩包[root@localhost rootfs]# tar xjvf 产生目录[root@localhost rootfs]# lsrootfs进入目录进行 busybox 的修改及配置修改此目录的 Makefile 文件,更改 ARCH 和 CROSS_COMPILE =宏定义,如下:CROSS_COMPILE = arm-none-linux-gnueabi-ARCH = arm退出保存。

运行 make menuconfig 对工具集进行定制[root@localhost make menuconfig进入 Busybox Settings --->选项进入 Busybox Library Tuning --->选项选中[*]Fancy shell prompts 支持进入 Miscellaneous Utilities --->选项去除[ ] inotifyd 选项接下来的配置可以根据具体情况来设置或裁剪相关工具。

相关主题