![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux内核
大道至简道非恒道
这个作者很懒,什么都没留下…
展开
-
国内源下载linux内核源码,神速!
linux内核源码下载速度慢?试试国内源:http://mirror.bjtu.edu.cn/kernel/linux/kernel/原创 2019-12-25 17:29:15 · 5560 阅读 · 0 评论 -
linux内核设计与实现读书笔记——linux内核简介
一、内核简介 Linux克隆了unix,但linux不是Unix。尽管linux借鉴了Unix的许多设计并实现了Unix的API(由POSIX标准和其他 Single Uinx Specification定义的),但Linux并没有直接使用Unix源码。在有些方面(比如,内核并不区分线程和一般进程,对linux内核而言,所有进程都一样,只不过有些进程共享资源而已),linux的实...原创 2018-11-12 18:49:40 · 421 阅读 · 0 评论 -
linux内核设计与实现读书笔记——linux内核开发准备工作与注意事项
一、下载内核源码linux内核官网http://www.kernel.org二、内核源码树目录 说明 arch 特定体系结构的代码 block 块设备I/O层 crypo 加密API Documentation 内核源码文档 drivers 设备驱动程序 firmware 使用某些驱动程序而需要的设备固件 fs ...原创 2018-11-14 11:27:23 · 373 阅读 · 0 评论 -
为什么在中断上下文中不能休眠
因为,内核在执行中断处理程序的时候处于中断上下文中,内核在中断上下中不具备调度能力。此时如果休眠下去,内核就没有办法调度一个新的进程去执行,这样内核就一睡不醒了。。。...原创 2018-11-02 15:31:20 · 667 阅读 · 0 评论 -
linux内核软中断和Tasklet机制
※ 软中断软中断的一种典型应用就是所谓的"下半部"(bottom half),它的得名来自于将硬件中断处理分离成"上半部"和"下半部"两个阶段的机制:上半部在屏蔽中断的上下文中运行,用于完成关键性的处理动作;而下半部则相对来说并不是非常紧急的,通常还是比较耗时的,因此由系统自行安排运行时机,不在中断服务上下文中执行。bottom half的应用也是激励内核发展出目前的软中断机制的原因。软中...转载 2018-11-01 15:14:06 · 363 阅读 · 0 评论 -
中断及中断处理过程
中断及中断处理过程1. 中断和异常的概念区别 Intel的官方文档里将中断和异常理解为两种中断当前程序执行的不同机制。这是中断和异常的共同点。不同点在于: 中断(interrupt)是异步的事件,典型的比如由I/O设备触发;异常(exception)是同步的事件,典型的比如处理器执行某条指令时发现出错了等等。 中断又可以分为可屏蔽中断和非可屏蔽中断,异常又分为故障、陷阱...转载 2018-10-09 17:32:02 · 738 阅读 · 0 评论 -
linux 内核udelay详解
文章转发自:https://blog.csdn.net/skyflying2012/article/details/46763779内核开发中经常用到延时函数,最熟悉的是mdelay msleep。虽然经常会使用,但是具体实现却不了解,今天来研究下。 这2个函数在实现上有着天壤之别。 msleep实现是基于调度,延时期间调用schedule_timeout产生调度,待时间到期后继...转载 2018-08-15 11:18:37 · 8811 阅读 · 0 评论 -
巧夺天工的kfifo
文章转载自:https://blog.csdn.net/linyt/article/details/53355355多年以前写了篇《巧夺天工的kfifo》文章,最近有好位网友发消息讨论kfifo实现细节。发现原文有些细节没有说得很清楚,甚至有点啰嗦,于是趁今晚有空修订一下。Linux kernel里面从来就不缺少简洁,优雅和高效的代码,只是我们缺少发现和品味的眼光。在Linux kernel里面,...转载 2018-05-30 13:49:55 · 395 阅读 · 0 评论 -
利用GDB工具定位kernel Oops错误
错误log:[ 55.132887] Unable to handle kernel paging request at virtual address 0000676d[ 55.140503] pgd = c0004000[ 55.143278] [0000676d] *pgd=00000000[ 55.147001] Internal error: Oops:原创 2018-01-30 15:33:42 · 1275 阅读 · 0 评论 -
ioctl返回-1解决方法
ioctl返回值为-1,明明很正常的一个驱动,在别的地方都能正常跑,居然有问题;一直百思不得其解,开内核log,居然没有执行到驱动设备Ioctl函数里面,第一时间想到的就是参数对不上,继续查找,发现没有问题,参数注册都正常,char驱动open\read\write接口都没有问题,居然只有这个ioctl有问题;继续跟踪file_operations结构,发现在这个结构中存在compat_ioctl原创 2018-05-17 14:51:03 · 12735 阅读 · 0 评论 -
dm3730平台oled显示时钟——系统时钟的获取和刷新
系统时钟的获取,调用do_gettimeofday函数,时间格式的转换用rtc_time_to_tm函数。时间怎么刷新?方案一:在内核起一个定时器,每隔30秒,定时器处理函数刷新简单来说,中断上下文不能睡眠,定时器处理函数在中断上下文,而定时器处理函数中如果调用会进入睡眠的函数,内核就panic了。到底是怎么回事呢?内核定时器是在时钟中断发生后,作为软中断在下半部中执行的。所有的定原创 2018-05-17 15:21:41 · 2128 阅读 · 0 评论 -
Linux的i2c驱动详解
文章转载自:http://blog.chinaunix.net/uid-14753126-id-3180601.html1 简介 I2C 总线仅仅使用 SCL 、 SDA 两根信号线就实现了设备之间的数据交互,极大地简化对硬件资源和 PCB 板布线空间的占用。因此, I2C 总线被非常广泛地应用在 EEPROM 、实时钟、小型 LCD 等设备与 CPU 的接口中。Linux I2转载 2018-05-17 15:23:21 · 527 阅读 · 0 评论 -
i2c 相关知识总结
一. 技术性能: 工作速率有100K和400K两种; 支持多机通讯; 支持多主控模块,但同一时刻只允许有一个主控; 由数据线SDA和时钟SCL构成的串行总线; 每个电路和模块都有唯一的地址; 每个器件可以使用独立电源二. 基本工作原理: 以启动信号START来掌管总线,转载 2018-05-17 15:23:36 · 722 阅读 · 0 评论 -
RAM、SRAM、DRAM、SDRAM、DDRSDRAM等之间的区别
关于SRAM、DRAM、SDRAM等这样的词条,比较容易混淆,通过查找资料做个总结。首先看下面这张图: RAM(random access memory)随机存储器。存储单元的内容可按需随意取出或存入,且存取的速度与存储单元的位置无关的存储器。这种存储器在断电时将丢失其存储内容,故主要用于存储短时间使用的程序。转载 2018-05-17 15:24:27 · 9780 阅读 · 0 评论 -
Linux 内核Coding Style整理
总结linux内核开发的coding style, 便于以后写代码时参考.下面只是罗列一些规则, 具体说明可以参考: 内核源码(Documentation/CodingStyle) 01 - 缩进缩进用 Tab, 并且Tab的宽度为8个字符swich 和 case对齐, 不用缩进switch (suffix) {case 'G':case 'g':转载 2018-05-17 15:27:31 · 936 阅读 · 0 评论