自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

学无止境

梯子永远不是用来放脚的!

  • 博客(38)
  • 资源 (2)
  • 收藏
  • 关注

转载 SMBIOS信息概述 – DMI

SMBIOS信息概述 – DMI 先介绍 DMI 。 DMI 是英文单词 Desktop Management Interface 的缩写,也就是桌面管理界面,它含有关于系统硬件的配置信息。计算机每次启动时都对 DMI 数据进行校验,如果该数据出错或硬件有所变动,就会对机器进行检测,并把测试的数据写入 BIOS 芯片保存。所以如果我们在 BIOS

2017-05-25 00:17:24 8689 1

转载 Java中的Exception异常 自定义异常

Java基础笔记 – Java中的Exception异常 自定义异常public class Exception extends ThrowableException 类及其子类是 Throwable 的一种形式,它指出了合理的应用程序想要捕获的条件。public class RuntimeException extends Exceptio

2016-06-23 21:44:25 38148 1

转载 java中的抽象类和抽象方法

java中的抽象类和抽象方法版权声明:本文为博主原创文章,未经博主允许不得转载。抽象方法:在类中没有方法体的方法,就是抽象方法。抽象类:含有抽象方法的类就叫抽象类。抽象类中的抽象方法必须被实现!如果一个子类没有实现父类中的抽象方法,则子类也成为了一个抽象类!抽象类中的普通方法,可以不必实现。1 用abstrac

2016-06-22 10:56:20 4362

转载 为什么静态成员、静态方法中不能用this和super关键字

为什么静态成员、静态方法中不能用this和super关键字1.     在静态方法中是不能使用this预定义对象引用的,即使其后边所操作的也是静态成员也不行.因为this代表的是调用这个函数的对象的引用,而静态方法是属于类的,不属于对象,静态方法成功加载后,对象还不一定存在 2.     在问题之前先讲super的用法:1.super的用法跟this类似,this代表对

2016-06-21 21:25:22 23200 10

转载 Linux异步通知fasync

本文转载于CSDN博客:转载请注明原文地址http://blog.csdn.net/billowszpt/article/details/7184302linux设备驱动归纳总结(三):7.异步通知fasync xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

2016-06-16 21:36:44 296

转载 Linux异步通知 fasync

Linux异步通知 fasync要弄明白这个问题,我们得从最基本的原理开始。我们知道,驱动程序运行在内核空间中,应用程序运行在用户空间中,两者是不能直接通信的。但在实际应用中,在设备已经准备好的时候,我们希望通知用户程序设备已经ok,用户程序可以读取了,这样应用程序就不需要一直查询该设备的状态,从而节约了资源,这就是异步通知。好,那下一个问题就来了,这个过程如何实现呢?

2016-06-16 21:29:25 330

转载 linux 中断机制的处理过程

一、中断的概念中断是指在CPU正常运行期间,由于内外部事件或由程序预先安排的事件引起的CPU暂时停止正在运行的程序,转而为该内部或外部事件或预先安排的事件服务的程序中去,服务完毕后再返回去继续运行被暂时中断的程序。Linux中通常分为外部中断(又叫硬件中断)和内部中断(又叫异常)。在实地址模式中,CPU把内存中从0开始的1KB空间作为一个中断向量表。表中的每一项占4个字节。但是在保护模式中

2016-06-16 19:21:54 228

转载 poll方法(select多路监控原理与实现)

Linux高级字符设备驱动poll方法(select多路监控原理与实现)1、什么是Poll方法,功能是什么?2、Select系统调用(功能)      Select系统调用用于多路监控,当没有一个文件满足要求时,select将阻塞调用进程。      int select(int maxfd, fd_set *readfds, f

2016-06-16 15:46:58 759

转载 最全面的linux信号量解析

最全面的linux信号量解析信号量一.什么是信号量信号量的使用主要是用来保护共享资源,使得资源在一个时刻只有一个进程(线程)所拥有。信号量的值为正的时候,说明它空闲。所测试的线程可以锁定而使用它。若为0,说明它被占用,测试的线程要进入睡眠队列中,等待被唤醒。二.信号量的分类在学习信号量之前,我们必须先知道——Linux提供两种信号量:(1) 内核信号

2016-06-16 15:32:16 434

转载 信号量、互斥体和自旋锁

信号量、互斥体和自旋锁一、信号量      信号量又称为信号灯,它是用来协调不同进程间的数据对象的,而最主要的应用是共享内存方式的进程间通信。本质上,信号量是一个计数器,它用来记录对某个资源(如共享内存)的存取状况。一般说来,为了获得共享资源,进程需要执行下列操作:   (1) 测试控制该资源的信号量。    (2) 若此信号量的值为正,则允许进行使用该资源。进程将

2016-06-16 15:30:08 290

转载 linux内核中等待队列(wait_event,wake_up...)

根据内核3.1.6版本源码、书籍和网上资料,对几个函数进行分析       介绍这几个函数,不得不先介绍等待队列wait_queue_head_t       等待队列用于使得进程等待某一特定事件的发生,无需频繁的轮询,进程在等待周期中睡眠,当时间发生后由内核自动唤醒。等待队列       (一)数据结构       等待队列结构如下,因为每个等待队列都可以再中断时被修

2016-06-16 15:07:15 316

转载 驱动中的并发与竟态

linux设备驱动:驱动中的并发与竟态目录(?)[+]综述信号量与互斥锁Completions 机制自旋锁其他的一些选择不加锁算法原子变量与位操作seqlock顺序锁读取-拷贝-更新RCU小结综述在上一篇介绍了linux驱动的调试方法,这一篇介绍一下在驱动编程中会遇到的并发和竟态以及如何处理并发和竞争。首先什么是并发与竟态呢?并发(con

2016-06-16 12:47:00 270

转载 platform_device与platform_driver

platform_device与platform_driver      做Linux方面也有三个多月了,对代码中的有些结构一直不是很明白,比如platform_device与platform_driver一直分不清关系。在网上搜了下,做个总结。两者的工作顺序是先定义platform_device -> 注册 platform_device->,再定义

2016-06-13 23:05:37 202

转载 u-boot分析(二) u-boot的编译及配置 mkconfig

u-boot分析(二) u-boot的编译及配置 mkconfig刚开始接触u-boot总是存在这样的疑问,../include/configs/mini2440.h是如何关联到../board/mini2440.c中的?显然他们并没有在源码中有直接的包含关系。编译u-boot时,输入make mini2440_configmakeu-boot就被成功创建了,这都归功于Make

2016-06-03 21:59:13 230

转载 u-boot分析(一)

一、bootloader的概念简单的说,bootloader就是在操作系统运行之前运行的一段小程序,通过这段小程序,我们可以初始化硬件设备,简历内存空间映射图,从而将系统的软硬件环境带到一个合适的的状态,一边最终调用操作系统内核准备好正确的环境。通常,bootloader是严重的依赖于硬件而实现的,特别在嵌入式世界,建立一个通用的bootloader几乎是不可能的,尽管如此,我们仍然可以对

2016-06-03 21:56:53 340

转载 U-BOOT移植心得

最近跑完裸机之后,便开始跑系统,但想着裸机与系统之间隔着个Bootloader,反正以前也没怎么深入研究,便说花一到两周时间来搞搞U-BOOT。参考了fzb和赵春江两位大牛的,也研究了2010.06版本的和2011.06版本两个经典版本,也对比了TQ(我买的板是天嵌的)自己写的U-BOOT,学到了不少,也发现了很多东西,以下便记录以下自己的心得吧,以便以后可以自己参考下。 U-BOOT

2016-06-03 21:35:21 766

转载 uboot源码 start.S文件详解

花了一个下午的时间一行一行看完的,结合了>和下面这个人的blog的内容.虽然啃的吃力,不过受益菲浅.参考来源:http://home.eeworld.com.cn/my/space.php?uid=135723&do=blog&id=25548=======================================================================#

2016-06-03 21:01:47 301

转载 .balignl 16,0xdeadbeef浅析

http://zqwt.012.blog.163.com/blog/static/12044684201031102956976/最近在分析u-boot的源代码,看到这一行:        .balignl 16, 0xdeadbeef不知道为什么要这样写,0xdeadbeef,明显是个单词组,写在这里有何意义呢?查阅了众多资料的时候才晃然大悟。下面我一步步来说明:首先要弄

2016-06-03 18:17:42 247

转载 atoi 和itoa用法

1.itoa 在linux下没有itoa这个函数       原型:char  *itoa(int   value,char   *string,int   radix)          用法:#include           功能:将整数value转换成字符串存入string, radix为转换时所用基数(保存到字符串中的数据的进制基数 2 8 10 16)  

2016-06-01 20:35:59 538

转载 ARM汇编 MOV PC,LR

终于明白这个LR寄存器了看下面这个ARM汇编吧BL  NEXT                                 ;跳转到子程序.........                                          ;NEXT处执行NEXT..........MOV  PC,LR                  

2016-05-24 19:16:59 7038 1

转载 arm B和BL指令+系统引导程序start.s浅析

arm B和BL指令浅析本文章已收录于:B或BL指令引起处理器转移到“子程序名”处开始执行。两者的不同之处在于BL指令在转移到子程序执行之前,将其下一条指令的地址拷贝到R14(LR,链接寄存器)。由于BL指令保存了下条指令的地址,因此使用指令“MOV PC ,LR”即可实现子程序的返回。而B指令则无法实现子程序的返回,只能实现单纯的跳转。用户在编程的时候,可根据

2016-05-24 19:01:58 732

转载 ARM指令中如何判断一个立即数是有效立即数

ARM指令中如何判断一个立即数是有效立数在ARM处理器的汇编语言中,对指令语法格式中的的常数表达式有这样的规定:“该常数必须对应8位位图,即常数是由一个8位的常数循环移位偶数位得到的。”首先从ARM指令系统的语法格式说起。一条ARM指令语法格式分为如下几个部分:{}{S} ,{,}其中,是指令助记符,是必须的,而{}为指令执行条件

2016-05-19 20:59:28 9098 3

转载 ARM指令中如何判断一个立即数是有效立即数

ARM指令中如何判断一个立即数是有效立即数 在ARM处理器的汇编语言中,对指令语法格式中的的常数表达式有这样的规定:“该常数必须对应8位位图,即常数是由一个8位的常数循环移位偶数位得到的。”首先从ARM指令系统的语法格式说起。一条ARM指令语法格式分为如下几个部分:{}{S} ,{,}其中,是指令助记符,是必须的,而{}为指令执行

2016-05-19 20:55:59 898 2

转载 ARM的异常处理

ARM的异常处理当异常中断发生时,系统执行完当前指令后,将跳转到相应的异常中断处理程序处执行。当异常中断处理程序执行完成后,程序返回到发生中断指令的下条指令处执行。在进入异常中断处理程序时,要保存被中断程序的执行现场,从异常中断处理程序退出时,要恢复被中断程序的执行现场。 1、引起异常的原因    (1)、指令执行引起的异常    软件中

2016-05-18 20:42:43 5824

转载 ARM中断返回PC值分析

ARM中断返回PC值分析在ARM程序的开发过程中,对中断的处理是很普遍的、也是相当重要的。Realview MDK使用的RVCT编译器提供了__irq关键字,用此关键字修饰的函数被作为中断来函数编译,即在编译的过程中,编译器会自动添加中断处理过程中现场保护和恢复的代码,减小程序的开发难度,加快软件的开发过程。在理解__irq关键字的作用之前,先看一下ARM核对异常的处理过程。当产生异常

2016-05-18 11:07:08 2330 1

转载 strcpy函数与memcpy函数(区别及实现 )

转自http://hi.baidu.com/yuanwenxue/blog/item/f18a3e29cb1056f498250ae1.html6.2 字符串与数组字符串一般是用字符数组的方式存储,例如下面的str定义:char str[] = "123456";这里str是一个字符数组,它存放了一个字符串"123456",由于字符串还有一个结束

2016-05-17 22:11:48 1269

转载 memcpy的函数内部实现

memcpy的函数内部实现memcpy和memmove函数的实现,需要注意memmove的覆盖问题,还有指针类型需要考虑。下面的例子中,先给出了错误的例子,而后给出了正确的例子,引以为戒!区别:两个函数都是进行n字节内存内容的拷贝,入口参数和返回参数也都一样,可是这两个函数在内部实现上是有一定区别的,这主要是因为dest内存区域和src内存区域可能有

2016-05-17 22:04:06 1707

转载 linux 实时线程优先级问题——数值越大优先级越高吗?

linux 实时线程优先级问题——数值越大优先级越高吗?  2012-06-03 15:14:23|  分类:linux内核开发 |字号 订阅     今天查看了linux下的实时线程,FIFO和RR策略的调度,遇到一个问题:     priority越大优先级越高呢?还是越小越高呢?     回答这个问题要明白一个问题,首先,linux2.6内核将

2016-05-08 19:39:19 22030 1

原创 Ubuntu中文输入法IBUS的安装

第一:安装IBus框架,sudo apt-get install ibus ibus-clutter ibus-gtk ibus-gtk3 ibus-qt4启动IBus框架,在终端输入:im-switch -s ibus安装完IBus框架后注销系统,保证更改立即生效。第三步:安装拼音引擎 有下面几种常用选择:IBus拼音:sudo apt

2016-04-29 17:10:32 328

转载 C/C++中二级指针的理解

以前在学习数据结构的时候一直没弄懂函数参数里面传递 ** p  以及使用 &的含义,这里摘抄了一小段文章方便理解。不懂的时候再看看这几段代码。指针参数是如何传递内存的?    如果函数的参数是一个指针,不要指望用该指针去申请动态内存。见如下例子:void GetMemory(char *ip, int num){ ip = (char *)malloc(si

2016-04-12 22:27:16 709

转载 内存对齐与补齐 字节对齐与结构体大小

[C++]字节对齐与结构体大小  转自:http://pppboy.blog.163.com/blog/static/30203796201082494026399/结构体的sizeof值,并不是简单的将其中各元素所占字节相加,而是要考虑到存储空间的字节对齐问题。这些问题在平时编程的时候也确实不怎么用到,但在一些笔试面试题目中出是常常出现,对sizeof我们将在另一篇文章中总结,这

2016-04-12 22:26:29 2907

原创 字节对齐与结构体大小

#include #include /* * Abbreviation: * NAV - Native Alignment Value * NAV-of-basic_type: (on 32bit CPU) * char - 1 * int - 4 * short - 2 * long - 4 * float - 4 * double

2016-04-12 20:57:14 246

转载 linux平台下虚拟内存管理

C程序(进程)的内存布局#include const int a =10; //全局常量aint main(void) {  const int b =20; //局部常量b  int* pa = (int*)&a;  int* pb = (int*)&b;  *pa = 30; //可以吗?能成功赋值吗?  *pb =30; //可以吗?能

2016-04-11 21:35:09 283

转载 程序笔试题-const变量通过指针修改问题

const的变量在特定情况下可以通过指针修改,但是在另一些情况下是不能通过指针修改。以下是VC6下才测试。1 不能修改的情况#include int const a = 10;void main(void){ int *p = (int*)&a; *p = 20; printf("%d\n", *p);}程序编译通过,但运行时错误:

2016-04-11 21:19:40 326

转载 异或运算实现两个数的交换

通常的交换两个变量a,b的过程为int temp;temp=aa=b;b=temp;需借助上面的第3个临时变量temp.采用下面的方法,对于给定两个整数a,b,下面的异或运算可以实现a,b的交换,而无需借助第3个临时变量:    a = a ^ b;    b = a ^ b;    a = a ^ b;

2016-03-26 20:49:34 322

原创 注意printf输出函数

采用printf()函数打印输出时注意一点。详见一下两个程序的输出:一、程序1程序1输出:计算表达式a*=b+c后,a=14,表达式的值是也是,接下来printf()里面第一个参数是a,第二个参数是表达式a*=b+c,先计算表达式a*=b+c(注意此时a=14),计算后a=98,表达式的值也是98,所以输出a=98,98。二、程序2程序2输出

2016-03-26 17:49:54 501

转载 无符号整型赋值陷阱

有没有人尝试过将负数赋给一个无符号整型变量?知不知道这样做会发生什么?还没有尝试的就让我们来探索下无符号整型隐藏的秘密。先来看看下面代码:int main(){      unsigned int val = -1;      cout      return 0;}执行的结果:4294967295请按任意键继续. . . 

2016-03-25 20:59:09 2512

转载 static的作用

static的作用在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。(1)先来介绍它的第一条也是最重要的一条:隐藏。当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c。下面是a.c的内容char a = 'A'; // glob

2016-03-07 15:23:16 222

空空如也

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

TA关注的人

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