linux驱动开发
ffmxnjm
永无止境!!!!!!
展开
-
从用户态的open到内核驱动实现流程
问题来源:在讲授Linux初级驱动的时候,我发现困惑很多同学的是不真正理解从应用层到我们自己所写的驱动层的调用过程,所以写此文章来大概描述。首先我们知道,在我们目前的Linux系统中,我们大概共约300左右个系统调用,其中syscall_table.S列出了所有的系统调用表。在本文件中记录了所有当前平台系统中所提供的系统调用表,其中第五项就包括:.long sys_转载 2017-08-14 17:47:50 · 1186 阅读 · 0 评论 -
Linux内核启动及文件系统加载过程
ooooooooooooo原创 2017-07-14 17:54:10 · 7084 阅读 · 2 评论 -
arm-linux内核start_kernel之前启动分析(1)-接过bootloader的衣钵
arm-linux内核start_kernel之前启动分析(1)-接过bootloader的衣钵转载地址:http://blog.csdn.net/skyflying2012/article/details/41344377前段时间移植uboot仔细研究过uboot启动过程,最近耐不住寂寞,想对kernel下手。Uboot启动过程分析博文连接如下:http:转载 2017-08-14 10:15:07 · 1457 阅读 · 0 评论 -
ARM-Linux移植之(一)——内核启动流程分析
ooooooooooooooooooooooooooooo转载 2017-07-31 16:34:57 · 4963 阅读 · 0 评论 -
lk启动流程详细分析(高通)
转载请注明来源:cuixiaolei的技术博客 这篇文章是lk启动流程分析(以高通为例),将会详细介绍下面的内容:1).正常开机引导流程2).recovery引导流程3).fastboot引导流程4).ffbm引导流程5).lk向kernel传参 start---------------------------------------- 在bo转载 2017-08-02 21:23:12 · 3882 阅读 · 1 评论 -
android文件系统挂载分析(1)---正常开机挂载
"android"系列分为三部分:1.正常开机挂载2.encryption3.dm-verity 我们知道android有很多分区,如"system","userdata","cache",他们是何时挂载的?如何挂载的?这个系列的文章进行分析。这里介绍第一部分,android手机正常开机各分区的挂载。这里我们以mtk平台进行分析,高通与mtk差别不是很大。 我们转载 2017-08-02 21:20:15 · 1703 阅读 · 0 评论 -
深入 kernel panic 流程
注:该文章转载至:http://blog.csdn.net/forever_2015/article/details/53235716?locationNum=6&fps=1一、前言 我们在项目开发过程中,很多时候会出现由于某种原因经常会导致手机系统死机重启的情况(重启分Android重启跟kernel重启,而我们这里只讨论kernel重启也就是 kernel panic转载 2017-07-24 16:55:29 · 1718 阅读 · 0 评论 -
ASSERT(0)的作用
ooooooooooooooooooooooooooooooooooooooooooooooooooooooooo原创 2017-08-07 20:18:14 · 2170 阅读 · 0 评论 -
wait_event_interruptible 使用方法
1. 关于 wait_event_interruptible() 和 wake_up()的使用 读一下wait_event_interruptible()的源码,不难发现这个函数先将 当前进程的状态设置成TASK_INTERRUPTIBLE,然后调用schedule(), 而schedule()会将位于TASK_INTERRUPTIBLE状态的当前进程从runqueue 队列转载 2017-08-07 17:55:09 · 5239 阅读 · 0 评论 -
android休眠唤醒流程:
oooooooooooooooooooooooooooooooooooooooo原创 2017-07-31 14:35:37 · 8489 阅读 · 0 评论 -
linux设备驱动中重要的3个数据结构 &&Linux设备驱动模型几个基本数据结构模型:kobject,kset,subsystem
大多数基本的驱动操作涉及到内核的3个重要数据结构:file_operations,file 和inode。我们已经拥有一些设备号,但是如何将其与驱动操作连在一起呢?file_operations结构就是这个桥梁,这个结构体定义在Linux/fs.h>中,它是一群函数的指针集合,每个所打开的文件都存在一个f_op指针指向file_operations结构体,里面的操作大部分主要完成系统调用,如o转载 2017-07-18 16:33:11 · 981 阅读 · 0 评论 -
看门狗深度解析
往往我们发现的HWT看门狗问题:都是CPU间共享资源互锁造成的(即R 状态死锁),所以后续当发现HWT问题时,不要只是关注具体直接导致HWT对应的那个CPU核的堆栈信息,我们必须要查看每一个CPU堆栈信息。---------------其实往往此种问题是由于其它cpu核访问资源异常时死在了锁里,而等待获取资源的cpu核(直接报问题的核)由于长时间不能等到锁被释放造成被看门狗复位。死锁概念原创 2017-07-21 17:04:35 · 1830 阅读 · 0 评论 -
内核模块的加载
文章来源:http://blog.csdn.net/lidan113lidan/article/details/45313535概述一般linux中有两个程序可以添加内核模块,modprobe和insmod,前者考虑到了各个模块之间可能出现的依赖关系,被依赖的模块会被自动载入,而insmod只是简单的尝试载入当前的模块。二者最终都是通过linux系统调用sys_init_mod转载 2017-03-29 16:57:56 · 720 阅读 · 0 评论 -
arm-linux内核启动学习笔记(一)
文章来源:http://blog.csdn.net/lidan113lidan/article/details/45043155arm-linux 内核的启动这里的分析是从./arch/arm/boot/compressed/head.S:start开始的,这个start标签是zImage的入口代码。 ./arch/arm/kernel里也有个head.S,这个head.S中的st转载 2017-03-29 16:51:58 · 672 阅读 · 0 评论 -
arm-linux内核启动学习笔记(二)
文章来源:http://blog.csdn.net/lidan113lidan/article/details/46225209Part3[call_kernel,start_kernel)内核跳转到call_kernel,实际上是跳转到了./kernel/arch/arm/kernel/head.S中的ENTRY(stext)标签。 在看stext之前,先总结一下内核中的一些转载 2017-03-29 16:54:54 · 775 阅读 · 0 评论 -
LINUX内核目录文件说明以及配置并编译内核的方法
在下载内核前,我们应该讨论一些重要的术语和事实。Linux内核是一个宏内核,这意味着整个操作系统都运行在内核预留的内存里。说的更清楚一些,内核是放在内存里的。内核所使用的空间是内核预留的。只有内核可以使用预留的内核空间。内核拥有这些内存空间,直到系统关闭。与内核空间相对应的还是用户空间。用户空间是内存上用户程序拥有的空间。比如浏览器、电子游戏、文字处理器、媒体播放器、壁纸、主题等都是放在内存里的用原创 2017-06-09 10:28:26 · 47890 阅读 · 4 评论 -
kernel 启动流程之 【head.S】 学习笔记
本文转载来源:http://blog.csdn.net/forever_2015/article/details/528852501、系统引导程序 【参考:kernel-3.18/Documentation/arm/Booting】bootloader 要干的主要事情:找到并初始化内存;初始化和使能一个串口输出,这个对于调试很重要;获取CPU类型转载 2017-03-29 14:48:28 · 453 阅读 · 0 评论 -
Linux设备驱动之——I2C总线
I2C子系统2.1 LinuxI2C子系统架构在内核中已经提供I2C子系统,所以在做I2C驱动之前,就必须要熟悉该子系统。2.2 三大组成部分1、I2C核心(i2c-core)I2C核心提供了I2C总线驱动和设备驱动的注册、注销方法,I2C通信方法(algorithm)上层的、与具体适配器无关的代码以及探测设备、检测设备地址的上层代码等。转载 2016-04-21 16:43:39 · 680 阅读 · 0 评论