- 博客(77)
- 资源 (1)
- 收藏
- 关注
转载 浅谈C# 多态的魅力(虚方法,抽象,接口实现)
前言:我们都知道面向对象的三大特性:封装,继承,多态。封装和继承对于初学者而言比较好理解,但要理解多态,尤其是深入理解,初学者往往存在有很多困惑,为什么这样就可以?有时候感觉很不可思议,由此,面向对象的魅力体现了出来,那就是多态,多态用的好,可以提高程序的扩展性。常用的设计模式,比如简单工厂设计模式,核心就是多态。其实多态就是:允许将子类类型的指针赋值给父类类型的指针。也就是同一操作作用于不同
2013-07-20 09:59:22
228
转载 c#中volatile关键字的作用(zz)
原博文地址:http://www.cnblogs.com/end/archive/2010/06/07/1753184.html 恐怕比较一下volatile和synchronized的不同是最容易解释清楚的。volatile是变 量修饰符,而synchronized则作用于一段代码或方法;看如下三句get代码: int i1; int geti1() {
2013-06-20 10:48:04
232
转载 c#中volatile关键字的作用(zz)
原博文网址:http://www.cnblogs.com/end/archive/2010/06/07/1753184.html恐怕比较一下volatile和synchronized的不同是最容易解释清楚的。volatile是变 量修饰符,而synchronized则作用于一段代码或方法;看如下三句get代码:int i1; int geti1() {re
2013-06-20 10:44:42
119
转载 数组指针和指针数组的区别
数组指针和指针数组的区别数组指针(也称行指针)定义 int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。如要将二维数组赋给一指针,应这样赋值:int a[3][4];int (*p)[4]; //该语句是定义一个数组指针,指向含4个元
2013-06-03 10:08:09
180
转载 C语言中字符数组和字符串指针分析
这几天搞Unix上的C程序,里面用到了很多字符数组和字符串指针,我记得在学完C语言后相当一段时间里,对指针这个东西还是模模糊糊,后来工作也没怎么用到过C,虽然网上这类的文章也有很多,还是决定自己在这做个小总结,也算加深下自己的印象,写了下面的测试程序:int main(int argc, char *argv[]){ char day[15] = "abcdefghijklm
2013-06-01 20:50:18
151
转载 protel 99 se 中的“root has been deleted”问题
1.打开PROTEL 99 SE后先不要开DDB文件,看左上角有一个向下的箭头,按鼠标左键点击一下,选择DESIGN UTILITIES......2.在出现的对话筐中选择REPAIR,再点击BROWSE......,然后选择你打不开的DDB文件,看是否可以修复吧,一般情况下是可以的。除非文件已经被删掉。 上面的是一种常规方法。如果你是新建也会出错,那就是因为win的升级造成部
2013-04-26 10:24:49
596
转载 ATMEL9260 LED driver 的用法
Linux 下驱动GPIO 其实不用自己写,最近项目要用到开发板上的GPIO,搜索了一番,发现linux 下实现GPIO 驱动实在是太方便了,有现成的framework 可用,基本上要做的事情就是定义一下Linux 下通过框架实现LED 大致过程如下1、实现框架要求的几个函数int gpio_request(unsigned gpio, const char *label)void
2013-04-16 14:44:18
194
转载 c语言链表解析
编程思想: 链表由一系列不必在内存中相连的结构组成。每一个结构均含有表元素和指向包含该元素后继元的结构指针。我们称之为next指针。最后一个单元的next指针指向NULL;该值由C定义并且不能与其它指针混淆。ANSI C规定NULL为零。 指针变量是包含存储另外某个数据的地址的变量。因此,如果P被声明为指向一个结构的指针,那么存储在P中的值就被解释为内存中的
2013-01-02 19:48:56
188
转载 Linux定时器的使用
使用定时器的目的无非是为了周期性的执行某一任务,或者是到了一个指定时间去执行某一个任务。要达到这一目的,一般有两个常见的比较有效的方法。一个是用linux内部的三个定时器,另一个是用sleep, usleep函数让进程睡眠一段时间,使用alarm定时发出一个信号,还有那就是用gettimeofday, difftime等自己来计算时间间隔,然后时间到了就执行某一任务,但是这种方法效率低,所以不常用
2012-12-26 15:33:24
236
转载 Linux定时器的使用
使用定时器的目的无非是为了周期性的执行某一任务,或者是到了一个指定时间去执行某一个任务。要达到这一目的,一般有两个常见的比较有效的方法。一个是用linux内部的三个定时器,另一个是用sleep, usleep函数让进程睡眠一段时间,使用alarm定时发出一个信号,还有那就是用gettimeofday, difftime等自己来计算时间间隔,然后时间到了就执行某一任务,但是这种方法效率低,所以不常用
2012-12-26 15:27:24
94
转载 Linux定时器的使用
使用定时器的目的无非是为了周期性的执行某一任务,或者是到了一个指定时间去执行某一个任务。要达到这一目的,一般有两个常见的比较有效的方法。一个是用linux内部的三个定时器,另一个是用sleep, usleep函数让进程睡眠一段时间,使用alarm定时发出一个信号,还有那就是用gettimeofday, difftime等自己来计算时间间隔,然后时间到了就执行某一任务,但是这种方法效率低,所以不常用
2012-12-26 15:25:36
91
转载 arm linux下的定时器精准问题
arm linux平台下做一个发送视频帧的程序,要求比较精确的控制发送速 度为30fps。 在PC的linux下,用usleep或者nanosleep可以控制得很精准,但是在 arm下 usleep就不准确,最后要偏差10%左右,而且不稳定。用setitimer+signal也有类 似问题,比如50ms得到的频率不是20,是16.67. 40得到不是25,是20,等等这样。
2012-12-26 15:22:58
256
转载 Linux应用程序中的定时器
Linux操作系统为每一个进程提供了3个内部计时器。ITIMER_REAL;ITIMER_VIRTUAL;ITIMER_PROF.ITIMER_REAL:给定一个指定的时间间隔,按照实际的时间来减少这个计数,当时间间隔为0的时候发出SIGALRM信号。ITIMER_VIRTUAL:给定一个时间间隔,当进程执行的时候才减少计数,时间间隔为0的时候发出SIGVTALRM信号。ITIME
2012-12-26 14:48:45
180
转载 linux应用程序中定时器的实现
最近看了下应用程序定时器的实现方法,与大家分享如下:/*我们在使用signal和时钟相关的结构体之前,需要包含这两个头文件*/ #include #include /*声明信号处理函数,信号相关内容将在第八章同步机制中讲述,读者在这里只要明白这个函数是在进程收到信号的时候调用就可以了*/ static void sig_handler(int signo);
2012-12-26 14:47:10
187
转载 AT91RM9200管理PA,PB,PC,PD四个PIO
AT91RM9200管理PA,PB,PC,PD四个PIO,每个PIO都可以被设置工作在GPIO或者外设I/O状态下,但是要注意,要使能某个引脚的GPIO功能时,不能和该引脚的外设I/O功能发生冲突,只能使其工作在一个特定的状态下。(PD只有在256脚的BGA封装中才有)1。配置PIO工作在GPIO模式 以PB0为例,如果要使其工作在GPIO模式,则首先要使能PIO控制器,设置:
2012-12-23 18:35:59
240
转载 qt 编译c文件,extern “c”
以前使用C++的时候,好像没用到别的C文件,今天编译一个QT程序,需要用到之前的一个C文件,就改了pro文件把C源码添加进去,可是编译半天都报错,就是函数找不到,类似于:main.cpp:(.text+0xab0): undefined reference to `xxxxx()'原来,这是C/C++兼容问题,在C的头文件添加extern "C"即可解决,例如:#ifndef _C
2012-12-23 13:13:37
204
转载 自动加载驱动模块
假设你的设备驱动程序为:yourdrivername.ko 1 cp yourdrivername.ko /lib/modules/"version"/kernel/drivers/misc 其中,version为linux的版本,默认为:2.6.23.1-42.fc8 2 编辑/lib/modules/"version"/modules.dep,设置驱动程序之间的关
2012-12-19 22:42:09
195
转载 嵌入式Linux多通道数据采集方案
使用英利工控主板进行简单的扩展,可以构成一个多通道AD数据采集方案。这一方案的原理是通过英利工控主板的精简ISA总线扩展一片TLC2543,,即可以实现8路模拟量输入。其中输入量程0-5V,AD转换精度12bit,AD转换速度100Ksps。 硬件部分 该方案的主要硬件构成如下: 其中TLC2543通过4线制SPI接口与英利工控主板连接
2012-12-19 14:27:39
356
转载 ARM-Linux驱动--ADC驱动(中断方式)
硬件平台:FL2440内核版本:2.6.28主机平台:Ubuntu 11.04内核版本:2.6.39原创作品,转载请标明出处:http://blog.youkuaiyun.com/yming0221/archive/2011/06/26/6568937.aspx 这个驱动写了好久,因为原来的Linux内核编译的时候将触摸屏驱动编译进内核了,而触摸屏驱动里的ADC中断在注册的时候类型选择
2012-12-14 20:25:30
175
转载 ARM-Linux驱动--ADC驱动(中断方式)
硬件平台:FL2440内核版本:2.6.28主机平台:Ubuntu 11.04内核版本:2.6.39原创作品,转载请标明出处:http://blog.youkuaiyun.com/yming0221/archive/2011/06/26/6568937.aspx 这个驱动写了好久,因为原来的Linux内核编译的时候将触摸屏驱动编译进内核了,而触摸屏驱动里的ADC中断在注册的时候类型选择
2012-12-14 20:22:54
193
转载 Linux多线程同步机制
一、互斥锁尽管在Posix Thread中同样可以使用IPC的信号量机制来实现互斥锁mutex功能,但显然semphore的功能过于强大了,在Posix Thread中定义了另外一套专门用于线程同步的mutex函数。1. 创建和销毁 有两种方法创建互斥锁,静态方式和动态方式。 POSIX定义了一个宏PTHREAD_MUTEX_INITIALIZER来静态初始化互斥锁,方法如
2012-11-29 13:43:33
171
转载 linux程序设计---多线程
/*在编译多线程程序的时候,要加上-lpthread选项,指定pthread库。在程序代码中包含线程头文件pthread.h。*/1,创建一个线程。 int pthread_create(pthread_t *pthread_id,const pthread_attr_t *attr,void *(*start_rtn)(void *),void *arg); pthread_
2012-11-28 15:41:03
145
转载 Linux操作系统下串口编程入门教程
简介: Linux操作系统从一开始就对串行口提供了很好的支持,本文就Linux下的串行口通讯编程进行简单的介绍。 串口简介 串行口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使用。常用的串口是RS-232-C接口(又称EIA RS-232-C)它是在1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共
2012-11-23 12:10:27
138
转载 信号量学习笔记
对于linux的程序员来说,信号量是一个不能回避的问题。下面我简要地介绍下信号量在不同状态下的使用。一,内核态l 就是写驱动程序时遇到的信号量。1. 定义信号量struct semaphore sem;2. 初始化信号量void sema_init(struct semaphore *sem,int val); val
2012-11-23 11:57:07
151
转载 Linux进程间通信之信号量
Linux进程间通信包括管道、消息队列、System V等等,其中System V包括三种:信号量、消息队列、共享内存,这里只简单介绍信号量机制。在Linux编程中,要运用信号量实现互斥操作,用户空间需要调用几个系统调用,如下是一个用户空间例子。#include #include #include #include #define SEMKEY 1234L#def
2012-11-23 11:56:13
173
转载 进程上下文与中断上下文
上下文context:上下文简单说来就是一个环境,相对于进程而言,就是进程执行时的环境。具体来说就是各个变量和数据,包括所有的寄存器变量、进程打开的文件、内存信息等。 一个进程的上下文可以分为三个部分:用户级上下文、寄存器上下文以及系统级上下文。 用户级上下文: 正文、数据、用户堆栈以及共享存储区; 寄存器上下文: 通用寄存器、程序寄存器(IP)、处
2012-11-16 14:24:40
175
转载 异步通知fasync
linux设备驱动归纳总结(三):7.异步通知fasyncxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx异步通知fasync是应用于系统调用signal和sigaction函数,下面我会使用signal函数。简单的说,signal函数就是让一个信
2012-11-14 21:31:53
159
转载 signal_pending(current)用法
signal_pending(current)检查当前进程是否有信号处理,返回不为0表示有信号需要处理。返回 -ERESTARTSYS 表示信号函数处理完毕后重新执行信号函数前的某个系统调用。也就是说,如果信号函数前有发生系统调用,在调度信号处理函数之前,内核会检查系统调用的返回值,看看是不是因为这个信号而中断了系统调用.如果返回值-ERESTARTSYS,并且当前调度的信号具备-ER
2012-11-13 15:02:47
162
转载 Linux 关中断 与 开中断
如果你要禁止所有的中断该怎么办? 在2.6内核中,可以通过下面两个函数中的其中任何一个关闭当前处理器上的所有中断处理,这两个函数定义在 中: void local_irq_save(unsigned long flags); void local_irq_disable(void); 对 local_irq_save的调用将把当前中断状态保存到flags中,然后禁用当
2012-11-13 14:47:27
241
转载 ARRAY_SIZE含义
在写驱动时,看到ARRAY_SIZE这个宏,是求设备结构体中设备的个数。追其实现,在linux/kernel.h中,发现#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr)) 其中__must_be_array(arr))作用:宏定义防止被误用,比如用在指针而不是数组上。
2012-11-12 12:37:08
192
转载 spin_lock & mutex_lock的区别?
本文由该问题引入到内核锁的讨论,归纳如下为什么需要内核锁?多核处理器下,会存在多个进程处于内核态的情况,而在内核态下,进程是可以访问所有内核数据的,因此要对共享数据进行保护,即互斥处理有哪些内核锁机制?(1)原子操作atomic_t数据类型,atomic_inc(atomic_t *v)将v加1原子操作比普通操作效率要低,因此必要时才使用,且不能与普通操作混
2012-11-11 22:02:28
199
转载 mod_timer 定时器
内核通过函数mod_timer来实现已经激活的定时器超时时间:mod_timer(&my_timer, jiffies+new_delay);mod_timer函数也可以操作那些已经初始化,但还没有被激活的定时器,如果定时器没有激活,mod_timer会激活它。如果调用时定时器未被激活,该函数返回0,否则返回1。一旦从mod_timer函数返回,定时器都将被激活而且设置了新的定时值。
2012-11-11 19:28:54
1460
转载 TQ2440 GPIO模拟SPI读取AD转换器TLC2543芯片
转自:http://blog.youkuaiyun.com/striker211/article/details/7432685其实接触优快云好久了,一直没有想写自己的博客,遇到问题的时候才去上优快云参考别人的资料,想到以后不能脚踩西瓜皮,滑倒哪里是哪里,要一个萝卜一个坑,用优快云博客记录下自己的每一个脚印,一来自己以后可以回过来温故知新,二来很高兴为后来人做一个可参考的基石。毕设了,打算用
2012-11-09 14:28:23
284
转载 tlc2543 多通道选择 错误
我用TLC2543多通道AD测量时,数据出错,如A,B,C三个通道,单独测量正确分。但三个数据同时测量时候就出现错误,A的数据为B口数据,B口数据为C口数据,C口数据为A口数据,值都是正确的 这是怎么回事儿啊。调用语句: int tem,tem1,tem2;printk("tong dao 0 \n"); tem=read2543(0x00);
2012-11-09 14:21:21
260
转载 s3c2410_adc中断方式实现
s3c2410_adc中断方式实现 /** HLG442-S3C2410-ADC_DRV * /26/03/2008 AUTHOR "machuanlong"*/#include #include #include #include #include #include #include #include #include #i
2012-11-09 14:16:15
163
转载 S3C2410板集ADC的驱动查寻式
1.查寻式的#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #inclu
2012-11-09 14:15:34
167
转载 s3c2440的AD驱动(查询方式)
驱动:/* * s3c2440_adc.h * /#ifndef _S3C2440_ADC_H_#define _S3C2440_ADC_H_#include #define START_ADC(ch, prescale) S3C2410_ADCCON_PRSCEN | S3C2410_ADCCON_PRSCVL(prescale) \
2012-11-09 14:13:37
140
转载 s3c2440的AD驱动(中断方式)
/* * s3c2440_adc.h */ #ifndef _S3C2440_ADC_H_#define _S3C2440_ADC_H_#include #define START_ADC(ch, prescale) S3C2410_ADCCON_PRSCEN | S3C2410_ADCCON_PRSCVL(prescale) \
2012-11-09 14:12:05
173
转载 at91sam9260之LED驱动程序
/*******************************************/#include #include #include #include #include #include #include #include #include #include #include #include #include #include
2012-11-09 14:03:28
195
转载 2410自带ad
2410自带了8个ad通道,10bit,500ksps。在网上查了资料,很少有人用它做ad转换的,原因是精度不高。不过对于一些要求不是很高的地方,还是值得一用。在/kernel/drivers/char中已经有了ad不完整的驱动,基本框架搭好了,只要加上文件系统那部分就可以直接使用了。使用时一定要在Vref上加上电压,否则ad就不工作了。现在就把驱动和应用程序贴出来,供大家参考学习。应用程
2012-11-09 13:47:31
157
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人