随笔分类 -  Linux驱动相关

Linux 驱动杂项总结
摘要:1. copy_to_user与put_user的区别 copy_from_user/copy_to_user 用于内核空间和用户空间之间的数据块拷贝,但是可能会睡眠。get_user/put_user 只能传递一个基本类型数据,不会睡眠。 2. 内核字符串转整数 int kstrtoul() // 阅读全文

posted @ 2019-05-21 10:10 Hello-World3 阅读(163) 评论(0) 推荐(0) 编辑

Linux内核启动分析笔记
摘要:一、驱动加载 1.驱动加载调用关系 2.看驱动框架还是从内核启动代码开始看比较好。 3.看中断框架还是从内核启动代码开始看比较好。 4. init进程和kthreadd线程的创建流程 阅读全文

posted @ 2019-04-17 21:04 Hello-World3 阅读(300) 评论(0) 推荐(0) 编辑

GPIO学习——用户空间操作
摘要:Kernel: 4.4 Soc: msm8996 1.用户空间通过sysfs操作GPIO (1)启用GPIO sysfs interface 首先看系统中有没有“/sys/class/gpio”这个文件夹。如果没有在编译内核的时候打开 Device Drivers-> GPIO Support-> 阅读全文

posted @ 2019-03-15 11:26 Hello-World3 阅读(579) 评论(0) 推荐(0) 编辑

Linux内核中的机制学习总结
摘要:一、驱动中的poll机制 1.简介:select()和poll()系统调用的本质一样,前者在 BSD UNIX 中引入的,后者在 System V 中引入的。 应用程序使用 select() 或 poll() 调用设备驱动程序的 file_operations 的 poll() 函数。 2.实现(1 阅读全文

posted @ 2019-01-13 11:43 Hello-World3 阅读(179) 评论(0) 推荐(0) 编辑

Linux DMA学习笔记
只有注册用户登录后才能阅读该文。

posted @ 2019-01-12 18:58 Hello-World3 阅读(33) 评论(0) 推荐(0) 编辑

USB设备驱动_WDS
摘要:1. usb_alloc_dev中的 bus_type 中指定了匹配函数,和uevent中的环境参数。 >不同的bus_type的匹配函数可能是不同的,uevent的环境变量参数也可能是不同的。 2. 推荐《LINUX内核源代码情景分析》,里面讲USB控制器源代码讲解的非常清晰。 3.当USB设备插 阅读全文

posted @ 2018-12-31 21:59 Hello-World3 阅读(525) 评论(0) 推荐(0) 编辑

Linux块设备驱动_WDS
摘要:推荐书:《Linux内核源代码情景分析》 1.字符设备驱动和使用中等待某一事件的方法①查询方式②休眠唤醒,但是这种没有超时时间③poll机制,在休眠唤醒基础上加一个超时时间④异步通知,异步通知实际上就是发信号⑤输入子系统,这样比较通用 2.块设备相对于字符设备驱动逻辑的变化①对于硬盘对读写的优化假如 阅读全文

posted @ 2018-12-22 20:30 Hello-World3 阅读(331) 评论(0) 推荐(0) 编辑

固件firmware_Linux内核
摘要:1.相关函数 1.相关函数 int request_firmware_nowait( struct module *module, bool uevent, const char *name, struct device *device, gfp_t gfp, void *context, /*驱动 阅读全文

posted @ 2018-11-15 22:40 Hello-World3 阅读(1204) 评论(0) 推荐(0) 编辑

Linux内核配置---menuconfig
摘要:1. 示例 2. 关键字解释 Kconfig按照一定的格式来书写,menuconfig程序可以识别这种格式,然后从中提取出有效信息组成menuconfig中的菜单项。将来在做驱动移植等工作时,有时需要自己添加Kconfig中的一个配置项来将某个设备驱动添加到内核的配置项目中,这时候就需要对Kconf 阅读全文

posted @ 2018-10-30 20:16 Hello-World3 阅读(4860) 评论(0) 推荐(0) 编辑

驱动调试笔记
摘要:#include <linux/module.h> #include <linux/init.h> #include <linux/slab.h> #include <linux/miscdevice.h> #include <linux/gpio/consumer.h> #include <asm 阅读全文

posted @ 2018-10-25 16:29 Hello-World3 阅读(148) 评论(0) 推荐(0) 编辑

驱动模块(3)——Linux交叉编译工具链
摘要:一、工具链介绍 1. GNU Binutils是GNU的二进制工具集,包括: (1) ld:GNU链接器,将目标文件链接成可执行文件。(2) as:GNU汇编器,将汇编代码编译成目标文件。(3) gold:一种新的、更快的ELF链接器。(4) addr2line:把程序地址转换为文件名和行号。(5) 阅读全文

posted @ 2018-10-05 21:30 Hello-World3 阅读(1446) 评论(0) 推荐(0) 编辑

驱动模块(1)——杂项汇总
摘要:一、之前原文 kconfig kbuild makefile 模块,头文件导出请见 Documentation/kbuild/ 1.modutils中提供了相关的insmod,rmmod,modinfo工具2.modprobe在识别出目标模块所依赖模块后也是调用insmod.3.从外部看模块只是普通 阅读全文

posted @ 2018-10-03 00:57 Hello-World3 阅读(1310) 评论(1) 推荐(1) 编辑

Linux驱动调试学习笔记
摘要:1. struct task_struct current->comm[16]; /*此进程可执行文件的名字!!可只对此进程执行打印*/ 阅读全文

posted @ 2018-09-25 20:38 Hello-World3 阅读(164) 评论(0) 推荐(0) 编辑

Linux中的中断处理
摘要:一、中断线程化 1. Linux中中断除了中断分层之外,还有一种就是中断线程化 存在意义:在Linux中,中断具有最高的优先级。不论在任何时刻,只要产生中断事件,内核将立即执行相应的中断处理程序,等到所有挂起的中断和软中断处理完毕后才能执行正常的任务,因此有可能造成实时任务得不到及时的处理。中断线程 阅读全文

posted @ 2018-08-25 20:52 Hello-World3 阅读(552) 评论(0) 推荐(0) 编辑

Linux内核调试汇总
摘要:1.控制台优先级配置cat /proc/sys/kernel/printk6 4 1 76是控制台的优先级,打印信息的优先级要比它高才能打印出。4是默认的优先级cat /var/log/messages 不管你的打印信息有没有打印,这个文件中都有记录 修改日志方法:https://blog.csdn 阅读全文

posted @ 2018-08-06 21:30 Hello-World3 阅读(350) 评论(0) 推荐(0) 编辑

驱动模块(2)——模块信息与调试
摘要:一、查看内核模块信息 相关命令:modprobe、insmod、rmmod、modinfo、lsmod 1.查看内核所有内置模块# cat /lib/modules/$(uname -r)/modules.builtin kernel/arch/arm64/crypto/sha1-ce.ko ker 阅读全文

posted @ 2018-08-06 17:43 Hello-World3 阅读(909) 评论(0) 推荐(0) 编辑

驱动模块(4)——模块编译-Makefile编写
摘要:1.Kernel中的Makefile将多个文件编译成一个模块 Example1: drivers/usb/core/Makefile:usbcore-y := usb.o hub.o hcd.o urb.o message.o driver.o usbcore-y += config.o file. 阅读全文

posted @ 2018-07-21 14:56 Hello-World3 阅读(486) 评论(0) 推荐(0) 编辑

v4l2框架函数调用关系
摘要:所有的设备节点和子设备节点都是通过__video_register_device()注册的 1.对于video设备节点: 用户空间ioctl(VIDIOC_S_FMT) > v4l2_fops.unlocked_ioctl [v4l2_ioctl] 字符设备函数集合,此函数主要是使用&vin->lo 阅读全文

posted @ 2018-07-01 16:14 Hello-World3 阅读(660) 评论(0) 推荐(0) 编辑

驱动模块(5)_autoconf.h
摘要:1. autoconf.h文件 老版本的Linux内核中,执行 make menuconfig 后,编译系统会去 defconfig 文件中读取默认配置,然后把所有的配置信息保存到源码顶层目录下的 .config 文件中,然后将 .config 中的内容转换为C语言能识别的宏定义更新到编译目录下的 阅读全文

posted @ 2018-05-28 18:56 Hello-World3 阅读(652) 评论(0) 推荐(0) 编辑

导航

< 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
点击右上角即可分享
微信分享提示