随笔分类 -  驱动

摘要:在看《linux设备驱动开发详解》时,有如下代码,中间代码省略:struct globalmem_dev *globalmem_devp; /*设备结构体指针*/globalmem_devp = kmalloc(2*sizeof(struct globalmem_dev), GFP_KERNEL);globalmem_setup_cdev(&globalmem_devp[0], 0);globalmem_setup_cdev(&globalmem_devp[1], 1);#include <stdio.h>#include <stdlib.h>struc 阅读全文
posted @ 2012-12-25 13:08 永不指步 阅读(391) 评论(0) 推荐(0)
摘要:在运用指针时,最多的错误就是指针的初始化。在程序中,一个未初始化的指针将会引起意想不到的问题。所以将指针初始化为NULL是个好习惯;在运用指针时,首先判断指针是否初始化,以防止指针指向一个未定义的地址。今天在写2.6内核的驱动时,就犯了这个问题。 1 #include <linux/module.h> 2 #include <linux/kernel.h> 3 #include <linux/fs.h> 4 #include <linux/cdev.h> 5 6 static struct cdev *my_dev; 7 static dev_t 阅读全文
posted @ 2012-12-23 21:21 永不指步 阅读(250) 评论(0) 推荐(0)
摘要:redhat 2.4.20.8内核编译 天嵌提供的 2.6.25.8无法生成zImae提示:cannot stat "arch/arm/boot/zImage" no such file or directory ,但是编译韦东山配套光盘提供的2.6.22.6内核能编译成功。ubuntu 9.0 2.6.30内核 两个都能编译成功。且redhat 和 ubuntu都是用的天嵌提供的4.3.3的GCC。- -!留下印记,待续! 阅读全文
posted @ 2012-12-23 13:20 永不指步 阅读(255) 评论(0) 推荐(0)
摘要:lcled_drv.c 1 #include <linux/module.h> 2 #include <linux/kernel.h> 3 #include <linux/fs.h> 4 #include <linux/init.h> 5 #include <linux/delay.h> 6 #include <asm/uaccess.h> 7 #include <asm/irq.h> 8 #include <asm/io.h> 9 #include <asm/arch/regs-gpio.h 阅读全文
posted @ 2012-12-22 17:27 永不指步 阅读(246) 评论(0) 推荐(0)
摘要:今天终于成功让第一个驱动跑起来了。前面没成功出现的问题主要有: 0.第0个- -!!编译驱动时指定的内核版本要和开发板上的相同。 1.驱动编译不成功,提示 cc1: error: invalid option `abi=aapcs-linux' 其原因是编译内核的GCC版本和编译驱动的不同。 2.驱动编译成功,加载成功,但执行测试程序时,提示:not't find test 其原因是编译根文件系统Busybox的GCC版本和编译驱动的不同,导致制作根文件系统时,用的lib库与编译驱动时用的lib库不同,用用静态编译可以解决,如:arm-linux-gcc test.c test 阅读全文
posted @ 2012-12-21 22:05 永不指步 阅读(158) 评论(0) 推荐(0)