linux内核学习
文章平均质量分 85
HULIHONG
性格开朗,喜欢学习、游戏。
展开
-
linux 2.6 内核模块的Makefile
Linux 2.6 下内核模块的Makefile 收藏 <!-- document.body.oncopy =转载 2010-02-02 17:13:00 · 619 阅读 · 0 评论 -
__user && address_space
所有的内核代码,基本都包含了linux/compile.h这个文件,所以它是基础,打算先分析这个文件里的代码看看,有空再分析分析其它的代码。首先印入眼帘的是对__ASSEMBLY__这个宏的判断,这个变量实际是在编译汇编代码的时候,由编译器使用-D这样的参数加进去的,AFLAGS这个变量也定义了这个变量,gcc会把这个宏定义为1。用在这里,是因为汇编代码里,不会用到类似于__user这样的转载 2011-12-05 15:49:35 · 634 阅读 · 0 评论 -
GNC C __attribute__机制
__attribute__机制介绍分类: C/C++/C#2011-06-24 23:10 1857人阅读 评论(0) 收藏 举报1. __attribute__GNU C的一大特色(却不被初学者所知)就是__attribute__机制。__attribute__可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型转载 2012-10-17 18:51:44 · 1017 阅读 · 0 评论 -
x86下构建arm的的linux内核树
为arm平台构建linux内核树日期:2011-06-22 | 分类:Linux | Tags:杂谈版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://jezze.blogbus.com/logs/156176240.html 前面说到要编写Linux 2.6的驱动,必须建立内核源码树,前面建立的源码树是针对i686平台的转载 2012-11-27 21:16:30 · 932 阅读 · 0 评论 -
linux内核树
内核树~O'REILLY 写的《LINUX 设备驱动程序》中作者一再强调在编写驱动程序时必须 建立内核树。所谓内核树,我的理解和网上资料说的一致就是内核源码的一种逻辑形式。先查看自己OS使用的内核版本 shana@shana:~$ uname -r 2.6.22-14-generic /* 这是我显示的结果 */ 如果安装系统时,自动安装了源码。在 /usr转载 2012-11-27 21:37:48 · 3008 阅读 · 0 评论 -
Linux 2.6 menuconfig内核编译配置选项详解
Code maturity level options代码成熟度选项Prompt for development and/or incomplete code/drivers 显示尚在开发中或尚未完成的代码与驱动.除非你是测试人员或者开发者,否则请勿选择 General setup常规设置Local version - append to kernel re转载 2012-12-05 15:41:40 · 2382 阅读 · 0 评论 -
软中断与硬中断 区别
软中断与硬中断 区别①硬中断是由外部事件引起的因此具有随机性和突发性;软中断是执行中断指令产生的,无面外部施加中断请求信号,因此中断的发生不是随机的而是由程序安排好的。②硬中断的中断响应周期,CPU需要发中断回合信号(NMI不需要),软中断的中断响应周期,CPU不需发中断回合信号。③硬中断的中断号是由中断控制器提供的(NMI硬中断中断号系统指定为02H);软中断的中转载 2013-09-29 16:54:13 · 1448 阅读 · 0 评论 -
linux 学习url-very important
http://www.ibm.com/developerworks/cn/linux/原创 2013-10-11 17:25:10 · 661 阅读 · 0 评论 -
fork exec系列
系统调用跟我学(3)进程管理相关的系统调用之二雷镇 (leicool@21cn.com) 简介: 本文介绍了Linux下的进程的一些概念,并着重讲解了与Linux进程管理相关的重要系统调用wait,waitpid和exec函数族,辅助一些例程说明了它们的特点和使用方法。发布日期: 2002 年 8 月 09 日 级别: 初级 访问情况转载 2014-01-16 17:54:34 · 818 阅读 · 0 评论 -
Linux写时拷贝技术
原文url:http://www.cnblogs.com/biyeymyhjob/archive/2012/07/20/2601655.htmlLinux写时拷贝技术(copy-on-write)源于网上资料COW技术初窥: 在Linux程序中,fork()会产生一个和父进程完全相同的子进程,但子进程在此后多会exec系统调用,出于效率考虑,linux中引入了转载 2014-01-17 14:55:35 · 942 阅读 · 0 评论 -
嵌入式Linux BSP的设计与实现
原文地址:http://blog.sina.com.cn/s/blog_54f82cc201012jvi.html[Linux BSP]嵌入式Linux BSP的设计与实现(2012-08-29 14:04:52)转载▼标签:linuxkernelbspit分类:NSN_BspDriver1. 引言 嵌入式转载 2014-02-21 10:23:21 · 1716 阅读 · 0 评论 -
内存管理单元-MMU
原文地址:http://www.cnitblog.com/tarius.wu/articles/322.html现代操作系统及CPU硬件中,都会提供内存管理单元(memory management unit,MMU)来进行内存的有效管理。内存管理算法有许多,从简单的裸机方法到分页和分段策略。各种算法都有其优缺点,为特定系统选择内存管理算法依赖于很多因素,特别是系统的硬件设计。1转载 2014-02-11 11:29:32 · 1846 阅读 · 0 评论 -
TLB工作原理
TLB - translation lookaside buffer快表,直译为旁路快表缓冲,也可以理解为页表缓冲,地址变换高速缓存。由于页表存放在主存中,因此程序每次访存至少需要两次:一次访存获取物理地址,第二次访存才获得数据。提高访存性能的关键在于依靠页表的访问局部性。当一个转换的虚拟页号被使用时,它可能在不久的将来再次被使用到,。TLB是一种高速缓存,内存管理硬件使用它来改善转载 2014-02-11 11:33:19 · 23392 阅读 · 1 评论 -
fork vfork exec
1:内核创建进程的主要开销:生成进程描述符,复制父进程的地址空间给子进程,复制页表。2:fork工作过程,内核为子进程创建一个新的进程描述符,并给子进程分配进程地址空间,并复制父进程的页表给子进程。当子进程修改页表时候(写操作的时候),此时内核会将父进程的地址空间全部复制给进程的地址空间(COW技术,写时复制技术),并分配物理内存给子进程,然后修改进程的页表。写时复制技术的体现,子进程先于父进原创 2014-01-18 17:45:55 · 1137 阅读 · 0 评论 -
动态链接库中函数的地址确定---PLT和GOT
动态链接库中函数的地址确定---PLT和GOT2012-09-16 20:27:42 分类: C/C++ 前面写过动态链接库 延迟绑定的一篇博文,那篇文章我非常喜欢,但是当时刚搞清楚,自己写的比较凌乱,我最近学习了Ulrich Drepper的How to write share library,学习了几篇其他的讲述动态链接的文章,再次整理了这篇文章。转载 2015-03-12 17:20:13 · 2564 阅读 · 0 评论 -
linux 段错误调试方法
1.如果崩溃在程序中,例如 SMH kernel: process_name[32183]: segfault at 24 ip 0000000000412b13 sp 00007fffaab744e0 error 6 in process_name[400000+6e000] 1> 可以通过 addr2line -e process_name 0x412b13 -f 具体定位到源原创 2015-06-11 12:39:12 · 2415 阅读 · 0 评论 -
i2c总线 && driver
一 1 i2c总线:2线式串行总线接口,SDA(数据线)和SCL(时钟信号线),SCL一般是由主设备控制的,用来控制数据传输的开始、结束、以及传输方向(即R/W)。 2 当SCL 处于高电平时,SDA由高向低跳跃,即主设备通过I2C发送一个开始信号(所有从设备处于就绪状态);当SCL处于高电平,SDA由低向高跳跃,即主设备通过I2C总线发送一个停止信号。 3 数据传输时原创 2011-12-08 17:22:39 · 880 阅读 · 0 评论 -
I2C总线协议详解
I2C总线定义I2C(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。I2C总线产生于在80年代,最初为音频和视频设备开发,如今主要在服务器管理中使用,其中包括单个组件状态的通信。例如管理员可对各个组件进行查询,以管理系统的配置或掌握组件的功能状态,如电源和系统风扇。可随时监控内存、硬盘、网络、系统温度等多个参转载 2011-12-03 09:40:37 · 810 阅读 · 0 评论 -
linux驱动程序开发第三版一些知识总结
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <! /* Style原创 2010-02-03 09:12:00 · 1005 阅读 · 0 评论 -
linux内核基本数据类型总结
linux内核基本数据类型总结对linux内核的数据类型做一下总结。下面部分内容参考了:http://book.csdn.net/bookfiles/12/100126.shtml当L转载 2010-02-21 10:23:00 · 1048 阅读 · 0 评论 -
open系统调用的源码
用户界面我们使用系统调用open来打开一个文件,例如:fd = open( "/home/mine/data/myfile",O_RDWR|O_CREAT);下面来看看Linux是如何完成的,首先是系统调用的代码:sys_open的源程序asmlinkage long sys_open(const char * filen转载 2010-02-21 10:30:00 · 1505 阅读 · 0 评论 -
linux内核空间与用户空间信息交互方法
linux内核空间与用户空间信息交互方法本文作者:康华:计算机硕士,主要从事Linux操作系统内核、Linux技术标准、计算机安全、软件测试等领域的研究与开发工作,现就职于信息产业部软件与集成电路促进中心所属的MII-HP Linux软件实验室。如果需要可以联系通过kanghua151@msn.com联系他。 摘要转载 2010-02-22 17:59:00 · 816 阅读 · 0 评论 -
了解内核知识的网址
http://soft.yesky.com/lesson/1/2648001.shtml原创 2010-02-21 15:09:00 · 642 阅读 · 0 评论 -
U-Boot简介与嵌入式内核移植简介
<br />1 U-BOOT:<br /> <br />在U-Boot(UniversalBootloader)之前,先介绍一下Bootloader。简单的说,Bootloader就是在操作系统内核运行之前的一段引导程序,类似于PC中的BIOS。通过它,可以完成对应硬件设备的初始化,并建立内存空间的映射图的功能,为最终调用系统内核做好准备。<br />U-Boot是遵循GPL条款的开放源码项目,它不仅仅支持嵌人式Linux系统的引导,U-Boot中Universal的一层含义就是在于U-Boot转载 2011-05-31 21:27:00 · 1056 阅读 · 0 评论 -
如何为嵌入式开发建立交叉编译环境
<br />原文网址 http://www.ibm.com/developerworks/cn/linux/l-embcmpl/<br /> <br />在裁减和定制Linux,运用于你的嵌入式系统之前,由于一般嵌入式开发系统存储大小有限,通常你都要在你的强大的pc机上建立一个用于目标机的交叉编译环境。这是一个由编译器、连接器和解释器组成的综合开发环境。交叉编译工具主要由 binutils、gcc 和 glibc几个部分组成。有时出于减小 libc 库大小的考虑,你也可以用别的 c 库来代替 g转载 2011-05-31 21:30:00 · 591 阅读 · 0 评论 -
向内核加载/卸载模块
<br />模块是如何加载到内核的要支持模块的动态加载,卸载, 在编译内核时要注意: “Lodable Module Support" 中的相应选项要选上. 比如要支持加载模块, 应该选上Enable loadable module support; 要支持卸载模块, 要选上Module unloading ; 要支持强制卸载模块, 要选上Forced module unloading!1, When the kernel needs a feature that is not resident i转载 2011-05-31 16:33:00 · 1724 阅读 · 0 评论 -
从文件 I/O 看 Linux 的虚拟文件系统
从文件 I/O 看 Linux 的虚拟文件系统<br /> 吴 美清 (yolanda_wumq@hotmail.com), 研究生, 北京大学 软件与微电子学院吴美清,北京大学 软件与微电子学院研究生<br />简介: Linux允许众多不同的文件系统共存,并支持跨文件系统的文件操作,这是因为有虚拟文件系统的存在。虚拟文件系统,即VFS(Virtual FileSystem)是 Linux 内核中的一个软件抽象层。它通过一些数据结构及其方法向实际的文件系统如 ext2,vfat转载 2011-05-09 19:59:00 · 856 阅读 · 0 评论 -
linux ioctl函数获取本机IP
//ifconf通常是用来保存所有接口信息的//if.hstruct ifconf {int ifc_len; /* size of buffer */union {char *ifcu_buf; /* input from user->kernel*/struct ifreq *ifcu_req; /* return from kernel->user*/}转载 2011-11-23 18:54:09 · 2209 阅读 · 0 评论 -
linux系统部分头文件的简要说明
头文件目录中总共有32个.h头文件。其中主目录下有13个,asm子目录中有4个,linux子目录中有10个,sys子目录中有5个。这些头文件各自的功能如下,具体的作用和所包含的信息请参见第14章。:a.out头文件,定义了a.out执行文件格式和一些宏。:常数符号头文件,目前仅定义了i节点中i_mode字段的各标志位。:字符类型头文件,定义了一些有关字符类型判断和转换的宏。:错转载 2011-11-29 17:59:35 · 2219 阅读 · 0 评论 -
结构体变量的赋值方法
源码如下#include #include #include struct A{int (*read)(int a, int b);int (*write)(int a, int b);int (*ioctl)(int a, int b);};int sn7325_read(int a, int b){printf("%d %d\n",原创 2011-12-06 10:41:20 · 2331 阅读 · 0 评论 -
linux kernel __init && __exit
原始定义:include/linux/init.h#define __init __attribute__ ((__section__ (".init.text")))#define __initdata __attribute__ ((__section__ (".init.data")))#define __exitdata __attribute__ ((__section_转载 2011-12-06 08:49:59 · 723 阅读 · 0 评论 -
ioctl之关联_IO, _IOR, _IOW, _IOWR 宏的用法与解析
在驱动程序里, ioctl() 函数上传送的变量 cmd 是应用程序用于区别设备驱动程序请求处理内容的值。cmd除了可区别数字外,还包含有助于处理的几种相应信息。 cmd的大小为 32位,共分 4 个域:bit31~bit30 2位为 “区别读写” 区,作用是区分是读取命令还是写入命令。bit29~bit16 14位为 "数据大小" 区,表示 ioctl() 中的 arg 变量传送转载 2011-12-06 15:04:03 · 1019 阅读 · 0 评论 -
I2C适配器——1
到底什么是I2C适配器?看了篇讲LINUX I2C体系的书,说是主要的硬件有2个:一个client,一个adapter,I2C体系结构围绕她俩展开。可是,到底什么是adapter?是I2C控制器么?如果是的话,I2C控制器不就几个寄存器么,还搞这么复杂作甚?比如,单片机里的I2C控制器,好歹搞她两下她就干活了不甚理解这儿的I2C adapter。wmmy2008 发表于转载 2011-12-06 08:56:22 · 3405 阅读 · 1 评论 -
对于linux下system()函数的深度理解(整理)
转载自:http://blog.sina.com.cn/s/blog_8043547601017qk0.html这几天调程序(嵌入式linux),发现程序有时就莫名其妙的死掉,每次都定位在程序中不同的system()函数,直接在shell下输入 system()函数中调用的命令也都一切正常.就没理这个bug,以为是其他的代码影响到这个,或是内核驱动文件系统什么的异常导致,昨天有出现了这个问题,转载 2015-06-30 17:42:20 · 1056 阅读 · 0 评论