
linux_kernel
文章平均质量分 87
driverSir
你永远不知道以后会怎样,现在要做的就是努力!
展开
-
模拟内核崩溃
echo c >/proc/sysrq转载 2017-03-02 12:43:15 · 1350 阅读 · 0 评论 -
linux分配内存
一、kmalloc函数内幕 kmalloc的使用已经比较熟悉了,它的函数原型是: 1: #include 2: void *kmalloc(size_t size, int flags);其中size表示要分配的块的大小, flags是分配标志。下面分别详细说明这两个参数: * size参数 实际上内核能分配的最小内存大小不是任意的,而转载 2013-08-30 09:56:07 · 861 阅读 · 0 评论 -
[内存管理] linux kernel内存映射实例分析
引子现在android智能手机市场异常火热,硬件升级非常迅猛,arm cortex A9 + 1GB DDR似乎已经跟不上主流配置了。虽说硬件是王道,可我们还是不禁还怀疑这么强大的硬件配置得到充分利用了吗?因此以后我都会正对ARM平台分析kernel的内容。 正文在linux内存管理中,有两个资源非常重要,一个是虚拟地址,一个是物理地址。听起来似乎是废话,实际上内存管理主要转载 2013-08-09 12:01:41 · 2236 阅读 · 0 评论 -
linux-2.6.26内核中ARM中断实现详解(1)
看了一些网络上关于linux中断实现的文章,感觉有一些写的非常好,在这里首先感谢他们的无私付出,然后也想再补充自己对一些问题的理解。先从函数注册引出问题吧。一、中断注册方法在linux内核中用于申请中断的函数是request_irq(),函数原型在Kernel/irq/manage.c中定义:int request_irq(unsigned int irq, irq_han转载 2013-08-19 16:43:04 · 779 阅读 · 0 评论 -
list linux
原创文章,转载请注明出处,谢谢! 作者:清林,博客名:飞空静渡 前言: 在linux 源代码中有个头文件为list.h 。很多linux 下的源代码都会使用这个头文件,它里面定义了一个结构, 以及定义了和其相关的一组函数,这个结构是这样的: struct list_head{struct list_head *next转载 2013-07-04 15:01:10 · 900 阅读 · 0 评论 -
linux设备模型深探
一:前言 Linux设备模型是一个极其复杂的结构体系,在编写驱动程序的时候,通常不会用到这方面的东西,但是。理解这部份内容,对于我们理解linux设备驱动的结构是大有裨益的。我们不但可以在编写程序程序的时候知其然,亦知其所以然。又可以学习到一种极其精致的架构设计方法。由于之前已经详细分析了sysfs文件系统。所以本节的讨论主要集中在设备模型的底层实现上。上层的接口,如pci.,usb ,网络设转载 2013-05-20 10:15:21 · 924 阅读 · 0 评论 -
理解和使用alsa配置-默认静音,必须先用amixer解除主音量和pcm音量的静音
ALSA声卡驱动程序的配置对于声卡驱动程序,除了内核自带的驱动程序之外,您还可以使用Advanced Linux Sound Architecture(ALSA,http://www.alsa-project.org/)提供的驱动程序。它支持一系列主流声卡,同时它和内核 的声音结构互相兼容,在某种程度上,可以说是内核的声卡驱动模块的补充。ALSA的声卡驱动程序的一般命名规则是snd转载 2013-07-02 16:26:21 · 10840 阅读 · 0 评论 -
IS_ERR 理解
在Linux源码中的fs部分,经常会碰到这样的函数(位于kernel/include/linux/fs.h):/* * Kernel pointers have redundant information, so we can use a * scheme where we can return either an error code or a dentry * pointe转载 2013-07-01 14:50:10 · 880 阅读 · 0 评论 -
kref
kref是一个引用计数器,它被嵌套进其它的结构中,记录所嵌套结构的引用计数,并在计数清零时调用相应的清理函数。kref的原理和实现都非常简单,但要想用好却不容易,或者说kref被创建就是为了跟踪复杂情况下地结构引用销毁情况。所以这里先介绍kref的实现,再介绍其使用规则。 kref的头文件在include/linux/kref.h,实现在lib/kref.c。闲话少说,上代码。转载 2013-06-28 14:13:12 · 791 阅读 · 0 评论 -
atomic_t
在任何处理器平台下,都会有一些原子性操作,供操作系统使用,我们这里只讲x86下面的。在单处理器情况下,每条指令的执行都是原子性的,但在多处理器情况下,只有那些单独的读操作或写操作才是原子性的。为了弥补这一缺点,x86提供了附加的lock前缀,使带lock前缀的读修改写指令也能原子性执行。带lock前缀的指令在操作时会锁住总线,使自身的执行即使在多处理器间也是原子性执行的。xchg指令不带lock前转载 2013-06-28 14:10:29 · 1228 阅读 · 0 评论 -
Linux内核Makefile文件
=== 目录 === 1 概述 === 2 角色分工 === 3 内核编译文件 --- 3.1 目标定义 --- 3.2 内嵌对象 - obj-y --- 3.3 可加载模块 - obj-m --- 3.4 导出符号 --- 3.5 库文件 - lib-y转载 2013-07-13 16:31:49 · 826 阅读 · 0 评论 -
Linux设备模型之tty驱动架构分析
原文地址:Linux设备模型之tty驱动架构分析 作者:xgr180------------------------------------------本文系本站原创,欢迎转载!转载请注明出处:http://ericxiao.cublog.cn/------------------------------------------一:前言Tty这个名称源于转载 2013-06-27 17:56:16 · 764 阅读 · 0 评论 -
linux KBuild MakeFile介绍 之二
从Linux内核2.6开始,Linux内核的编译采用Kbuild系统,这同过去的编译系统有很大的不同, 尤其对于Linux内核模块的编译。在新的系统下,Linux编译系统会两次扫描Linux的Makefile:首先编译系统会读取Linux内核顶层的 Makefile,然后根据读到的内容第二次读取Kbuild的Makefile来编译Linux内核。Linux内核Makefile分类·转载 2013-07-13 16:34:57 · 633 阅读 · 0 评论 -
Linux 2.6内核Makefile浅析
1 概述Makefile由五个部分组成:Makefile:根目录Makefile,它读取.config文件,并负责创建vmlinux(内核镜像)和modules(模块文件)。.config:内核配置文件(一般由make menuconfig生成)。arch/$(ARCH)/Makefile:目标处理器的Makefile。scripts/Makefile.*:所有kbuild Mak转载 2013-07-13 16:31:04 · 689 阅读 · 0 评论 -
linux下/dev/tty, /dev/tty0, /dev/console区别
几乎把 tty 驱动 串口驱动看完也搞清楚这三样,看这贴子算是明白点,MARK在我的fedora11系统(linux2.6.31)下,这三个设备的具体情况如下:[root@localhost dev]# ls -l ttycrw-rw-rw- 1 root tty 5, 0 2012-01-30 17:26 tty[root@localhost dev]# ls -转载 2013-06-26 17:14:23 · 3286 阅读 · 0 评论 -
Makefile详解
Makefile详解跟我一起写 Makefile陈皓概述——什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix转载 2013-06-18 10:36:53 · 737 阅读 · 0 评论 -
objcopy使用说明
objcopy用于将object的部分获全部内容拷贝到另一个object,从而可以实现格式的变换。objcopy可用用于将文件转换成S-record格式或者raw二进制格式。例如, xxxx-elf-objcopy –O srec test.o test.s19则将test.o转换成s-record文件中。通常涉及到text段。 xxxx-elf转载 2013-06-20 14:19:30 · 1498 阅读 · 0 评论 -
Copy_from_user函数详细分析
from:http://hi.baidu.com/wzt85/blog/item/1f29731ba4b317ffae513316.html copy_from_user函数的目的是从用户空间拷贝数据到内核空间,失败返回没有被拷贝的字节数,成功返回0.这么简单的一个函数却含盖了许多关于内核方面的知识,比如内核关于异常出错的处理.从用户空间拷贝数据到内核中时必须非常小心,转载 2013-09-13 10:15:59 · 822 阅读 · 0 评论 -
__copy_to_user_ll的问题
“写时复制”的概念已经不算陌生了,它大大节省了新进程需要的内存和产生新进程所需的时间,但是有一个美中不足的地方,如果允许内核随意写用户空间地址,哪怕是写保护的地址,那么写时复制将很难实现,因为内核必须向用户空间写东西,比如read调用的结果就是从内核的页高速缓存中复制过来的;如果用户空间向一个写保护的页面写数据,那么将会产生缺页异常,而在fork的时候,父进程的空间将全部设置为写保护来和子进程共享转载 2013-09-13 11:03:50 · 1014 阅读 · 0 评论 -
解读Linux内核的Oops
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://www.blogbus.com/chenm-logs/51574002.html Oops是内核编程中比较容易遇到的问题,为了跟多的了解Oops来便于调试,我对Oops提供的信息进行一个总结,以及如何调试Oops。 一个完整的Oops: BUG:转载 2013-09-11 17:44:47 · 7485 阅读 · 0 评论 -
Device Tree Usage
Device Tree UsageQuality page [view draft] (+/-) This page walks through how to write a device tree for a new machine. It is intended to provide an overview of d转载 2015-11-13 14:35:02 · 626 阅读 · 0 评论 -
printf debug
#define AlsaDbgPrintf(a, b...) printf("zsphal: "); printf(a, ##b)//#define AlsaDbgPrintf(a, b...)#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)#define error(...) do {\ ...原创 2013-10-17 16:21:54 · 1532 阅读 · 0 评论 -
内核模块相关命令:lsmod,depmod,modprob...
lsmod功能:列出内核已载入模块的状态用法:lsmod描述: lsmod 以美观的方式列出/proc/modules的内容。 输出为: Module(模块名) Size(模块大小) Used by(被...使用) eg. ne2k_pci 8928 0 8390转载 2014-04-10 17:45:50 · 1012 阅读 · 0 评论 -
Linux的内存映射
在讲解内存映射之前,不得不去探讨Linux内存管理方面的知识。需要说明的是,我们并不需要深入的理解Linux虚拟内存才能去实现Linux的内存映射,所以对于Linux内存管理方面的知识也仅限于最基础的概念。一、Linux的内存管理Linux的内存管理子系统是采用请求调页式的虚拟存储器技术实现的,有关虚拟存储器方面的知识可以参考《深入理解计算机系统》第二版的第9章内容,在转载 2014-03-20 14:06:29 · 864 阅读 · 0 评论 -
GNU make 的主要预定义变量
预定义变量 含义$* 不包含扩展名的目标文件名称。$+ 所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件。$$? 所有的依赖文件,以空格分开,这些依赖文件的修改日期比目标的创建日期晚。$@ 目标的完整名称。$转载 2014-03-06 09:18:17 · 874 阅读 · 0 评论 -
内核模块相关命令:lsmod,depmod,modprob...
lsmod功能:列出内核已载入模块的状态用法:lsmod描述: lsmod 以美观的方式列出/proc/modules的内容。 输出为: Module(模块名) Size(模块大小) Used by(被...使用) eg. ne2k_pci 8928 0 8390转载 2013-12-24 10:18:28 · 647 阅读 · 0 评论 -
linux内核动态加载模块
一、安装内核模块:一般步骤:(1) 在/usr/src/linux/下运行make menuconfig把需要编译成模块的项打上(M),保存并退出。(2) 运行make modules,这一步将在/usr/src/linux/下生成*.o或*.ko文件。(3) 运行make modeules_install来安装,这步会把生成的.o或ko文件拷贝到/lib/modu转载 2013-12-24 10:48:18 · 901 阅读 · 0 评论 -
Linux如何在系统启动时自动加载模块(转)
为 搞清楚如何在系统启动时自动加载模块,搜索了好久,网上有很多人提出这个问题,但都没有正确的答案,无论是中文社区还是英文社区,大家的回答都没有讲到点 子上,无非是围绕 modprobe.conf、modprobe讲来讲去的,要不就是针对特定问题尝试不同的方法。有的还建议把modprobe modulename写入rc.local,却不曾想,rc.local的执行被放在整个启动顺序的很后面,而启动i转载 2013-12-24 10:49:56 · 1813 阅读 · 0 评论 -
一个简单的Makefile
CC=gccTARGET=testSRC=$(wildcard *.c)OBJECT= ${SRC:.c=.o}INCLUDES=-I/usr/include/alsaLDFLAGS=-lasoundall:$(TARGET)$(OBJECT):$(SRC)$(CC) -c $(INCLUDES) $$(TARGET):$(OBJECT)$(原创 2013-10-14 17:37:49 · 833 阅读 · 0 评论 -
总线地址、物理地址、虚拟地址相关概念澄清
总线地址、物理地址、虚拟地址相关概念澄清Now, on normal PCs the bus address is exactly the same as thephysicaladdress, and things are very simple indeed. However, they are thatsimplebecause the memory and the devices sh转载 2013-10-22 22:58:55 · 1486 阅读 · 0 评论 -
vim
h, j, k, l - 移动光标i - 在当前光标入插入a - 在当前光标后插入A - 在行末插入x - 删除当前位置的字符X - 删除当前位置的前一个字符c{motion} - 改变某一段内容C - 改变当前位置到行末的内容s - 改变当前位置的内容S - 改变当前行的内容d{motion} - 删除某些内容D - 删除当前位置到行末的内容,等同于转载 2013-10-16 15:46:13 · 625 阅读 · 0 评论 -
详解大端模式和小端模式
详解大端模式和小端模式嵌入式开发交流群280352802,欢迎加入!一、大端模式和小端模式的起源 关于大端小端名词的由来,有一个有趣的故事,来自于Jonathan Swift的《格利佛游记》:Lilliput和Blefuscu这两个强国在过去的36个月中一直在苦战。战争的原因:大家都知道,吃鸡蛋的时候,原始的方法是打破鸡蛋较大的一端,可以那时的皇帝的祖父由于小时侯吃鸡转载 2013-09-26 10:32:54 · 774 阅读 · 0 评论 -
Wave File Format
Table of ContentsOverviewData FormatsFile StructureWave File HeaderWave File ChunksFormat Chunk - "fmt "Data Chunk - "data"Fact Chunk - "fact"Cue Chunk - "cue "Playlist Chunk - "plst"Assoc转载 2013-09-30 16:50:36 · 2722 阅读 · 0 评论 -
大小端转换
#include typedef unsigned short __u16;typedef unsigned int __u32;#define ___swab16(__x) ((__u16)((((__u16)(__x) & (__u16)0x00ffU) > 8) ))#define ___swab32(__x) ((__u32)((((__u32)(__x) & (__u原创 2013-09-30 09:12:47 · 1541 阅读 · 0 评论 -
关于linux内核模块Makefile的解析
Linux内核是一种单体内核,但是通过动态加载模块的方式,使它的开发非常灵活 方便。那么,它是如何编译内核的呢?我们可以通过分析它的Makefile入手。以下是 一个简单的hello内核模块的Makefile. ifneq ($(KERNELRELEASE),)obj-m:=hello.oelseKERNELDIR:=/lib/modules/$(shell uname -r)/b转载 2013-09-29 13:46:38 · 1136 阅读 · 0 评论 -
linux内核中的copy_to_user和copy_from_user(一)
inux内核中的copy_to_user和copy_from_user(一)Kernel version:2.6.14CPU architecture:ARM920TAuthor:ce123(http://blog.youkuaiyun.com/ce123)1.copy_from_user在学习Linux内核驱动的时候,经常会碰到copy_from_user转载 2013-09-11 17:54:59 · 1322 阅读 · 0 评论 -
typeof
Another way to refer to the type of an expression is with typeof. The syntax of using of this keyword looks like sizeof, but the construct acts semantically like a type name defined with typedef.转载 2013-06-09 11:51:27 · 675 阅读 · 0 评论 -
Linux 内核 Makefile 体系简单分析
众所周知,Linux内核是使用make命令来配置并编译的,那必然少不了Makefile。在内核目录树中我们可以看到内核编译系统的顶层Makefile文件。但是如此复杂、庞大的内核源码绝不可能使用一个或几个Makefile文件来完成配置编译,而是需要一套同样复杂、庞大,且为Linux内核定制的Makefile系统。她可以说是内核的一个子系统,是内核中比较特殊的一部分,几乎都是应用层的程序和脚本,但又转载 2013-06-19 11:10:23 · 749 阅读 · 0 评论 -
Linux操作系统下的时间设置
Linux时钟分为系统时钟(System Clock)和硬件(Real Time Clock,简称RTC)时钟。系统时钟是指当前Linux Kernel中的时钟,而硬件时钟则是主板上由电池供电的时钟,这个硬件时钟可以在BIOS中进行设置。当Linux启动时,硬件时钟会去读取系统时钟的设置,然后系统时钟就会独立于硬件运作。Linux中的所有命令(包括函数)都是采用的系统时钟设置。在Linux转载 2013-06-17 16:32:23 · 699 阅读 · 0 评论 -
Linux--根文件系统的挂载过程分析
本篇文章以S3C6410公版的Linux BSP和U-Boot来进行分析,文中所有提及的名词和数据都是以该环境为例,所有的代码流程也是以该环境为例来进行分析。哈哈。如果有不正确或者不完善的地方,欢迎前来拍砖留言或者发邮件到guopeixin@126.com进行讨论,先行谢过。简单的来说,根文件系统包括虚拟根文件系统和真实根文件系统。在Kernel启动的初始阶段,首先去创建虚拟的根文件系统,转载 2013-05-20 10:36:22 · 639 阅读 · 0 评论