
内核
nanaoxue
这个作者很懒,什么都没留下…
展开
-
简单字符设备驱动程序分析
下面是一个简单的字符设别驱动程序的yuan原创 2014-07-16 19:30:42 · 430 阅读 · 0 评论 -
FL2440开发板spi驱动分析(1)
1.配置内核 内核是用的开发板里的2.6.28.7,需要选上 Device Drivers->SPI support->Debug support for SPI drivers Bitbanging SPI master Samsung S3C24XX series SPI User mode SPI device driver support2.修改arc原创 2014-09-14 15:57:56 · 488 阅读 · 0 评论 -
platform设备和驱动的注册(2)
上篇文章中分析了platform_device_register()函数,本文接着分析platform_driver_register()函数。static struct platform_driver driver = { .driver = { .name = "spi-pnx8xxx", .owner = THIS_MODULE, .bus = &platform_bus_原创 2014-07-18 17:51:49 · 465 阅读 · 0 评论 -
platform设备和驱动的注册(3)
最后的框图如下:driver原创 2014-10-01 23:37:18 · 426 阅读 · 0 评论 -
设备初始化及/sys下devices等目录的建立
设备初始化和总线初始化类似,需要建立devices_kset和/sys/devices目录。不同点是设备初始化还会建立/sys/dev、/sys/dev/block和/sys/dev/char目录代码如下,kset_create_and_add()的分析见上篇文章,kobject_create_and_add比较简单这里不再分析了,只讲下第二个参数,如果是NULL,表示在/sys下原创 2014-07-17 12:07:15 · 1767 阅读 · 0 评论 -
platform初始化
在linux设备驱动中,有一类设备被称为"平台设备",通常Soc系统中集成的独立外设单元都被当做平台设备处理。如I2C,SPI等都归纳为平台设备。我正在用的开发板,就将SPI控制器作为平台设备进行注册,其注册时会调用platform_device_register()进行注册。原创 2014-07-17 17:41:40 · 921 阅读 · 0 评论 -
总线初始化及/sys下bus目录的建立
设备模型中,关心总线,设备,驱动这三个实体,总线将设备和驱动绑定,在系统每注册一个设备的时候,会寻找与之匹配的驱动。相反,在系统每注册一个驱动的时候,寻找与之匹配的设备,匹配是由总线来完成的。本文分析总线的初始化,即bus_kset的建立过程。bus_kset是基础,其他总线如platform,SPI,I2C初始化时都会调用bus_register()进行总线注册,他们都会将自己的父kse原创 2014-07-17 11:19:19 · 1526 阅读 · 0 评论 -
FL2440开发板spi驱动分析(2)
根据上文中的移植步骤,可以看出主要工作由两方面,一是定义SPI控制器(struct platform_device s3c_device_spi0,struct s3c2410_spi_info s3c2410_spi0_platdata)。二是定义SPI从设备(spi_board_info s3c2410_spi0_board[]),因为SPI总线上可以接多个从设备,所以是个结构体数组。原创 2014-10-03 20:11:16 · 454 阅读 · 0 评论 -
rootfs文件系统的注册和挂载
Rootfs文件系统是由init_rootfs()完成的。 int __init init_rootfs(void){int err; err = bdi_init(&ramfs_backing_dev_info);if (err)return err;err = register_filesystem(&rootfs_fs_type);if (err)原创 2014-06-21 11:06:21 · 595 阅读 · 0 评论 -
解析 Linux 中的 VFS 文件系统机制
本文阐述 Linux 中的文件系统部分,源代码来自基于 IA32 的 2.4.20 内核。总体上说 Linux 下的文件系统主要可分为三大块:一是上层的文件系统的系统调用,二是虚拟文件系统 VFS(Virtual Filesystem Switch),三是挂载到 VFS 中的各实际文件系统,例如 ext2,jffs 等。本文侧重于通过具体的代码分析来解释 Linux 内核中 VFS 的内在机制转载 2014-06-20 10:43:50 · 442 阅读 · 0 评论 -
sysfs文件系统注册-sysfs_init()
Sysfs文件系统的注册由sysfs_init()函数完成的。int __init sysfs_init(void){int err = -ENOMEM; sysfs_dir_cachep = kmem_cache_create("sysfs_dir_cache", sizeof(struct sysfs_dirent), 0, 0, NULL);原创 2014-06-20 10:49:18 · 1090 阅读 · 0 评论 -
实际根文件系统的挂载-sys_mount()
实际根文件系统的挂载是在prepare_namespace()中实现的。init/do_mounts.c首先调用mount_root()将实际的根文件系统挂载在rootfs文件系统的"/root"目录下,并将当前目录切换到实际根文件系统的根目录下;接着调用sys_mount(".", "/", NULL, MS_MOVE, NULL)将实际文件系统的挂载点移到(MS_MOVE)ro原创 2014-07-05 16:14:49 · 3405 阅读 · 0 评论 -
纠错表
《rootfs文件系统的注册和挂载》文章中原创 2014-06-21 17:04:21 · 477 阅读 · 0 评论 -
sys_mknod()
上篇文章中讲到rootfs文件系统挂载后,会先创建”/dev”目录,之后会创建设备文件"/dev/console",本文就分析下该设备文件的建立过程,文中还会见到与字符设备密切相关的chrdev_open()函数1.default_rootfsnoinitramfs.c-->default_rootfs()static int __init default_rootfs(void)原创 2014-06-29 14:41:31 · 2182 阅读 · 0 评论 -
platform设备和驱动的注册(1)
SPI、I2C等集成的外设控制器可以认为是platform设备,这些设备的注册过程以及其驱动的注册过程都会用到platform_device_register()和platform_driver_register()函数,本文就分析这两个函数。首先,先看下我自己在用的开发板内核源代码中和SPI控制器有关的代码。a.SPI控制器用platform_device结构表示,本例中的CPU原创 2014-07-18 17:51:40 · 676 阅读 · 0 评论 -
个人对kobject的一点研究
在LINUX中最让人不解的大概就是/sys下面的内容了下面首先让我们来创建一个简单的platform设备,并从这个设备的视角进行深入,在此篇文章的深入过程中,我们只看kobeject的模型我所使用的内核版本号为2.6.26,操作系统的内核版本号为2.6.27-7,暂未发现2.6.27-7与2.6.26的重大不同首先写一个简单的模块#include #include转载 2014-07-18 17:56:25 · 328 阅读 · 0 评论 -
rootfs下目录的建立--sys_mkdir()
参考文章http://blog.youkuaiyun.com/new_abc/article/details/7688880http://blog.youkuaiyun.com/new_abc/article/details/7689137http://blog.youkuaiyun.com/new_abc/article/details/7712715a.rootfs注册和挂载后,会先建立几个目录,之后原创 2014-06-29 10:21:55 · 2703 阅读 · 0 评论 -
FL2440开发板spi驱动分析(3)
本文分析SPI发送数据的过程,首先构造spi_ioc_transfer结构,再调用ioctl函数发送。 如测试程序中的transfer函数。原创 2014-10-04 09:40:21 · 677 阅读 · 0 评论