自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

hustyangju的足迹

Stay Hungry,Stay Foolish

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

原创 QT信号(signal)和槽(slot)应注意的问题

信号与槽机制是比较灵活的,但有些局限性我们必须了解,这样在实际的使用过程中做到有的放矢,避免产生一些错误。下面就介绍一下这方面的情况。1.信号与槽的效率是非常高的,但是同真正的回调函数比较起来,由于增加了灵活性,因此在速度上还是有所损失。当然这种损失相对来说是比较小的,通过在一台i586-133的机器上测试是10微秒(运行Linux),可见这种机制所提供的简洁性、灵活性还是值得的。但如

2014-03-27 11:18:29 5583 1

原创 程序启动画面QSplashScreen类

当程序的初始化工作比较多,程序可能启动较长时间后,窗口才会显示出来,用户没准会抱怨程序响应的慢。为了改善用户体验,最好在程序初始化这段时间显示logo,或者其他信息提示用户程序已启动。QT提供了QSplashScreen 类,其使用方法比较简单,下面的例子就是,当程序运行到 splash. show();时,logo.gif就会显示出来,当dialog的初始化完成,运行到 splash. fi

2014-03-24 09:57:12 9241

原创 Linux数据类型大小--->int,char,long int,long long int

在Linux操作系统下使用GCC进行编程,目前一般的处理器为32位字宽,下面是/usr/include/limit.h文件对Linux下数据类型的限制及存储字节大小的说明。  /* We don't have #include_next.   Define ANSI for standard 32-bit words.  */    /* These assume 8-bit 'char

2014-03-20 18:30:58 4570

原创 S3C6410 SPI全双工读写流程分析(原创)

原创博文,知识共享!转载请注明出处:S3C6410 SPI全双工读写流程分析一、SPI控制器datasheet1详细请参考:http://blog.csdn.net/hustyangju/article/details/204746592 SPI的所有寄存器都是映射到内核空间的,采用基地址+偏移地址的方式访问static volatile void  __iomem *

2014-03-13 13:04:47 7375 1

原创 linux驱动调试之printk()

对于做嵌入式或者熟悉linux内核的人来说,对printk这个函数一定不会感到陌生。printk相当于printf的孪生姐妹,她们一个运行在用户态,另一个则在内核态被人们所熟知。  printk是在内核中运行的向控制台输出显示的函数,Linux内核首先在内核空间分配一个静态缓冲区,作为显示用的空间,然后调用sprintf,格式化显示字符串,最后调用tty_write向终端进行信息的显示

2014-03-12 11:16:44 1794

原创 class_create(),device_create(),device_create_file()

开始写Linux设备驱动程序的时候,很多时候都是利用mknod命令手动创建设备节点(包括ldd3中不少例子也是这样),实际上现在Linux内核为我们提供了一组函数,可以用来在模块加载的时候自动在/dev目录下创建相应设备节点,并在卸载模块时删除该节点。内核中定义了struct class结构体,顾名思义,一个struct class结构体类型变量对应一个类,内核同时提供了class_creat

2014-03-11 16:01:05 3616

原创 linux驱动的类class及其节点

一个类是一个设备的高级视图, 它抽象出低级的实现细节. 驱动可以见到一个SCSI 磁盘或者一个 ATA 磁盘, 在类的级别, 它们都是磁盘. 类允许用户空间基于它们做什么来使用设备, 而不是它们如何被连接或者它们如何工作.    几乎所有的类都在 sysfs 中在 /sys/class 下出现. 因此, 例如, 所有的网络接口可在 /sys/class/net 下发现, 不管接口类型. 输入设

2014-03-11 15:28:15 3865

原创 Linux 设备驱动poll轮询编程

Linux系统下网络模型数select最为常用,当然,select只是检测文件系统数据状态,并不只局限于网络编程,select的功能需要底层驱动提供支持,其中核心应用即为等待队列,其他模型,如poll和epoll,对驱动来说并无区别,驱动只是返回数据状态而已。驱动支持select,需要实现file_operations结构中的poll函数指针,其实现也非常简单,只是poll_wait函数的调用,原

2014-03-11 14:54:11 2682

原创 linux中断处理下文: 工作队列分析

工作队列(work queue)是另外一种将工作推后执行的形式,它和前面讨论的tasklet有所不同。工作队列可以把工作推后,交由一个内核线程去执行,也就是说,这个下半部分可以在进程上下文中执行。这样,通过工作队列执行的代码能占尽进程上下文的所有优势。最重要的就是工作队列允许被重新调度甚至是睡眠。那么,什么情况下使用工作队列,什么情况下使用tasklet。如果推后执行的任务需要睡眠,那么就

2014-03-10 15:40:54 1567

原创 嵌入式linux驱动开发环境搭建(亲测成功)

一开发环境:(1)主机:vmware8+fedora14,内核版本为2.6.35,主机自带GCC版本4.5。(这两点很重要,所有的问题都与这两个因素有关)。(2)目标机:S3C6410(arm11)(3)目标机内核:linux2.6.24(4)交叉编译工具:arm-linux-gcc-4.2.2二搭建交叉编译环境:首先搭建PC上的编译环境,因为编译的驱动是在板子上运行的,第

2014-03-07 18:06:13 3664

原创 linux等待队列

Linux内核的等待队列是以双循环链表为基础数据结构,与进程调度机制紧密结合,能够用于实现核心的异步事件通知机制。在Linux2.4.21中,等待队列在源代码树include/linux/wait.h中,这是一个通过list_head连接的典型双循环链表,如下图所示。在这个链表中,有两种数据结构:等待队列头(wait_queue_head_t)和等待队列项(wait_queue_t)。

2014-03-07 13:54:59 2758

原创 预定义宏__LINE__,__FILE__解析

#line指令改变_ _ _LINE_ _ _和_ _ _FILE_ _ _的内容。_ _ _LINE_ _ _和_ _ _FILE_ _ _都是编译程序中预定义的标识符。标识符_ _ _LINE_ _ _的内容是当前被编译代码行的行号,_ _ _FILE_ _ _的内容是当前被编译源文件的文件名。#line的一般形式是:    #line   number"filename"其中,num

2014-03-05 10:56:13 1263

原创 S3C6410的SPI控制器

1.      SPI控制器1.1   概述SPI总线是一种全双工串行同步通讯协议,SPI(Serial Peripheral Interface)串行外围接口能够支持串行数据传输,其包含两个独立的8/16/32位移位寄存器分别用于发送和接收。在SPI传输期间,数据同步发送(串行移出)和接收在(串行移入)。 1.2   SPI控制器支持下面的特征1)    

2014-03-04 17:34:10 2581

原创 Linux内核中ioremap映射的透彻理解

几乎每一种外设都是通过读写设备上的寄存器来进行的,通常包括控制寄存器、状态寄存器和数据寄存器三大类,外设的寄存器通常被连续地编址。根据CPU体系结构的不同,CPU对IO端口的编址方式有两种:  (1)I/O映射方式(I/O-mapped)  典型地,如X86处理器为外设专门实现了一个单独的地址空间,称为"I/O地址空间"或者"I/O端口空间",CPU通过专门的I/O指令(如

2014-03-04 16:01:00 9090 1

原创 linux内核SPI总线驱动分析

下面有两个大的模块:一个是SPI总线驱动的分析            (研究了具体实现的过程)另一个是SPI总线驱动的编写(不用研究具体的实现过程)SPI总线驱动分析1 SPI概述      SPI是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口,是Motorola首先在其MC68HC

2014-03-04 13:37:04 2106

原创 DMA读写

一 DMA操作1 DMA定义DMA是直接内存访问 Direct Memory Access(存储器直接访问)。这是指一种高速的数据传输操作,允许在外部设备和存储器之间直接读写数据,既不通过CPU,也不需要CPU干预。整个数据传输操作在一个称为"DMA控制器"的控制下进行的。CPU除了在数据传输开始和结束时做一点处理外,在传输过程中CPU可以进行其他的工作。这样,在大部分时间里,CPU和

2014-03-04 11:14:02 7425

原创 readb(), readw(), readl(),writeb(), writew(), writel() 宏函数

readb(), readw(), readl()函数功能:从内存映射的 I/O 空间读取数据。readb  从 I/O 读取 8 位数据 ( 1 字节 );readw 从 I/O 读取 16 位数据 ( 2 字节 );readl 从 I/O 读取 32 位数据 ( 4 字节 )。原型:#include unsigned char readb (unsign

2014-03-04 10:44:35 18170

原创 ARM-Linux驱动相关头文件知识点

#include 在linux-2.6.31/include/linux下面寻找源文件#include 在linux-2.6.31/arch/arm/include/asm下面寻找源文件#include 在linux-2.6.31/arch/arm/mach-s3c2410/include/mach下面寻找源文件#include 在linux-2.6.31/arch/arm/p

2014-03-03 14:25:55 1570

qt signal-slot测试代码

signal-slot机制是QT的核心,也是QT解决线程之间通信的一大亮点。深刻理解其两大特性: (1)loosely coupled sender 与 receiver 互不关心,一个signal可以被多个slot获取,signal可以触发另一个signal (2)type-safe connect连接时,遵守严格的参数约定,slot参数必须与signal参数保持一致,slot参数数量可以少于signal qt signal-slot测试代码

2013-12-27

空空如也

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

TA关注的人

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