自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 linux arm set_bit分析

以下所有分析基于linux-2.6.11 一、根据系统是否定义“__ARMEB__”,决定调用下面哪一个宏函数:#define set_bit(nr,p) ATOMIC_BITOP_LE(set_bit,nr,p)#define set_bit(nr,p) ATOMIC_BITOP_BE(set_bit,nr,p)说明:ARMEB = ARM EABI Big-endi

2016-12-15 17:08:26 2833

原创 s3c24xx中断号(非向量中断)浅析

以S3C24XX为例: 根据中断入口跳转方法的不同,中断可分为向量中断和非向量中断。采用向量中断的CPU通常为不同的中断分配不同的中断号,当检测到某中断号中断到来后,就自动跳转到与该中断号对应的地址执行。不同的中断号的中断有不同的入口地址。非向量中断的多个中断共享一个入口地址,进入该入口地址后,再通过软件判断中断标志来识别具体是哪个中断。 也就是说,向量中断由硬件提供中断服务程序的

2016-07-01 16:14:37 783

原创 linux iminor imajor dev_t

linux内核中提供下面两个内建函数用来通过inode节点返回设备的主次设备号: static inline unsigned iminor(const struct inode *inode){return MINOR(inode->i_rdev);}static inline unsigned imajor(const struct inode *inode){

2016-06-12 09:53:55 3815

转载 linux dd命令

dd使用dd这个linux命令可以创建一定大小文件。linux创建文件命令:dd命令把指定的输入文件拷贝到指定的输出文件中,并且在拷贝的过程中可以进行格式转换。语法:CODE:[Copy to clipboard]dd 〔选项〕QUOTE:if =输入文件(或设备名称)。of =输出文件(或设备名称)。ibs = bytes 一次读取bytes字节,即读入缓

2016-06-11 22:17:26 414

原创 linux-mdev自动创建设备节点

写字符设备驱动程序的时候,可以通过mdev机制帮我们自动创建设备节点; 一、涉及到的函数如下:1、自动创建/注销类class_create(struct module * owner, const char * name);class_destroy(struct class * cls);2、自动创建/注销类对应的设备class_device_create(struc

2016-06-08 15:21:17 486

转载 Linux 内核配置机制(make menuconfig、Kconfig、makefile)讲解

本文转载自:http://blog.csdn.net/dianhuiren/article/details/6917132前面我们介绍模块编程的时候介绍了驱动进入内核有两种方式:模块和直接编译进内核,并介绍了模块的一种编译方式——在一个独立的文件夹通过makefile配合内核源码路径完成    那么如何将驱动直接编译进内核呢?  

2016-06-05 18:25:30 652

转载 linux源码“.config”文件分析

本文转载自:http://www.cnblogs.com/amanlikethis/p/3641097.htmllinux源码“.config”文件分析一、.config文件概述.config文件是linux内核配置文件,当执行#make uImage编译生成内核时,顶层的Makefile会读取.config文件的内容,根据这个配置文件来编译所定制的内核。 二、.confi

2016-06-05 07:28:18 1834

原创 orr r0,r0,#R1_nF:OR:R1_iA

在S3C2440手册上时钟与电源管理有一部分内容如下: 1. CLKDIVN should be set carefully not to exceed the limit of HCLK and PCLK. 2. If HDIVN is not 0, the CPU bus mode has to be changed from the fast bus mode to the

2016-06-04 15:27:30 1841

转载 中断处理程序&中断服务例程

中断处理程序(Interrupt Handler)和中断服务例程ISR(Inerrupt Service Routine)是两个不同的概念;一条中断线对应一个中断处理程序,而一个中断处理程序再对应若干个中断服务例程,如下:所有的中断服务例程挂在中断请求队列中,这个工作是由request_irq()函数来完成的,其实也就是对中断服务例程进行注册,关于这个函数的具体实现在include

2016-06-03 13:58:23 2281

原创 linux内核栈定义

linux中把内核栈和进程描述符结构体放在一个固定大小的区域内(比如4K或8K字节),这样处理有如下好处:1、内核可以快速通过栈指针获得当前在CPU上正在运行进程的描述符地址;2、在多处理器上,可以仅通过检查栈就可以获得当前正确的进程,不用强制引入全局静态数组current;对于不同的版本,类似的定义可能有一点区别:linux-2.4.0>union task_unio

2016-06-03 13:57:13 661

原创 list_entry

说明:以下所有代码基于linux-2.6.22.6内核; 1、/** * list_entry - get the struct for this entry * @ptr:the &struct list_head pointer. * @type:the type of the struct this is embedded in. * @member:

2016-06-03 13:55:11 416

原创 Makefile 条件编译"-y"

以下所有内容均基于"u-boot-2012.04.01"。 在u-boot中的子目录makefile中,有大量的类似于下面的语句:Makefile (drivers\gpio):COBJS-$(CONFIG_AT91_GPIO)+= at91_gpio.oCOBJS-$(CONFIG_KIRKWOOD_GPIO)+= kw_gpio.oCOBJS-$(CON

2016-06-03 13:53:21 3693

原创 清除bss段

1、有关链接脚本中的内容:__bss_start = .;.bss : { *(.bss) }__bss_end = .; 2、bss段清零C语言实现:  void clear_bss(void){extern int __bss_start, __bss_end;    // 其中“__bss_start”和“__bss_end”表示bss段的首地

2016-06-03 13:52:13 2684

原创 C语言变参函数宏定义分析

在C语言变参函数中总是会用到下面几个宏:0、#define  _ADNBND                (sizeof (acpi_native_int) - 1)1、#define _bnd(X, bnd)            (((sizeof (X)) + (bnd)) & (~(bnd)))2、#define va_arg(ap, T)           (*(T

2016-06-03 13:49:59 1127

原创 andeq r0, r0, r0

在arm反汇编文件(.dis)中经常在或段中看到一些奇怪的代码,比如: 1、.text段文字池:0000003c:  0000804c    andeq   r8, r0, ip, asr #32    00000040:  00008048    andeq   r8, r0, r8, asr #32 2、.bss段:     0000804c:   000000

2016-06-03 13:48:16 8182 1

原创 Linux执行SHELL脚本的几种方法

1、source(或.)命令用法:   source filename 或 . filename   作用:在当前bash环境下读取并执行FileName中的命令,该filename文件可以无执行权限。   如:“source bash_profile”与“. bash_profile”两者等效。    source(或点)命令通常用于重新执行刚修改的初始化文档。 

2016-06-03 13:46:46 635

原创 进程终止

有8种方式使进程终止,其中5种为正常终止,它们是:  (1) 从main返回;  (2) 调用exit;  (3) 调用_exit或_Exit;  (4) 最后一个线程从其启动例程返回;  (5) 从最后一个线程调用pthread_exit;  异常终止有3种方式,它们是:  (1) 调用abort;  (2) 接收到一个信号;  (3) 最后一个线程对取消请求

2016-06-03 13:45:35 330

原创 编译与解释

计算机语言定义程序的属性而不是程序执行的方式,理解这一点是很重要要的。程序执行一般有两种方式,即编译的(compiled)或解释的(interpreted)。尽管用任何计算机语言编写的程序都可以编译或解释,但有些语言主要是为一种执行方式设计的。比如,Java是用来解释的,而C是用来编译的。就C而言,应当理解它是被明确指定为编译语言而得到优化的。虽然已编写出的C编译程序可以用于某些环境(

2016-06-03 13:42:53 1705

转载 SHELL脚本(双引号 单引号 反引号)

在shell中引号分为三种:单引号,双引号和反引号。单引号 ‘ 由单引号括起来的字符都作为普通字符出现。特殊字符用单引号括起来以后,也会失去原有意义,而只作为普通字符解释。例如:$ string=’$PATH’$ echo $string$PATH$可见$保持了其本身的含义,作为普通字符出现。双引号 “ 由双引号括起来的字符,除$

2016-06-03 13:41:00 922

转载 位域

和许多计算机语言不同,C语言具备访问字节中位的内设机制,称为位域(bit-field),通过它可以访问单个的位。由于以下原因,这种特点很有价值:    1、内存紧张时,可以把若干个布尔变量存入一个字节中;    2、某些设备把编码信息传输到各个位;    3、某些加密算法需要访问字节中的位。    虽然这类任务可以通过位操作实现,但位域可以增加更多的代码结构化,也可能更高效。位域必

2016-06-03 13:38:56 670

原创 如何使用统一的公式表示二进制的补码

吃过猪肉的都知道,计算机是基于二进制数补码的,一般我们是怎样计算二进制补码的呢?如下(仅举一个简单的例子):    正数:01110110(2)=64+32+16+4+2=118(10);    负数:10100111(2)               1、二进制取反后+1,得到:-01011001(2);               2、-01011001(2)=-(64+1

2016-06-03 13:35:52 562

原创 如何用#define宏定义多行函数

在软件开发过程中,经常有一些常用或者通用的功能或者代码段,这些功能既可以写成函数,也可以封装成为宏定义。那么究竟是用函数好,还是宏定义好?这就要求我们对二者进行合理的取舍。   首先,函数调用会带来额外的开销,它需要开辟一片栈空间,记录返回地址,将形参压栈,从函数返回还要释放堆栈。这种开销不仅会降低代码效率,而且代码量也会大大增加,而使用宏定义则在代码规模和速度方面都比函数更胜一筹;其

2016-06-03 13:30:15 32201

原创 C语言结构体打包的意义

计算机课程指引人们避开微观的优化而去寻找更优的算法。 硬件价格的下降也使挤压内存占用变得没有必要。但该技术仍在重要的情况下有用武之地,而且只要内存有限制,就会有用。 这篇文章的目的是使C程序员重新发现该技术,使他们能专注于更重要的事情。1. 对齐的要求    首先要理解的是,在现代处理器上,C编译器在内存里存放基本数据类型时是受限的:以最快存取速度为目标。在

2016-06-03 13:28:16 1900

转载 GNU C 扩展

Linux 内核使用的 GNU C 扩展 =========================== GNC CC 是一个功能非常强大的跨平台 C 编译器,它对 C 语言提供了很多扩展, 这些扩展对优化、目标代码布局、更安全的检查等方面提供了很强的支持。本文把 支持 GNU 扩展的 C 语言称为 GNU C。 Linux 内核代码使用了大量的 GNU C 扩展,以至

2016-06-03 06:11:00 260

原创 系统时钟:MPLLCON设置

JZ2440开发板(ARM920T):在做系统时钟实验时,发现在设置LOCKTIME、CLKDIVN、异步总线模式转换和MPLLCON之间要有足够的间隔时间,否则系统时钟不能正常倍频和分频。void clock_init(void){     LOCKTIME = 0x02000200;    CLKDIVN = 0x03; /*快速总线模式转到异步总线模式*/__

2016-06-02 01:16:20 701

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除