随笔分类 -  kernel

摘要:单总线线(1-wire)是美国DALLAS公司推出的外围串行扩展总线技术。与SPI、I²C串行数据通信方式不同,它采用单根信号线,在主机和从机之间通信。 常见的w1芯片:at21cs01,ds18b20,ds28e05等。 一般情况下,单总线对时序要求严格,不应用于linux(需要关调度,甚至关中断 阅读全文
posted @ 2023-11-12 22:31 yuxi_o 阅读(266) 评论(0) 推荐(0) 编辑
摘要:转自:Linux SD/MMC/SDIO驱动分析 https://www.cnblogs.com/cslunatic/p/3678045.html#3053341 一、SD/MMC/SDIO概念区分 SD(SecureDigital)与 MMC(MultimediaCard) SD 是一种 flas 阅读全文
posted @ 2019-03-29 19:53 yuxi_o 阅读(1086) 评论(0) 推荐(0) 编辑
摘要:结构体应用container_of,可参考 container_of 阅读全文
posted @ 2019-02-24 23:15 yuxi_o 阅读(326) 评论(0) 推荐(0) 编辑
摘要:udev 是 Linux 内核的设备管理器。总的来说,它取代了devfs和hotplug,负责管理/dev中的设备节点。同时,udev 也处理所有用户空间发生的硬件添加、删除事件,以及某些特定设备所需的固件加载。 udev是systemd的组成部分,默认已安装,有关信息可查阅systemd-udev 阅读全文
posted @ 2019-02-02 19:36 yuxi_o 阅读(3622) 评论(0) 推荐(0) 编辑
摘要:转自:提取已有的内核配置文件 由于有时候所做的内核配置文件需要移植到其他的内核源码中,此时又忘了保存,这时以下方法就可以满足你了。 1.首先这两个配置的位于(init/Kconfig): 2. 如果要内核保存内核的配置,必须先选择 <*> Kernel .config support,这个选项作用是 阅读全文
posted @ 2019-01-28 09:59 yuxi_o 阅读(1200) 评论(0) 推荐(0) 编辑
摘要:seq相关头文件linux/seq_file.h,seq相关函数的实现在fs/seq_file.c。seq函数最早是在2001年就引入了,但以前内核中一直用得不多,而到了2.6内核后,许多/proc的只读文件中大量使用了seq函数处理。 由于procfs的默认操作函数只使用一页的缓存,在处理较大的p 阅读全文
posted @ 2018-10-07 23:10 yuxi_o 阅读(6042) 评论(0) 推荐(2) 编辑
摘要:AM335x移植linux内核 该博客中详细介绍了移植linux内核到AM335x上相关,设备驱动采用设备树(DT)方式加载,包含设备启动、uboot、kernel、driver、rootfs及简单上层应用。 一些文档罗列如下: 1. 为AM335x移植Linux内核主线代码(4)booting-w 阅读全文
posted @ 2018-07-21 10:25 yuxi_o 阅读(1726) 评论(0) 推荐(0) 编辑
摘要:转自:Linux Kernel UAPI 问题描述从3.5开始,Linux Kernel 里多了一个 uapi 文件夹,里面放了很多 Linux Kernel 各个模块的头文件。如果是第一次碰到,可能会对这个不是很了解。问题分析Linux Kernel 中新增的这些 uapi 头文件,其实都是来自于 阅读全文
posted @ 2018-05-12 11:05 yuxi_o 阅读(1015) 评论(0) 推荐(0) 编辑
摘要:配置内核 make menuconfig,选中device驱动 Device Drivers >USB support >USB Serial Converter support > (1)USB Generic Serial Driver. (2)USB FTDI Single Port Seri 阅读全文
posted @ 2018-04-14 19:23 yuxi_o 阅读(423) 评论(0) 推荐(1) 编辑
摘要:韩大卫@吉林师范大学 2014.12.10 转载请表明出处 ***************************************************** 关于内核报错 “Unable to handle kernel paging request at virtual address” 阅读全文
posted @ 2018-04-01 17:17 yuxi_o 阅读(2521) 评论(0) 推荐(0) 编辑
摘要:简述 linux下异步方式有两种:异步通知和异步IO(AIO),aio请参考:linux异步IO--aio 异步通知的含义是:一旦设备就绪,则主动通知应用程序,这样应用程序就不需要查询设备状态,准确称谓是“信号驱动的异步I/O”。 Linux的I/O机制经历了一下几个阶段的演进: 1. 同步阻塞I/ 阅读全文
posted @ 2018-03-18 18:21 yuxi_o 阅读(1466) 评论(0) 推荐(1) 编辑
摘要:阻塞操作是指在执行设备操作时,若不能获得资源,则挂起进程直到满足可操作的条件后再进行操作。被挂起的进程进入休眠状态,被从调度器的运行队列移走,直到等待的条件被满足。而非阻塞的进程在不能进行设备操作时,并不挂起,它或者放弃,或者不停地查询,直到可以操作为止。 int fd; int data = 0; 阅读全文
posted @ 2018-03-18 17:37 yuxi_o 阅读(816) 评论(0) 推荐(0) 编辑
摘要:解决竞态(race conditions)最根本的途径是对共享资源的互斥访问,访问共享资源的代码区被称为临界区(critical sections),对临界区的代码需要以某种互斥机制加以保护。常见的互斥机制有:中断屏蔽、原子操作、自旋锁、信号量、互斥体。1. 中断屏蔽由于linux内核的进程调度和异 阅读全文
posted @ 2018-03-18 17:18 yuxi_o 阅读(303) 评论(0) 推荐(0) 编辑
摘要:查阅内核代码时经常看到和应用到延时,本文用于归纳延时相关内容。 一. 短延时 短延时的本质是忙等。 毫秒时延已经很大了,在内核中,最好不要直接使用mdelay(),无谓消耗cpu资源,对于毫秒级以上时延,内核提供如下函数: msleep(),ssleep()不能被打断,msleep_interrup 阅读全文
posted @ 2018-03-18 16:52 yuxi_o 阅读(600) 评论(0) 推荐(0) 编辑
摘要:本文档只介绍中断编程所需的函数及应用,中断完整处理流程应参考文档《linux中断处理流程》。 本文档基于3.14内核。 0. 基础 中断取代了轮询的通知方式,DMA取代了轮询的读写数据方式。中断分类软件指令造成的中断(又叫异常,同步中断)。 svc, und, abt硬件通过中断请求信号造成的中断( 阅读全文
posted @ 2018-03-18 15:31 yuxi_o 阅读(807) 评论(0) 推荐(0) 编辑
摘要:一、sysfs接口 在3.14及之后的linux中对gpio提供了sysfs接口,说明文档:Documents/gpio/sysfs.txt。 Platforms which use the "gpiolib" implementors framework may choose to configu 阅读全文
posted @ 2018-03-15 22:05 yuxi_o 阅读(1648) 评论(0) 推荐(1) 编辑
摘要:内核在时钟中断发生后执行检测各个定时器是否到期,到期后的定时器处理函数将作为软中断在底半部执行。实质上,时钟中断处理程序会唤起TIMER_SOFTIRQ软中断,运行当前处理器上到期的所有定时器。linux提供的内核定时器数据结构为timer_list。 一. 定义 timer_list定义在linu 阅读全文
posted @ 2018-03-13 20:22 yuxi_o 阅读(779) 评论(0) 推荐(0) 编辑
摘要:工作队列是另一种将工作推后执行的形式,它可以把工作交给一个内核线程去执行,这个下半部是在进程上下文中执行的,因此,它可以重新调度还有睡眠。 区分使用软中断/tasklet还是工作队列比较简单,如果推后的工作不需要睡眠,那么就选择软中断或tasklet,但如果需要一个可以重新调度,可以睡眠,可以获取内 阅读全文
posted @ 2018-03-10 11:28 yuxi_o 阅读(1212) 评论(0) 推荐(0) 编辑
摘要:一个使用tasklet的中断程序首先会通过执行中断处理程序来快速完成上半部分的工作,接着通过调度tasklet使得下半部分的工作得以完成,但是下半部分何时执行属于内核的工作。 由于tasklet依靠软中断实现,所以tasklet不能休眠。这就意味着不能在tasklet中使用信号量或其他任何可能引起阻 阅读全文
posted @ 2018-03-10 11:26 yuxi_o 阅读(641) 评论(0) 推荐(0) 编辑
摘要:linux网络设备不同于字符设备和块设备,没有文件与网络设备对应。应用程序通过socket操作网络设备。网络设备驱动属于数据链路层,对上与IP/ARP协议通信,对下直接操作物理层芯片(网卡芯片)。三层协议通过dev_queue_xmit()发送数据,通过netif_rx()接收数据;网络设备驱动通过 阅读全文
posted @ 2017-11-18 21:58 yuxi_o 阅读(722) 评论(0) 推荐(0) 编辑

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