自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 资源 (1)
  • 收藏
  • 关注

转载 总线设备驱动框架程序

总线设备驱动框架程序  装载自:http://blog.csdn.net/sjwangjinbao/article/details/6077236这里总结下简单的总线设备驱动的框架程序。 0、建立文件夹busdevdrv1、总线     在文件夹内建立总线文件bus.c,代码如下。#include #include #include #i

2012-05-08 12:22:38 651

转载 linux字符设备按键驱动之防抖动

按键驱动程序抖动问题会造成多次中断发生,实则可能是一次按下或释放的操作。本驱动程序就是在按键驱动程序(中断方式)的基础之上,用定时器来去抖动。当一次按键按下的时候,可能产生多个脉冲,我们可以等到最后一个脉冲平稳时再真正地做按下或释放的处理。所以,在中断中我们可以不断修改定时器的值,当最后稳定下来,没有中断产生了,就会调用超时函数,再在超时函数里面判断按键状态,返回值给用户空间等。定时器

2012-05-03 00:14:32 3881 1

原创 Linux异常处理体系结构

韦东山书读后感1. 对异常概念的理解    异常就是可以打断CPU正常运行的事件,比如,外部中断、未定义的指令、软中断等。当这些异常发生时,就打断CPU的正常运行,跳到相应的异常处理程序去处理这些异常要求的一些操作。2.  Linux内核异常处理框架基于Linux-2.6.32,内核启动时early_trap_init(void)将异常向量表拷贝到0xffff0000的虚拟地址中去

2012-04-30 18:19:21 5077

转载 C语言内存管理(林锐博士的文章)

程序员们经常编写内存管理程序,往往提心吊胆。如果不想触雷,唯一的解决办法就是发现所有潜伏的地雷并且排除它们,躲是躲不了的。本章的内容比一般教科书的要深入得多,读者需细心阅读,做到真正地通晓内存管理。 7.1内存分配方式 内存分配方式有三种: (1)       从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。

2012-04-22 09:59:45 3068

原创 多态性

1、多态性是指发出同样的消息被不同类型的对象接收时导致完全不同的行为。多态的实现:函数重载  运算符重载 (静态,编译时的多态)   虚函数(动态:运行时的多态)联编(binding):是指计算机程序自身彼此关联的过程,联编工作在编译连接阶段完成的情况称为:静态联编;联编在程序运行阶段完成的情况称为:动态联编。2、运算符重载是对已有的运算符赋予多重含义,因C++中预定义的运算符

2012-04-22 09:11:05 1554

原创 继承与派生

1、继承:保持已有类的特性而构造新类的过程;派生:在已有类的基础上新增自己的特性而产生新类的过程。2、访问控制   a、公有继承public:基类的public和protected成员的访问属性在继承类中保持不变,但基类的private成员不可访问;派生类的成员可以直接访问基类的public和protected成员,但是不能访问基类的private成员;通过派生类的对象只能访问基类的pub

2012-04-21 23:02:26 6001

原创 类与对象

1、类的组合:一个类内嵌其他类的对象作为成员的情况,他们之间的关系是一种包含与被包含的关系。当创建一个类的对象时,如果这个类具有内嵌对象成员,那么这个内嵌对象将首先被自动创建,因此在创建对象时既要对本类的基本类型数据成员进行初始化,又要对内嵌对象成员进行初始化。组合类构造函数定义的一般形式为:类名::类名(形参表):内嵌对象1(形参表),内嵌对象2(形参表),......2、创建一个组合类

2012-04-21 09:56:06 1800

原创 函数

在函数未被调用时,函数的形参并不占有实际的内存空间,也没有实际的值。只有在函数被调用时才为形参分配储存单元,并将是实参与形参结合。1、值调用      值调用是指当发生函数调用时,给形参分配内存空间,并用实参来初始化形参,这一过程是单向传递过程,一旦形参获得了值便于实参脱离关系,此后无论形参发生了怎样的改变,都不会影响实参。2、引用调用    引用调用是一种特殊类型的变量,可被认为

2012-04-21 01:00:11 1636

原创 s3c2410_gpio_cfgpin与s3c2410_gpio_setpin函数

在arm的gpio字符设备驱动中主要由s3c2410_gpio_cfgpin与s3c2410_gpio_setpin函数来设置相应的寄存器值,下面我们来看着两个函数所实现的功能:void s3c2410_gpio_cfgpin(unsigned int pin, unsigned int function){ void __iomem *base = S3C24XX_GPIO_BA

2012-04-20 15:24:54 1117

原创 copy_to_user,copy_from_user,get_user和put_user函数实现

1、static inline unsigned long __must_check copy_to_user(void __user *to, const void *from, unsigned long n){ if (access_ok(VERIFY_WRITE, to, n))  n = __copy_to_user(to, from, n); return n;}

2012-04-19 01:04:02 1388

转载 linux2.6.32内核信号量的实现

首先看看信号量的相关数据结构:include/linux/semaphore.h>struct semaphore{    spinlock_t lock; #lock应该是这个信号量的自旋锁    unsigned intcount; #count表示的是这个信号量的计数器    struct list_head wait_list;#

2012-04-18 20:18:52 863

转载 linux内核宏定义

1. gcc的__attribute__编绎属性要了解Linux Kernel代码的分段信息,需要了解一下gcc的__attribute__的编绎属性,__attribute__主要用于改变所声明或定义的函数或数据的特性,它有很多子项,用于改变作用对象的特性。比如对函数,noline将禁止进行内联扩展、noreturn表示没有返回值、pure表明函数除返回值外,不会通过其它(如全局变量、指

2012-04-18 16:48:31 2210

转载 linux驱动程序调试常用方法

驱动程序开发的一个重大难点就是不易调试。本文目的就是介绍驱动开发中常用的几种直接和间接的调试手段,它们是:利用printk 查看OOP消息 利用strace 利用内核内置的hacking选项 利用ioctl方法 利用/proc 文件系统 使用kgdb 一、利用printk这是驱动开发中最朴实无华,同时也是最常用和有效的手段。scull驱动的main.c第338行如下,就是使用pri

2012-04-18 00:28:17 23087 7

原创 最简单的字符设备驱动程序

首先,先理清一下简单字符设备驱动程序的思路:(1)申请设备号      动态申请:int alloc_chrdev_region(dev_t *dev, unsigned baseminor, unsigned count,const char *name)      静态申请:int register_chrdev_region(dev_t from,  unsigned count

2012-04-17 19:10:01 1333

原创 Linux常用文件结构体

1、struct file结构体定义在include/linux/fs.h中定义。文件结构体代表一个打开的文件,系统中的每个打开的文件在内核空间都有一个关联的struct file。它由内核在打开文件时创建,并传递给在文件上进行操作的任何函数。在文件的所有实例都关闭后,内核释放这个数据结构。在内核创建和驱动源码中,struct file的指针通常被命名为file或filp。如下所示:  str

2012-04-16 22:51:46 769

原创 linux字符设备注册相关函数

本文介绍linux字符设备注册相关的四个函数:cdev_alloc、cdev_init、cdev_add和cdev_del。这四个函数在文件:fs/char_dev.c中定义,在头文件include/linux/cdev.h中声明。其中cdev_alloc和cdev_init是一对“互斥”函数,以不同的方式完成“相同”的功能:为函数cdev_add做前期准备。cdev_alloc509 s

2012-04-16 20:56:50 620

原创 linux下搭建unix编译环境

确保你已经安装了gcc和gawk。 步骤 1.到www.apuebook.com下载源码 2.tar解包,cd apue.2e 3.vi Make.defines.linux   修改变量WKDIR,指向你的apue源码的位置,我的是/home/huangz/code/apue.2e,所以  WKDIR=/home/huangz/code/apue.2e

2012-04-09 21:59:08 791

原创 Qtopia2.2.0应用程序桌面图标制作

Qtopia2.2.0的程序桌面制作主要有三点:1、制作一个mycalc.desktop字段(关键),内容大致如下:[Translation]File=QtopiaApplicationsContext=My Calculator[Desktop Entry]Comment[]=A Calculator ProgramExec=mycalc(可执行程序)Icon=m

2012-04-05 20:36:51 1167

原创 nfs挂载根文件系统free init memory之后的not respond

nfs: server 192.168.35.9 not respondingnfs: server 192.168.35.9 not respondingnfs: server 192.168.35.9 OK总是时一会连上,一会掉,这样反反复复。感觉时丢包引起。设置U-BOOT环境变量:bootargs=root=/dev/nfs nfsroot=192.168.35.9:/

2012-04-05 12:02:16 986

原创 ./configure 参数解析

Linux环境下的软件安装,并不是一件容易的事情;如果通过源代码编译后在安装,当然事情就更为复杂一些;现在安装各种软件的教程都非常普遍;但万变不离其中,对基础知识的扎实掌握,安装各种软件的问题就迎刃而解了。Configure脚本配置工具就是基础之一,它是autoconf的工具的基本应用。'configure'脚本有大量的命令行选项。对不同的软件包来说,这些选项可能会有变化,但是许多基本的选项是

2012-04-02 21:34:03 24348

原创 Fedora14下编译qtopia问题

主要用strrchr函数,从类型‘const char*’到类型‘char*’的转换无效,新版本g++不支持报错了。错误1:     backend/vobject.cpp: In function ‘VObject* addGroup(VObject*, const char*)’:     backend/vobject.cpp:419: error: invalid conv

2012-04-02 19:17:28 972

转载 printf可变参数实现

print.h[cpp] view plaincopyprint?#ifndef     __PRINT_H_  #define    __PRINT_H_    void    print(char* fmt, ...);  void    printch(char ch);  void    printdec(int dec);  void    printfl

2012-04-01 11:55:45 1904

转载 eclipse里报错

eclipse里报这个错误:Android requires compiler compliance level 5.0 or 6.0. Found '1.4' instead. Please fix project properties 1. 项目 右键 ->android tools ->Fix Project2. 如果不可以,检查Project -

2012-03-28 23:21:16 463

转载 Mars老师的Android学习基本路线

1.Java基础很多朋友一上手就开始学习Android,似乎太着急了一些。Android应用程序开发是以Java语言为基础的,所以没有扎实的Java基础知识,只是机械的照抄别人的代码,是没有任何意义的。那么Java学到什么程度才算是过关呢?我个人认为至少要掌握以下两个方面的内容:a) Java基础语法:具体的知识点列表可以在这里下载:《Java知识点列表》V1.0。这部分内容没有讨价还价的

2012-03-20 20:34:46 482

原创 android安装及卸载apk

1、 安装JDK不知道原因,你必须安装了JDK才能安装android模拟器下载地址:http://java.sun.com2、 下载SDK下载好了JDK,就可以下载SDK了,SDK的下载地址:http://developer.android.com/Android。下载完成后是一个压缩包。3、 建立你的android模拟器解压缩下载好的包,如果更新过SDk则在platf

2012-03-20 13:48:13 939

原创 textview cannot be resolved to a type 解决方法

今天刚开始看Android,也跟着写了个activity测试下,但却发生错误:"textview cannot be resolved to a type“在TextView myTextView=(TextView)this.findViewById(R.id.myTextView);Button myButton=(Button)this.findViewById(R.id.myBut

2012-03-18 09:33:11 7728 4

原创 ARM概述

一、前言:嵌入式系统: 是指以应用为中心,以计算机技术为基础,软件和硬件可以裁剪, 适应应用系统对功能的、可靠性、体积和功耗严格要求的专用计算机系统。        ARM技术的发展历程:第一片ARM处理器是在1983年10月到1985年4月位于英国剑桥的ACRON COMPUTER公司开发的。于1985年4月26日在ACRON公司进行了首批ARM样片测试并成功运行了测试程序。1990年11月

2012-03-14 11:03:38 729

转载 V4l2 v4l2_field理解

video的帧可区分为隔行和逐行: 逐行顺序的传输一帧所有的行,而隔行则把一帧划分成两个fields,分别保存帧的奇数行和偶数行,被称作奇场和偶场.  阴极射线电视机需要交替的显示两场来组成一个完整的帧,交替的时延需要我们交替的传输奇场和偶场。这个奇怪技术的引入是因为:在刷新率接近电影时,图片会消退的过快。使用奇偶场可以避免使用双倍的buffer以及额外的带宽需求。 首先要明确came

2012-03-12 20:44:02 532

原创 Linux系统下一些常见错误

1、原本的eth0变为eth1而导致连不上网,解决方法:删除/etc/udev/rules.d/70-persistent-net.rules里的内容,并重启系统,就会自动检测了生成相关网卡信息了。2、计算机自动改变了MAC地址而报错,解决方法:则根据提示将/etc/sysconfig/network-scripts/ifcfg-eth0,中的HWADDR=相应改过来就可以了。3、root

2012-03-12 20:42:47 545

转载 让sourceinsight支持查看makefile、kconfig以及.s代码方法

让sourceinsight支持查看makefile、kconfig以及.s代码方法       在用sourceinsight查看linux内核源码的时候,大家会发现不能查看源码中的makefile和kconfig代码,即不能搜索到makefile和kconfig文件。这是因为source insight默认是不选makefile的,也没有konfig这种类型的文件。下面就说如何让sourc

2012-03-12 20:41:43 1218

转载 设置使mini2440开机运行自编的qt图形界面程序

本机环境是qte的库文件在/mini2440下,qte应用程序在/home/plg目录下。如果想在开机后直接运行自己编的qt程序,而不想出现qt自带的那个界面只需把/etc/init.d/rcS中的/bin/qtopia & 注释掉#/bin/qtopia &并在下面加上/home/plg/run.sh  &          #添加一个执行脚本行,这个脚本因为在/etc/init.d

2012-03-12 20:39:13 987

glibc-2.8.tar.bz2

如果出现stropts.h找不到的情况,则下载glibc-2.8,解压缩 glibc-2.8.tar.bz2

2012-04-09

空空如也

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

TA关注的人

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