![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux 基础
文章平均质量分 53
dingkaich
小菜鸟学习中
展开
-
Run-time PM 详解
Run-time PM. 每个device或者bus都会向run-time PM core注册3个callbackstruct dev_pm_ops {...int (*runtime_suspend)(struct device *dev);int (*runtime_resume)(struct device *dev);int (*runt转载 2014-10-13 15:06:55 · 704 阅读 · 0 评论 -
smpl Sudden momentary power loss
转自 http://blog.csdn.net/w_angrong/article/details/8665721转载 2014-07-31 19:07:44 · 3493 阅读 · 2 评论 -
MACHINE_START分析
转自 http://blog.csdn.net/lpt19832003/article/details/7292325MACHINE_START分析在友善mini2440提供的linux2.6.32.2内核中,有如下定义:MACHINE_START(MINI2440, "FriendlyARM Mini2440 development board").phys_io转载 2014-07-31 19:03:55 · 328 阅读 · 0 评论 -
INIT_WORK和INIT_DELAYED_WORK详解
转自 http://blog.csdn.net/bingqingsuimeng/article/details/7891157朋友,你相信,一只蝴蝶在北京拍拍翅膀,将使得纽约几个月后出现比狂风还厉害的龙卷风吗?看过那部经典的影片蝴蝶效应的朋友们一定会说,这不就是蝴蝶效应吗.没错.蝴蝶效应其实是混沌学理论中的一个概念.它是指对初始条件敏感性的一种依赖现象.蝴蝶效应的原因在于蝴蝶翅膀的运动转载 2014-07-31 19:00:57 · 583 阅读 · 0 评论 -
linux内核部件分析(十)——设备驱动模型之class
转自 http://blog.csdn.net/qb_2008/article/details/6857636前面看过了设备驱动模型中的bus、device、driver,这三种都是有迹可循的。其中bus代表实际的总线,device代表实际的设备和接口,而driver则对应存在的驱动。但本节要介绍的class,是设备类,完全是抽象出来的概念,没有对应的实体。所谓设备类,是指提供的用户接转载 2014-07-31 19:01:45 · 406 阅读 · 0 评论 -
linux的mmc_spi学习笔记1
转自 http://blog.csdn.net/lqx4_3/article/details/6921215内核为linux3.0硬件平台为:龙芯1B开发板1、驱动文件结构:mmc驱动共分为三个目录:card/、core/、host/card目录下的驱动文件是卡的设备驱动,也就是针对mmc或者sd卡的块设备驱动core目录下的驱动转载 2014-07-31 19:00:17 · 675 阅读 · 0 评论 -
Android中休眠与唤醒之wake_lock, early_suspend, late_resume
最近研究如何让Android不休眠。听组里人说,机器在充电的时候不休眠。我试了一下,确实是,串口可以使用(CONFIG_PM_DEBUG并没有打开)。这个时候,LCD显示屏是休眠了,触摸屏也休眠了,其他的比如重力传感器等就没有看了,但是标准的Linux系统并没有进入休眠。看了网上好多关于Android系统的休眠与唤醒例子,感觉有些懵懵懂懂的。于是,还是看内核代码吧。转载 2014-07-31 15:38:13 · 419 阅读 · 0 评论 -
device_creat分析
转自 http://blog.csdn.net/batoom/article/details/6627659/** * device_create - creates a device and registers it with sysfs * @class: pointer to the struct class that this device should be register转载 2014-07-31 15:23:20 · 377 阅读 · 0 评论 -
writeb(), writew(), writel(),readb(), readw(), readl() 宏函数
转自 http://blog.csdn.net/commandow/article/details/5727450writeb(), writew(), writel() 宏函数功能 :往内存映射的 I/O 空间上写数据。writeb() I/O 上写入 8 位数据 (1字节)writew() I/O 上写入 16 位数据 (2字节)wirtel()转载 2014-07-31 15:15:58 · 300 阅读 · 0 评论 -
SDIO相关学习
转自 http://blog.csdn.net/myxmu/article/details/7985747这段时间在研究SDIO接口,所以要求对MMC、SD、SDIO都要有所了解,网上找过这些概念,不过总是流传的是Jollen 笔记里面的一份,许多地方未能清楚交待,所以我在其基础上加上一些自己的了解来加深对SDIO的学习。并一并学习下SDIO总线。一、首先从SD和MMC说起转载 2014-07-31 15:09:43 · 994 阅读 · 0 评论 -
Linux设备模型 (2)
转自 http://blog.csdn.net/myxmu/article/details/7985057上一篇文章《Linux设备模型 (1)》主要介绍了Linux设备模型在用户空间的接口sysfs,用户通过这个接口可以一览内核设备的全貌。本文将从Linux内核的角度来看一看这个设备模型是如何构建的。在Linux内核里,kobject是组成Linux设备模型的基础,一个kob转载 2014-07-31 15:08:39 · 299 阅读 · 0 评论 -
内核同步之名词解释和原子操作
转自 http://blog.csdn.net/wzhwho/article/details/4190076转载 2014-07-31 18:54:16 · 536 阅读 · 0 评论 -
linux里的驱动接口
转自 http://blog.csdn.net/wtao616/article/details/6147721看到这名字………………………… 大致来说分为两种(也许还有许多,等见到了再总结吧):第一种:fileoparetion里的ioctl: 第二种:属性操作中对文件进行读写 这种是重要的,也是常见的:如:static ssize_t isa转载 2014-07-31 19:08:43 · 365 阅读 · 0 评论 -
device_create ()详解
转自 http://blog.csdn.net/juckciy/article/details/7662389在驱动程序中初始化入口函数中,向内核注册一个设备后,往往要注册一个类例如static int __init mydriver_init(void) //驱动程序的初始化{ …… MYDRIVER_Major = register_chrdev(转载 2014-07-31 15:21:41 · 500 阅读 · 0 评论 -
lowlevel_init.S
转自 http://zhouyang340.blog.163.com/blog/static/30240959201222545043332/ 在我迷迷糊学看了lowlevel_init.S中的代码之后,有一个感觉就是,要想读懂其中的代码首先得看一下你所用的芯片手册,因为里面有比较详细的存储器控制(MemoryController)描述。我用的是s3c2440手册里写得十分清楚,总共有转载 2014-09-01 14:32:05 · 518 阅读 · 0 评论 -
关于linux kernel编译的几项关键点
转自 http://blog.sina.com.cn/s/blog_abc7e49a01011xlk.html关于linux kernel编译的几项关键点:1. make参数: CROSS_COMPILE即交叉编译器的前缀(prefix),也就是选择将代码编译成目标cpu的指令的工具,如指定make CROSS_COMPILE=arm-none-linux-gnueabi-就是转载 2014-08-18 11:03:23 · 399 阅读 · 0 评论 -
nor flash启动与nand flash启动的区别
转自 http://blog.csdn.net/chenbang110/article/details/7757667买了块ARM9的开发板,慢慢转载 2014-08-16 14:42:17 · 438 阅读 · 0 评论 -
linux中断申请之request_threaded_irq
在linux里,中断处理分为顶半(top half),底半(bottom half),在顶半里处理优先级比较高的事情,要求占用中断时间尽量的短,在处理完成后,就激活底半,有底半处理其余任务。底半的处理方式主要有soft_irq, tasklet, workqueue三种,他们在使用方式和适用情况上各有不同。soft_irq用在对底半执行时间要求比较紧急或者非常重要的场合,主要为一些subsys转载 2014-08-29 11:11:35 · 404 阅读 · 0 评论 -
linux软件中断——tasklet机制
本文只是对tasklet作一个粗浅的解释,不对之处敬请指正!本节我们先来说一下为什么要引入软件中断?一般来说,一次中断服务的过程通常可以分为两个部分。开头的 部分往往必须在关中断的条件下执行,这样才能在不受干扰的条件下“原子”地完成一些关键性操作,同时这部分操作的时间性又往往很强,必须在中断请求发生后立即或至少在一定时间限制中执行,而且相继的多次中断请求也不能合并在一起转载 2014-08-29 11:12:59 · 387 阅读 · 0 评论 -
linux的互斥mutex
1. 直接创建信号量 -----------》进入睡眠原创 2014-08-07 00:07:10 · 452 阅读 · 0 评论 -
request_threaded_irq()
前几天看sd卡驱动,突然发现插拔检测中断使用了request_threaded_irq. 查到如下:为什么要提出中断线程化?在 Linux 中,中断具有最高的优先级。不论在任何时刻,只要产生中断事件,内核将立即执行相应的中断处理程序,等到所有挂起的中断和软中断处理完毕后才能执行正常的任务,因此有可能造成实时任务得不到及时的处理。中断线程化之后,中断将作为内核线程转载 2014-07-31 15:24:09 · 374 阅读 · 0 评论 -
Linux regulator分析
转自 http://blog.csdn.net/smart_qiang/article/details/7614246Regulator模块用于控制系统中某些设备的电压/电流供应。在嵌入式系统(尤其是手机)中,控制耗电量很重要,直接影响到电池的续航时间。所以,如果系统中某一个模块暂时不需要使用,就可以通过regulator关闭其电源供应;或者降低提供给该模块的电压、电流大小。R转载 2014-07-31 15:13:52 · 300 阅读 · 0 评论 -
Linux设备模型 (1)
转自 http://blog.csdn.net/myxmu/article/details/7984308转载 2014-07-31 15:07:28 · 266 阅读 · 0 评论 -
Linux DebugFS 子目录也是用debugfs_create_dir来实现
转自 http://blog.csdn.net/superkris/article/details/8626517转载 2014-07-31 15:27:39 · 819 阅读 · 0 评论 -
Linux driver中device_create()
转自 http://blog.csdn.net/bailyzheng/article/details/8046801使用内核版本Linux 2.6.32通过驱动模块的加载在/dev下创建设备文件,在驱动模块卸载时又自动的删除在/dev下创建的设备文件非常方便。而这个过程就是通过device_create()和device_destroy()内核函数完成的,在Linux2.6.27之转载 2014-07-31 15:22:25 · 753 阅读 · 0 评论 -
linux 工作队列
转自 http://blog.csdn.net/a254373829/article/details/8528652书上写的工作队列的实现是创建一个单独的线程来执行相应的work. 但是最新的内核实现却不是这样的,原先的工作队列的接口都快要废弃了, New API:alloc_workqueue(name, flags, max_active)a转载 2014-07-31 18:53:28 · 343 阅读 · 0 评论 -
linux pm runtime
pm runtime核心只提供机制(功能), 什么的时候上电/掉电等策略应由driver去实现。 driver里实现的pm runtime的call back函数被runtime 核心封装了起来,会暴露一些API接口来间接的调用这么Call back函数。pm runtime利用了一个工作队列pm_wq来负责具体的电源事务,上电和下电有同步和异步之分:设备状态在PM runtime转载 2014-07-31 15:23:18 · 596 阅读 · 0 评论 -
kernel中执行一次就释放空间的代码
转自 http://blog.csdn.net/citytramper/article/details/664930linux kernel中有很大一部分代码是设备驱动代码,这些驱动代码都有初始化和反初始化函数,这些代码一般都只执行一次,为了有更有效的利用内存,这些代码所占用的内存可以释放出来。linux就是这样做的,对只需要初始化运行一次的函数都加上__init属性。在ker转载 2014-07-31 15:01:20 · 391 阅读 · 0 评论 -
module_init和module_exit
转自 http://blog.csdn.net/citytramper/article/details/600708一直以来写linux驱动,都是按照固定格式,定义一个初始化和推出函数,书上告诉我这两个函数会被调用,至于为什么会被调用,在哪调用,一直不清楚。偶然的一个机会,看到blob里面的代码,里面有一个初始化函数列表。按照一般的编程想法,各部分的初始化函数会在一个固定的函数转载 2014-07-31 15:00:02 · 393 阅读 · 0 评论 -
Linux设备驱动模块编程02
转自 http://blog.csdn.net/muge0913/article/details/6818018其中用到了EXPORT_SYMBOL宏来表明导出printMSG这个符号。还有一个EXPORT_SYMBOL_GPL宏,导出的符号具有GPL授权。内核所有的导出符号可以通过 : cat /proc/kallsyms来查看,太多了,所以最好导出到一个文件中慢慢看。在其中就转载 2014-07-31 14:59:21 · 315 阅读 · 0 评论 -
Linux设备驱动模块编程01
转自 http://blog.csdn.net/muge0913/article/details/6818001转载 2014-07-31 14:55:53 · 343 阅读 · 0 评论 -
关于main函数中的两个参数
转自 http://blog.csdn.net/wuxinliulei/article/details/10085469转载自:http://www.cnblogs.com/yangxi/archive/2011/12/16/2289971.htmlargument 参数的意思。arg+c (count) 参数数量,arg+v(value)表示具体的参数(数量可变)。 ar转载 2014-07-31 14:54:04 · 432 阅读 · 0 评论 -
禁止入内的内存引用和缓冲区溢出
callee:pushl %edp save %edp on stackmovl %esp, %edppushl %ebx save %ebxsubl $20, %esp......popl %ebx转载 2014-07-31 14:10:03 · 411 阅读 · 0 评论 -
进程上下文VS中断上下文
进程上下文VS中断上下文 内核空间和用户空间是现代操作系统的两种工作模式,内核模块运行在内核空间,而用户态应用程序运行在用户空间。它们代表不同的级别,而对系统资源具有不同的访问权限。内核模块运行在最高级别(内核态),这个级下所有的操作都受系统信任,而应用程序运行在较低级别(用户态)。在这个级别,处理器控制着对硬件的直接访问以及对内存的非授权访问。内核态和用户态有自己的内存映射,即自转载 2014-08-04 13:09:06 · 342 阅读 · 0 评论 -
进程上下文和中断上下文
转自 http://blog.chinaunix.net/uid-26126915-id-3018791.html转载 2014-08-04 13:08:00 · 311 阅读 · 0 评论 -
barrier 和 preempt_disable() 学习
转自 http://blog.csdn.net/joker0910/article/details/7782765[cpp] view plaincopy#define preempt_disable() \ do{ \ inc_preempt_count(); \ barrier(); \转载 2014-08-04 10:55:00 · 750 阅读 · 0 评论 -
uboot 编译过程
—— 百度了一下,觉得不错,非常适合我这个linux/android菜鸟 感谢原创作者,原文地址http://redboot.blogbus.com/tag/%E9%85%8D%E7%BD%AE/ 现在介绍一下u-boot的编译过程,这里用的uboot版本是U-Boot 2008.10,硬件用smdk2410,这个板子用得比较普遍,uboot已经有对其的支持。通过我们对编译过程和转载 2014-07-31 19:09:20 · 360 阅读 · 0 评论 -
LINUX内核中的xx_initcall初始化标号
转自 http://blog.csdn.net/thl789/article/details/6581146LINUX内核中的xx_initcall初始化标号 田海立@CSDN 2011-07-02 LINUX内核中有很多的初始化指示标志postcore_initcall(), arch_initcall(), subsys_init转载 2014-07-31 19:02:08 · 327 阅读 · 0 评论 -
Android中的签名机制
出自 : http://blog.csdn.net/absurd/article/details/5002763转载 2014-07-31 14:00:26 · 421 阅读 · 0 评论 -
GCC 使用
GCC,全称为GNU Compiler CollectiON,目前可以编译的语言包括:C,C++,Objective-C,Fortran,Java, Ada。GCC是GNU公社的一个项目。是一个用于编程开发的自由编译器。最初,GCC只是一个C语言编译器,他是GNU C Compiler 的英文缩写。随着众多自由开发者的加入和GCC自身的发展,如今的GCC以经是一个包含众多语言的编译器了。转载 2014-07-31 14:14:52 · 402 阅读 · 0 评论