- 博客(6)
- 资源 (2)
- 收藏
- 关注
转载 Linux内核中ioremap映射的透彻理解
几乎每一种外设都是通过读写设备上的寄存器来进行的,通常包括控制寄存器、状态寄存器和数据寄存器三大类,外设的寄存器通常被连续地编址。根据CPU体系结构的不同,CPU对IO端口的编址方式有两种: (1)I/O映射方式(I/O-mapped) 典型地,如X86处理器为外设专门实现了一个单独的地址空间,称为"I/O地址空间"或者"I/O端口空间",CPU通过专门的I/O指令(如X86的IN和O
2013-11-28 13:22:01 521
转载 axi总线介绍
AXI(Advanced eXtensible Interface)是一种总协议,该协议是ARM公司提出的AMBA(Advanced Microcontroller Bus Architecture)3.0协议中最重要的部分,是一种面向高性能、高带宽、低延迟的片内总线。它的地址/控制和数据相位是分离的,支持不对齐的数据传输,同时在突发传输中,只需要首地址,同时分离的读写数据通道、并支持显著传输访问
2013-11-26 16:17:50 6909 1
转载 使用__builtin_return_address获得程序运行栈情况
项目中遇到了一个多线程的问题,系统总是莫名其妙的崩溃,而且bug不可重现,后来发现是接收到某些信号的问题,于是乎就加入了信号处理函数,想获得是什么地方触发了这个信号,因为感觉多线程调试比较麻烦,于是就想到了使用利用__builtin_return_address来获得函数运行栈的方法。直接上测试代码: #include #include #include
2013-11-26 15:42:36 845
转载 __builtin_constant_p(x)
gcc的内建函数,当x为常数时返回1, x为变量时返回0. 不过这并不完全准确。linux kernel的代码中经常有这样的代码:if (__builtin_constant_p(x)) {do1;} else {do2;}可以认为这个函数的求值在编译时就完成了。从而外面的条件跳转语句的两个分支,只有其中一个会出现在目标代码中。准确的定义应该是:如果x的值在编译时能
2013-11-26 15:41:50 2262
转载 物理内存的分配
物理内存的分配在内核分配内存时,必须记录页帧的已分配或空闲状态,以免两个进程使用同样的内存区域。由于内存分配和释放非常频繁,内核还必须保证相关操作尽快完成。内核可以只分配完整的页帧。将内存划分为更小的部分的工作,则委托给用户空间中的标准库。标准库将来源于内核的页帧拆分为小的区域,并为进程分配内存。1. 伙伴系统内核中很多时候要求分配连续页。为快速检测内存中的连续区域,内核采用了一种古老而历
2013-11-22 13:32:49 1128
转载 linux编译信息重定向
引用地址:http://blog.chinaunix.net/article.ph...61&blogId=4921Linux shell I/O重定向详解 I/O重定向详解及应用实例1、 基本概念(这是理解后面的知识的前提,请务必理解) a、 I/O重定向通常与 FD有关,shell的FD通常为10个,即 0~9; b、 常用FD有3个,为0(stdin,标准输入)、1(st
2013-11-19 11:07:34 1477
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人