自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 资源 (6)
  • 收藏
  • 关注

原创 在非process context中,不能做什么

<br /> When you are outside of process context (i.e., in interrupt context), you must observe the<br />following rules:<br />  • No access to user space is allowed. Because there is no process context, there is<br />     no path to the user space ass

2010-11-30 21:49:00 1134

原创 Overloading new & delete

1. Overloading global new & delete这种方式貌似不太建议使用。不论是built-in type 还是 class,都使用了新的new方法。不论是单个的obj,还是数组,也都用了新的new。如果找不到合适的空间,其实是需要 抛出异常的。 返回值 是个void*在这两个函数内,不能使用cin,cout。 因为cin,cout会调用new,这样会死锁。在new数组时,可以看到分配的空间多于实际空间。这个空间用来指示,有多少obj创建了。#include #include

2010-11-30 14:30:00 1067

转载 总结C++中三种关于”new”的使用方法

http://brightli.wordpress.com/2007/03/29/%E6%80%BB%E7%BB%93c%E4%B8%AD%E4%B8%89%E7%A7%8D%E5%85%B3%E4%BA%8Enew%E7%9A%84%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95/虽然有三种new的用法,但是分为两大类也未尝不可,那么是哪两类呢?其一是new operator,也叫new表达式;其二是operator new,也叫new操作符。这两个英文名称起的也太绝了,很

2010-11-29 15:08:00 1047

原创 Eclipse的一些快捷键

编辑java1. ctrl-o   显示当前文件中,类的方法,成员    再按一次ctrl-o,显示当前文件定义类的成员,包括继承的。2. alt-/  自动补全

2010-11-29 11:31:00 757

原创 文件异步读写

文件异步读写在应用程序侧,使用SIGIO的信号来处理。1. 设置接受SIGIO信号的函数。2. F_SETOWN3. FASYNC在驱动侧,需要fasync函数来处理。/* * ===================================================================================== * *       Filename:  async.c * *    Description:  this program test the

2010-11-26 10:28:00 1087

原创 一个 select函数的例子

<br />其实这个例子是从man 里面拷贝出来的。 稍加修改而已。<br /> <br />重要的一点是让我理解了这个函数的第一个参数一定要比想要询问的fd多1!<br />经过测试,select确实调用到了 file_operations 结构中的 poll。 这点和poll的机制是一样的。<br />/*<br /> * =====================================================================================<br

2010-11-25 21:52:00 889

原创 A poll() example

<br />这是一个简单的poll函数的例子。  用来检测/dev/scullpipe0设备是否可读。 <br /> <br />从console中可以看出,当调用了poll后,.poll函数被调用到了。<br /> <br />#include    <poll.h><br />#include    <stdio.h><br />#include    <fcntl.h><br /><br />int main()<br />{<br />    struct pollfd  fda

2010-11-25 15:14:00 1969

原创 Nonblock I/O 及其使用

<br />这是个很有趣的topic,而且这个东东影响到了kernel/driver和application之间的交互。<br /> <br />首先要来说下这个概念的东东。 当应用程序被block后,这个程序就进入了sleep状态。有可能会block的地方有:<br />1. open<br />2. read<br />3. write<br /> <br />一般情况下,文件的读写是阻塞的,可以通过fcntl()函数来设置为非阻塞读写。且这一点需要driver的配合。 <br />好,来看看一个实

2010-11-24 17:22:00 1734

原创 打印出 本次编译时的变量及其值

<br />有一天我突发奇想,也是实在没办法,不知道人家编译的时候干了什么。就像把人家用的某个变量打出来,而且我又不知道人家变量叫啥。悲剧!<br /> <br />我就干脆在网上找,有没有办法。 果然被我找到一个。下面这两个 <br />第一个打印出用户定义的变量。第二个是什么都打出来。 <br />其实主要是用了 .VARIABLES 变量  和 origin 函数。<br /> <br />.PHONY: printvars<br />printvars:<br />    @$(foreac

2010-11-23 14:29:00 1498

转载 Oops 消息的产生, 例子, 定位出错位置

oops消息的产生网上一分析oop流程的帖子, 留着以后看.http://blog.sina.com.cn/s/blog_3e4774e30100ooey.htmloops消息的例子1. 引用空指针 Unable to handle kernel NULL pointer dereference at virtual address 00000000

2010-11-23 11:55:00 5424

原创 使用seq_file,实现大文件的/proc file

<br />下面是个用seq_file实现大文件/proc file的例子。 重要的就是那几个迭代的函数。<br />值得一提的是,我这个例子在cat /proc/seq_test的时候 会显示出很多东西。也就是比我想象的要多。<br />后来我仔细的看了log,发现输出如下<br />Nov 21 15:44:14 wizard-desktop kernel: [ 9354.426472] scull: position is 0<br />Nov 21 15:44:14 wizard-desktop

2010-11-21 16:05:00 2586 1

原创 使用/proc 文件,只读的例子

<br />只用/proc文件是常用的调试方式,因为如果用很多的printk的话,对性能,及log显示都不是很好。<br />下面是一个简单的创建只读的proc文件的kernel module的例子。<br />例子中只是简单的输出了一句话,对于实际的项目可以打印不同的东西。<br /> <br />但是这个例子的缺点在于,使用proc文件读取时,只能读取一个page的大小?<br />/*<br /> * ================================================

2010-11-21 13:52:00 1625

原创 static 关键字的用法

1.用在函数内,在多次调用间,保持值不变void func() {    static int i = 0;    cout

2010-11-19 14:33:00 1283

原创 忘记了root密码后怎么办?

<br />忘记了root密码,就要进入single模式,用passwd root来修改了。<br /> <br />如果是用grub 那么就直接在选项的地方,选择对应的kernel。<br />如果是grub2,那么就要按住shift 让这个菜单显示出来。<br /> <br />找到对应的启动项, 按e。<br />找到类似这行,kernel /vmlinuz-2.4.18-0.4 ro root=/dev/hda2,再按e。<br />在文本行最后 加入 single,指定进入single模式。<br

2010-11-17 21:30:00 904

转载 解决version magic 不一致的问题

<br />http://tldp.org/LDP/lkmpg/2.6/html/x380.html<br />编译完一个kernel module后,如果安装这个module的机器运行的不是一致的kernel,会报<br />insmod: error inserting 'poet_atkm.ko': -1 Invalid module format<br /><br />仔细看一下/var/log/message 文件可以发现是说, version magic不一致。<br />Jun 4 22

2010-11-17 11:39:00 18401 2

原创 Example code for LDD3

作者的ftpftp://ar.linux.it/pub/ldd3/

2010-11-15 13:25:00 1211

原创 C++ constants

const是c++中比较常用的一个修饰符,下面按照const的作用来列出各种用法。1. Value Substitution这个作用就是代替了原来的#define const int a = 9;必须初始化写在头文件internal linkage, 即一般情况下在编译时就替换了,和用define一样,没有分配空间。但对于复杂的结构体,需要分配空间,但仍然是internal linkage, 在link的时候看不到的。2. 你知道这个值是不会变的,把它定义成常量一种是compile time 常量,即上面这

2010-11-12 17:47:00 1128

原创 MTD 设备学习的笔记

<br />不懂mtd设备,学习之。 <br /> <br />第一个找到的函数是init_mtdblock。调用了register_mtd_blktrans函数,传入参数是一个mtd_blktrans_ops类型的结构。<br />static struct mtd_blktrans_ops mtdblock_tr = {<br />    .name        = "mtdblock",<br />    .major        = 31,<br />    .part_bits  

2010-11-11 15:47:00 2742

原创 ARM condition code

大部分的arm指令可以条件执行,也就是可以根据状态寄存器中的值的情况条件执行。下面是condition code的列表Opcode[31:28]   Mnemonic extension    Meaning                          Condition flag state0000                    EQ                             Equal                                            

2010-11-09 11:16:00 2769

原创 ARM compressed/head.S 文件的分析

/* *  linux/arch/arm/boot/compressed/head.S * *  Copyright (C) 1996-2002 Russell King *  Copyright (C) 2004 Hyok S. Choi (MPU support) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Ge

2010-11-08 17:01:00 2510

原创 Arm结构下 kernel是如何编译出zImage的。

首先要感谢一下这个帖子,给了我一点启发。http://blog.csdn.net/pottichu/archive/2009/06/11/4261150.aspx后来又发现个国外的帖子http://book.opensourceproject.org.cn/embedded/embeddedprime/opensource/0136130550/ch05lev1sec1.html

2010-11-04 22:24:00 3218

原创 MMU for ARM

<br />下图摘自arm_arch<br /> <br /><br /> <br />这个高级的FCSE(Fast Context Switch Extension) 由CP15 Process ID Register c13来设置。<br />具体的用法不详。<br /> 

2010-11-03 11:30:00 1028

原创 Pointer to Const & const pointer

<br />这是c++语法中比较绕的一个概念,也是笔试面试中经常会考的知识点。 c++你为什么是c++啊?<br /> <br />下面的内容摘自 Thinking in C++ Chapter 8 Constants<br /> <br />Pointer to const<br /> <br />这有两种定义形式<br />const int* u;<br /> <br />Starting from the identifier, we read “u is a pointer, which poin

2010-11-02 14:08:00 2195

原创 c++是如何处理 对象 作为返回值 和 输入参数的 -- 拷贝构造

1. 唯一(?)安全的做法是要将返回值存放在一个register中,因为放在stack和全局都不安全。2. 对象所占用的空间是不能保存在一个register中的。所以现在的做法是,在函数参数中传入一个对象的指针,将对象的值存放在这个地方,最后返回的时候返回这个指针。

2010-11-02 10:43:00 2323

转载 这是什么高级的c++语法 const char* & NOT char* const &

<br />http://www.moon-soft.com/doc/42185.htm

2010-11-02 10:12:00 1067

原创 C++ Reference 引用用法

1. Free Standing Referenceint y;int& r = y;   定义一个引用的时候,必须初始化其值,否则编译器报错。或者 const int& q = 12;   其相应的规则1. A reference must be initialized when it is created. (Pointers   can be initialized at any time.)2. Once a reference is initialized to an object,

2010-11-01 21:56:00 8484

原创 ARM Addressing Modes

arm的寻址方式果然不同!ARM一共有五种不同的寻址模式,每个模式下面又有不同的子类• Addressing Mode 1 - Data-processing operands on page A5-2貌似加减乘除这几种运算用这种形式的比较多些。{}{S} , , where is one of the following:1. #2. 3. , LSL #4. , LSL 5. , LSR #6. , LSR 7. , ASR #8. , ASR 9. , ROR

2010-11-01 15:24:00 2646

原创 Arm 中 几个位移运算指令的比较

<br />http://simplemachines.it/doc/arm_inst.pdf<br />在arm结构中,支持几种位移运算<br />LSL       Logical shift left<br /> <br />LSR       Logical shift right<br />ASR       Arithmetic shift right<br /> <br />ROR       Rotate right<br />RRX       Rotate right with ex

2010-11-01 14:43:00 1565

原创 ARM instruction set

The ARM instruction set can be divided into six broad classes of instruction:Arm指令集分成了六大类• Branch instructions• Data-processing instructions on page A1-7• Status register transfer instructions on page A1-8• Load and store instructions on page A1-8•

2010-11-01 10:11:00 2316

原创 Arm Register

<br />ARM has 31 general-purpose 32-bit registers. At any one time, 16 of these registers are visible. The other<br />registers are used to speed up exception processing. All the register specifiers in ARM instructions can<br />address any of the 16 vi

2010-11-01 10:03:00 2113

intel ia32 programming guide

intel ia32 programming guide. for the reference for others.

2013-07-18

debug.hacks

debug.hacks 深入调试的技术和工具

2013-06-06

slide on dma

描述了硬件层面dma controller的位置。 以及dma与系统其他部件交互的详细过程。

2012-07-18

DOS6.0 image

This is the floppy boot disk of MSDOS6.0

2008-11-27

空空如也

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

TA关注的人

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