linux内核
文章平均质量分 53
我鲁班无敌
一点寒芒先到, 随后枪出如龙.
展开
-
linux内核链表之list_entry(ptr,type,member)函数详解
Linux内核中,获取节点地址的函数list_entry()非常常用,由于其定义有点晦涩,先解析如下:list_entry的宏定义:#define list_entry(ptr, type, member) / ((type *)((char *)(ptr)-(unsigned long)(&((type *)0)->member))) 这个倒是不难理解:从一个转载 2013-08-07 11:30:08 · 3704 阅读 · 1 评论 -
OK6410矩阵键盘驱动问题(linux-2.6.36.2)
飞凌键盘驱动怎么老是出问题阿。。。涉及的文件:(内核版本linux-2.6.36.2)file1: driver/input/keyboard/samsung-keypad.cfile2: arch/arm/plat-samsung/include/plat/keypad.hfile3: arch/arm/mach-s3c64xx/mach-s3c64xx.c转载 2013-08-28 18:03:13 · 1062 阅读 · 0 评论 -
Linux下的platform总线驱动(解读)
一.Platform设备驱动概念主要讲解平台设备驱动的模型和基本概念,同时因为驱动加载的方式有动态加载和静态加载两种方式,这里我们分别对动态加载和静态加载两种情况下,如何使用平台设备和驱动加以叙述。最后使用mini2440开发板,运用Platform和device_attribute机制,编写按键驱动代码和测试代码。 我们知道linux内核中常见的的总线有I2C总线,PCI转载 2013-08-28 17:01:11 · 791 阅读 · 0 评论 -
基于platform简单驱动,probe函数中实现file_operations
在Linux之中,约定如果设备不属于任何的总线,则可以把它注册为虚拟的platform设备。下面就简单来学习一下一个简单的platform设备是怎么创建出来的。一般注册platform驱动的步骤是:1,platform_device_create注册一个设备2,platform_driver_create注册一个驱动。static struct platfo转载 2013-08-30 11:09:07 · 2409 阅读 · 0 评论 -
request_mem_region 申请内存函数讲解
request_mem_region这里我们看到的那个 request_mem_region 是申请 I/O 内存用的 . 申请了之后 , 还需要使用 ioremap 或者 ioremap_nocache 函数来映射 .对于 request_region, 三个参数 start,n,name 表示你想使用从 start 开始的 size 为 n 的 I/O port 资源 ,name 自然就是转载 2013-09-04 10:33:40 · 2341 阅读 · 0 评论 -
内核编译make oldconfig的作用
最近编译一小工具源码时,需要用到内核源码的支持。编译内核源码时,用到了一条命令make oldconfig,查阅了一些资料,弄清了它的作用。如下:1、如果.config不存在,运行make config/menuconfig时的缺省设置由固化在各个Kconfig文件中各项目的缺省值决定。2. 如果.config存在,运行make config/menuconfig时的缺省设置即是当前.转载 2013-10-06 16:25:14 · 4910 阅读 · 0 评论 -
OK6410 LCD驱动移植,主要参考LCD驱动都涉及了哪些文件!
这个驱动移植针对在www.linux.org下载的新内核,并不是基于飞凌提供的内核!(其实飞凌就是这么实现的)今天完成了 OK6410 的LCD 驱动移植,那么直接进入正题,我的操作环境是:主机: XP系统, VMware Ubuntu 10.10 虚拟机。 开发板:OK6410,A板,256M+2G 。 LCD :飞凌4.3 寸TFT ,WXCAT43, 480*272转载 2013-10-09 17:13:30 · 947 阅读 · 0 评论 -
移植基于linux-2.6.26.5内核s3c2410触摸屏驱动移植(在make menuconfig时的配置选项位置)
移植基于linux-2.6.26.5内核s3c2410触摸屏驱动移植的过程记录下来:(1)首先打一个补丁:s3c2410_touchscreen.patch,在内核解压的根目录下 patch -Np1 -i (接补丁的路径);然后修改arch/arm/mach-s3c2410/mach-smdk2410.c添加如下代码:添加头文件:#include 添加结构体:s转载 2013-10-10 15:25:23 · 1411 阅读 · 0 评论 -
取消开发板的触摸屏驱动的2中方法
首先感谢飞凌的技术支持们,谢谢给我提供的帮助,在我移植过程中遇到的问题写下来便于以后复习也希望能给遇到同样问题的朋友一点帮助!1、在配置内核的时候取消触摸屏驱动的选项make menuconfig --->Device Drivers--->Input device support--->touchscreen 取消这个选项后会发现编译内核出现错误。原因在板级文件linux原创 2013-10-12 17:40:28 · 908 阅读 · 0 评论 -
将LCD屏幕倒过来显示(LCD翻转)
首先要确定你的LCD支持翻转,类似有updown 和 lr 这两个引脚 ,也就是LCD的扫描方式 。默认低电平,如果需要翻转把这两个引脚设置高电平。在我的板子上着2个引脚分别接在GPN2 和 GPN9上。1、在内核驱动目录中找到LCD的驱动文件 :drivers/video/samsung/s3cfb_WXCAT43void s3cfb_init_hw_43(void){原创 2013-10-12 17:54:18 · 12913 阅读 · 1 评论 -
制作自己的linux启动LOGO
制作开机Logo方法一:Drivers/video/logo/logo_linux_clut224.ppm是默认的启动Logo图片,把自己的Logo图片(png格式)转换成ppm格式,替换这个文件,同时删除logo_linux_clut224.c logo_linux_clut224.o文件,重新编译具体方法:#pngtopnm logo_linux_clut224.png >原创 2013-11-15 14:33:52 · 2018 阅读 · 0 评论 -
linux内核启动logo
内核版本: 2.6.35.31、内核默认的logo图片为drivers/video/logo/logo_linux_clut224.ppm1,制作 .ppm 格式的图片@1打开GIMP2.6.12 软件:@2把要使用的图片拖入到GNU图像处理程序 中@3 选择 :转载 2013-11-14 10:08:40 · 1447 阅读 · 1 评论 -
内核模块在虚拟机和开发板上运行的区别
最近在看宋宝华老师的 ,按照书写第一个字符设备驱动globalmem ~!驱动源码参考书中,编译内核模块的关键问题就是Makefile 。运行在虚拟机的linux的Makefile 和 在开发板上的Makefile是不一样的。通过查资料了解到其中的区别,在此写下笔记,方便自己复习,也方便他人。Makefile如下:ifneq ($(KERNELRELEASE),)obj原创 2013-08-15 12:28:40 · 1307 阅读 · 0 评论 -
对于struct file_operations中ioctl消失的学习笔记
很久都没有写驱动代码了,对于一些驱动相关的内核变化也没有怎么关心。这次重游《LDD3》获益良多,其值对于struct file_operations中ioctl的消失也让我长了不少见识。当年看《LDD3》的时候已经注意到了书中对ioctl的评价不是很好:“ioctl调用的非结构化本质导致众多内核开发者倾向于放弃它。” ,而在这次阅读3.0代码的时候,这个成员在struct file_opera转载 2013-08-15 13:41:33 · 735 阅读 · 0 评论 -
platform_get_resource函数实现细节------参数num
platform_get_resource函数源码如下:struct resource *platform_get_resource(struct platform_device *dev, unsigned int type, unsigned int num){ int i;转载 2013-08-26 17:26:38 · 1117 阅读 · 0 评论 -
linux驱动程序安装2种方式(模块方式 和 直接编译进内核)
第一种:直接把驱动程序编译进内核,最终连接成zIMage uImage文件。举个例子来说明如何把驱动程序文件编译进内核:在这里先说明一下,驱动程序分类很多,char(字符设备) block(块设备) input(输入设备) network(网络接口) 等等……eg:我们要在/home/mykernel/linux-3.0.1/drivers/input 输入设备的驱动添加一个新的输入设原创 2013-08-07 17:19:15 · 6220 阅读 · 0 评论 -
linux平台设备驱动platform_device platform_driver
在设备驱动程序中经常会见到和platform相关的字段,分布在驱动程序的多个角落,这也是2.6内核中比较重要的一种机制,把它原理弄懂,对以后分析驱动程序很有帮助:在linux2.6设备模型中,关心总线,设备,驱动这三个实体,总线将设备和驱动绑定,在系统每注册一个设备的时候,会寻找与之匹配的驱动。相反,在系统每注册一个驱动的时候,寻找与之匹配的设备,匹配是由总线来完成的。一个现实的Linux转载 2013-08-21 10:26:44 · 1188 阅读 · 0 评论 -
进程与线程区别
自学笔记(二)进程:是资源分配的最小单位,每创建一个进程就会为其分配内存。线程:是调度的最小单位,它并没有自己独立的内存空间(资源),在一个进程中可能有多个线程,多个线程共享这一个进程的资源,所以说线程也有自己的内存资源,但是不是自己独有的是多个线程共享的,所以我认为:这是线程 和 进程 最大的区别。如果一个线程共享的不是3G的用户空间而是1G的内核空间 那么属原创 2013-08-08 10:50:32 · 724 阅读 · 0 评论 -
linux平台设备驱动模板
第一、 首先进入\arch\arm\plat-s3c24xx\devs.c文件中,在最后一行定义设备/* my_led device author : jiang chuan yu*/static struct resource s3c_my_led_resource[] = {[0] = {.start = S3C24XX_PA_GPIO,转载 2013-08-21 11:09:52 · 922 阅读 · 0 评论 -
make Image uImage与zImage的区别
内核编译(make)之后会生成两个文件,一个Image,一个zImage,其中Image为内核映像文件,而zImage为内核的一种映像压缩文件,Image大约为4M,而zImage不到2M。 那么uImage又是什么的?它是uboot专用的映像文件,它是在zImage之前加上一个长度为64字节的“头”,说明这个内核的版本、加载位置、生成时间、大小等信息;其0x40之后与zImage没区别转载 2013-08-09 14:20:07 · 1001 阅读 · 0 评论 -
ubuntu 10.04下的配置tftp服务器
第1步:安装tftp所需的软件。首先需要安装tftp-hpa,tftpd-hpa,前者是客户端,后者是服务程序,在终端下输入 sudo apt-get install tftp-hpa tftpd-hpa,安装tftp-hpa和tftpd-hpa。然后还需要安装xinetd,在终端下输入 sudo apt-get install xinetd,安装好xinetd。第2步: 配置相关转载 2013-08-09 14:15:49 · 644 阅读 · 0 评论 -
platform_device_系列函数及其设备注册的作用
platform_device_系列函数,实际上是注册了一个叫platform的虚拟总线。使用约定是如果一个不属于任何总线的设备,例如蓝牙,串口等设备,都需要挂在这个虚拟总线上。driver/base/platform.c//platform设备声明struct device platform_bus = { .bus_id = "platform",转载 2013-08-23 10:15:19 · 928 阅读 · 0 评论 -
linux内核中 do{}while(0)用法分析
在Linux内核中,经常会看到do{}while(0)这样的语句,许多人开始都会疑惑,认为do{}while(0)毫无意义,因为它只会执行一次,加不加do{}while(0)效果是完全一样的,其实do{}while(0)主要用于宏定义中。 这里用一个简单点的宏来演示: #define SAFE_FREE(p) do{ free(p); p = NULL;} while(0) 假原创 2013-08-13 15:00:37 · 5120 阅读 · 1 评论 -
Linux内核模块的“加载”和“卸载”函数
Linux内核模块加载函数一般以_ _init 标识声明,典型的模块加载函数的形式如代码 ---------insmod hello.ko时被调用。清单4.2所示。 代码清单4.2 内核模块加载函数 1 static int _ _init initialization_function(void) 2 { 3 /* 初始化代码 */ 4 } 5原创 2013-08-13 15:29:52 · 1559 阅读 · 0 评论 -
platform_get_resource 如何获取资源(以及最后一个参数num的含义)
这几天和小段研究了下platform_get_resource函数的使用,总结如下: 在platform机制下,板级文件BSP一般定义了设备的资源,在系统初始化的过程便对platform_device进行注册,接着注册platform_driver,两者都注册完毕之后哦,platform_driver便去probe,在probe的过程中,会使用platform_get_reso转载 2013-08-26 17:23:22 · 2940 阅读 · 3 评论 -
container_of() 作用:实现通过结构中的某个变量获取结构本身的指针
问题:如何通过结构中的某个变量获取结构本身的指针???关于container_of见kernel.h中:/*** container_of - cast a member of a structure out to the containing structure* @ptr: the pointer to the member.* @type: the t转载 2013-08-26 18:00:11 · 978 阅读 · 0 评论 -
Linux内核移植和根文件系统制作(详细步骤精讲)
第一章移植内核1.1 Linux内核基础知识1.1.1 Linux版本1.1.2 什么是标准内核1.1.3 Linux操作系统的分类1.1.4 linux内核的选择1.2 Linux内核启动过程概述1.2.1 Bootloader启动过程1.2.2 Linux启动过程1.3 Linux内核移植1.3.1 移植内核和根文翻译 2014-02-13 13:47:43 · 1891 阅读 · 0 评论