随笔分类 -  linux驱动

i2c-tools命令使用 示例
摘要:rk3288 在 i2c-4总线的0x51地址上挂有一颗 pcf8563 rtc芯片, 这里需要配合测试设置相关寄存器 i2c-tools i2c-tools中含有四個執行檔: 查看总线: root@EMT100X:/ # i2cdetect -l i2c-0 i2c rockchip_i2c I2 阅读全文

posted @ 2020-11-25 15:39 katago 阅读(1198) 评论(0) 推荐(0) 编辑

Linux的操作系统I2C驱动架构解说
摘要:Linux的操作系统I2C驱动架构解说 发布时间:2006.10.16 04:52 来源:赛迪网技术社区 作者:LoneStar 最近因为工作需要涉及到了I2C总线。虽然我过去用过I2c,但看了 Linux kernel 后才发现,一个 layer 能被做到这样完善。 1.Linux的I2C驱动架 Linux中I2C总线的驱动分为两个部分,总线驱动(BUS)和设备驱动(DEVICE)。其... 阅读全文

posted @ 2015-07-30 11:26 katago 阅读(333) 评论(0) 推荐(0) 编辑

__devexit_p的功能
摘要:看驱动的时候,时常会有如下代码: .remove = __devexit_p(XX_exit), 这里的__devexit_p有什么作用呢? 我在include/linux/init.h中找到了它的定义: /* Functions marked as __devexit may be discarded at kernel link time, depending on confi... 阅读全文

posted @ 2015-07-24 16:52 katago 阅读(546) 评论(0) 推荐(0) 编辑

基于linux-2.6.35的class_create(),device_create解析
摘要:基于linux-2.6.35的class_create(),device_create解析 作者:苗老师,华清远见嵌入式学院讲师。 从linux内核2.6的某个版本之后,devfs不复存在,udev成为devfs的替代。提醒一点,udev是应用层的,不要试图在内核的配置选项里找到它;加入对udev的支持很简单,以作者所写的一个字符设备驱动为例,在驱动初始化的代码里调用class_create为... 阅读全文

posted @ 2015-07-13 17:01 katago 阅读(355) 评论(0) 推荐(0) 编辑

linux设备驱动开发详解 笔记
摘要:在目录的 Makefile 中关于 RTC_DRV_S3C 的编译脚本为: obj -$(CONFIG_RTC_DRV_S3C) += rtc-s3c.o 上述脚本意味着如果 RTC_DRV_S3C 配置选项被选择为“Y” 或“M”,即 obj-$(CONFIG_RTC_ DRV_S3C)等同于 obj-y 或 obj-m 时,则编译 rtc-s3c.c,选“ Y” 的... 阅读全文

posted @ 2015-07-13 17:00 katago 阅读(982) 评论(0) 推荐(0) 编辑

linux内核cdev_init系列函数(字符设备的注册)
摘要:内核中每个字符设备都对应一个 cdev 结构的变量,下面是它的定义: linux-2.6.22/include/linux/cdev.h struct cdev { struct kobject kobj; // 每个 cdev 都是一个 kobject struct module *owner; // 指向实现驱动的模块 c... 阅读全文

posted @ 2015-07-10 17:24 katago 阅读(539) 评论(0) 推荐(0) 编辑

file结构中的private_data
摘要:private_data是Linux下连接VFS文件系统框架和不同文件/文件系统底层实现之间的一个核心数据结构,虽然它只是一个指针,但是一个指针可以解决所有问题。 因 为file是VFS框架的一个基本概念,它要支持文件操作结构,例如open/read/write/release之类的接口,甚至还有poll等,只 有有了这些结构,它们才能被纳入VFS这个大家庭。但是对于不同的设备文件来说,它们只是... 阅读全文

posted @ 2015-07-09 16:34 katago 阅读(1054) 评论(0) 推荐(0) 编辑

浅析pc机上如何将vmlinuz-2.6.31-14-generic解压出vmlinux
摘要:浅析pc机上如何将vmlinuz-2.6.31-14-generic解压出vmlinux luther@gliethttp:~$ vim /boot/grub/grub.cfg 可以看到我们进入的系统的内核为 linux /boot/vmlinuz-2.6.31-14-generic 查找1F 8B 08这是gzip的标志头 我找到的内容为 0000 366... 阅读全文

posted @ 2015-07-09 16:28 katago 阅读(762) 评论(0) 推荐(0) 编辑

/proc/iomem和/proc/ioports对应的fops
摘要:/proc/iomem和/proc/ioports对应的fops static int __init ioresources_init(void) { struct proc_dir_entry *entry; entry = create_proc_entry("ioports", 0, NULL); if (entry) ... 阅读全文

posted @ 2015-07-09 16:25 katago 阅读(824) 评论(0) 推荐(0) 编辑

通过/dev/mem只能访问高端内存以下的内核线性地址空间
摘要:http://blog.chinaunix.net/uid-20564848-id-74706.html 《/proc/iomem和/proc /ioports对应的fops》 《浅析pc机上如何将vmlinuz- 2.6.31-14-generic解压出vmlinux》 fs_initcall(chr_dev_init); chr_dev_init ==> reg... 阅读全文

posted @ 2015-07-09 16:24 katago 阅读(828) 评论(0) 推荐(0) 编辑

设备
摘要:http://docs.linuxtone.org/ebooks/C&CPP/c/ch17s03.html 访问设备还有一点和访问内存不同。内存只是保存数据而不会产生新的数据,如果CPU不去读它,它也不需要主动提供数据给CPU,所以内存总是被动地等待被读或被写。而设备往往会自己产生数据,并且需要主动通知CPU来读这些数据,例如敲键盘产生一个输入字符,用户希望计算机马上响应自己的输入,这就要... 阅读全文

posted @ 2015-07-07 17:50 katago 阅读(196) 评论(0) 推荐(0) 编辑

进程调度
摘要:现在明确一下阻塞(Block)这个概念。当进程调用一个阻塞的系统函数时,该进程被置于睡眠(Sleep)状态,这时内核调度其它进程运行,直到该进程等待的事件发生了(比如网络上接收到数据包,或者调用sleep指定的睡眠时间到了)它才有可能继续运行。与睡眠状态相对的是运行(Running)状态,在Linux内核中,处于运行状态的进程分为两种情况: 正在被调度执行。CPU处于该进程的上下... 阅读全文

posted @ 2015-07-07 17:31 katago 阅读(200) 评论(0) 推荐(0) 编辑

inode file 结构
摘要:inode位图(inode Bitmap) 和块位图类似,本身占一个块,其中每个bit表示一个inode是否空闲可用。 inode表(inode Table) 我们知道,一个文件除了数据需要存储之外,一些描述信息也需要存储,例如文件类型(常规、目录、符号链接等),权限,文件大小,创建/修改/访问时间等,也就是ls -l命令看到的那些信息,这些信息存在inode中而不是数据块中。每... 阅读全文

posted @ 2015-07-07 17:19 katago 阅读(3764) 评论(0) 推荐(2) 编辑

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示