Linux驱动开发实验报告

上传人:cn****1 文档编号:507387485 上传时间:2023-05-05 格式:DOC 页数:37 大小:1.03MB
返回 下载 相关 举报
Linux驱动开发实验报告_第1页
第1页 / 共37页
Linux驱动开发实验报告_第2页
第2页 / 共37页
Linux驱动开发实验报告_第3页
第3页 / 共37页
Linux驱动开发实验报告_第4页
第4页 / 共37页
Linux驱动开发实验报告_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《Linux驱动开发实验报告》由会员分享,可在线阅读,更多相关《Linux驱动开发实验报告(37页珍藏版)》请在金锄头文库上搜索。

1、Linux 驱动开发实验报告Linux 驱动开发实验报告目录Linux 驱动开发实验报告1实验一、Linux 内核移植实验31.1 资源31.2 解压源码包31.3 修改 Makefile 文件,支持交叉编译31.1 得到.config 文件31.5 修改 Nand Flash 分区41.6 添加 LCD 支持51.7 添加网卡驱动61.8 添加 YAFFS 文件系统支持71.9 内核配置(即内核裁剪)81.10 编译内核91.11 烧写内核10实验二、ARM Norflash 驱动实验102.1、环境102.2、目的112.3、实验步骤11实验三、嵌入式 linux 驱动实验15Linux

2、驱动开发实验报告3.1、实验目的153.2、实验原理153.3、参考程序173.4、实验步骤253.5、实验结果303.6、实验体会30实验四、LCD 驱动实验304.1、实验目的304.2、实验设备(环境)及要求304.3、试验结果324.4、实验总结32实验五、DM9000 网卡驱动335.1、实验目的335.2、实验设备(环境)及要求335.3、实验内容与步骤335.4、试验结果355.5、实验总结35Linux 驱动开发实验报告实验一、Linux 内核移植实验1.1 资源1.linux-2.6.24.1.tar.bz2(Linux内核源码的压缩包,下载地址www.kernel.org)

3、2.yaffs2.tar.gz(yaffs文件系统源码的压缩包)3.dm9000.h和dm9000.c(dm9000网卡驱动程序)1.2 解压源码包1. 在 XP 中,把“01/下午/src”文件夹拷贝到“/192.168.1.12”的共享文件夹 uptech 内,并把 uptech 中的“src”更名为“01 linux”2. 在 Linux 虚拟机中进入该文件夹“cd /home/uptech/01 linux”ls 可见 1 个文件:“linux-2.6.24.1.tar.bz2”、“yaffs2.tar.gz”、“dm9000.h”、“dm9000.c”u bz2 压缩包用“tar j

4、xvf”解压u gz 压缩包用“tar zxvf”解压3. 解压 Linux 源码压缩包,即输入命令“tar jxvf linux-2.6.21.1.tar.bz2”4. 解压 YAFFS 源码压缩包,即输入命令“tar zxvf yaffs2.tar.gz”1.3 修改 Makefile 文件,支持交叉编译1. cd /home/uptech/01 linux/linux-2.6.21.2,该目录下就是 linux 的内核源码2. 修改 Makefile 文件,使之支持交叉编译,也就是在 Linux 上编译出 ARM 开发板上运行的内核程序。ARCH ?=arm(目标平台是 arm)CROS

5、S_COMPILE?=arm-linux-(交叉编译器的前缀是arm-linux-)1.1 得到.config 文件1. 得到.config 文件Linux 驱动开发实验报告将“/home/uptech/01 linux/linux-2.6.21.2/arch/arm/configs/s3c2110_defconfig”文件拷贝成“/home/uptech/01linux/linux-2.6.21.2/.config”cparch/arm/configs/s3c2110_defconfig .config2. 对内核进行裁剪(此时暂时不做裁剪,仅是看看) make menuconfig1.5

6、修改 Nand Flash 分区修改“/home/uptech/01 linux/linux-2.6.21.2/arch/arm/plat-s3c21xx/common-smdk.c”文件中的“struct mtd-partition smdk_default_nand_part”这个结构体:第一个分区从 0x0000 0000 到 0x0008 0000,大小为 0.5M第二个分区从 0x0008 0000 到 0x0028 0000,大小为 2M第三个分区从 0x0028 0000 到 0x0068 0000,大小为 1M第四个分区从 0x0068 0000 到 0x0100 0000,大

7、小为 57.5M具体做法:(1) vi arch/arm/plat-s3c21xx/common-smdk.c(2) 修改分区信息结构体static struct mtd_partition smdk_default_nand_part = 0 = .name = Bootloader,.size = 0x80000,.offset = 0,1 = .name = Linux Kernel,.offset = 0x80000,.size = SZ_2M,2 = .name = Root File System,Linux 驱动开发实验报告.offset = 0x280000,.size = S

8、Z_1M,3 = .name = User Space,.offset = 0x680000,.size = 0x3980000,;1.6 添加 LCD 支持修改“/home/uptech/01 linux/linux-2.6.21.2/arch/arm/mach-s3c2110/mach-smdk2110.c”。具体做法:(1)vi arch/arm/mach-s3c2110/mach-smdk2110.c(2)在 mach-smdk2110.c 文件内添加两个头文件#include #include (3)在 mach-smdk2110.c 文件内添加两个结构体static struct

9、s3c2110fb_display up2110_fb _initdata =.lcdcon5 = (112)|(111)|(19)|(18)|(10),.type = (35),.width = 610,.height = 180,.pixclock = 39721,.xres = 610,.yres = 180,.bpp = 16,.left_margin = 10,.right_margin = 32,Linux 驱动开发实验报告.hsync_len = 32,.vsync_len = 2,.upper_margin = 35,.lower_margin = 5,;static stru

10、ct s3c2110fb_mach_info up2110_fb_info _initdata =.displays = up2110_fb,.num_displays = 1,.default_display = 0,.gpcup = 0xffffffff,.gpcup_mask = 0x0,.gpccon = 0xaaaaaaaa,.gpccon_mask = 0x0,.gpdup = 0xffffffff,.gpdup_mask = 0x0,.gpdcon = 0xaaaaaaaa,.gpdcon_mask = 0x0,.lpcsel = 0,;(1)在 mach-smdk2110.c

11、文件内,在“smdk2110_init”函数的末尾一行添加:s3c21xx_fb_set_platdata(&up2110_fb_info);1.7 添加网卡驱动1、修改“/home/uptech/01 linux/linux-2.6.21.2/arch/arm/mach-s3c2110/mach-smdk2110.c”。具体做法:(1)vi arch/arm/mach-s3c2110/mach-smdk2110.c(2)在 mach-smdk2110.c 文件添加两个结构体,用于定义端口地址和中断号等设备信息static struct resource s3c_dm9ks_resource

12、= 0 = Linux 驱动开发实验报告.start = 0x10000000,.end = 0x10000010,.flags = IORESOURCE_MEM,1 = .start = IRQ_EINT2,.end = IRQ_EINT2,.flags = IORESOURCE_IRQ,;struct platform_device s3c_device_dm9ks = .name = s3c2110-dm9ks,.id = -1,.num_resources = ARRAY_SIZE(s3c_dm9ks_resource),.resource = s3c_dm9ks_resource,;(3)在“struct platform_device *smdk2110_devices _initdata”末尾加入网卡数据:&s3c_device_dm9ks,2、将新的“dm9000.c”和“dm9000.h”拷贝到“/home/uptech/01 linux/linux-2.6.21.2/drivers/net”文件夹内,替换旧的文件。cp/home/uptech/01 linux/dm9000.*drivers/net/在dm9000.c文件中增加了uptech_dm9k_init函数,并在dm9k_init_module(voi

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 建筑资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号