自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

360°回旋踢

andydung的博客

  • 博客(42)
  • 资源 (1)
  • 收藏
  • 关注

转载 Linux设备驱动的分层设计思想

1.1 设备驱动核心层和例化在面向对象的程序设计中,可以为某一类相似的事物定义一个基类,而具体的事物可以继承这个基类中的函数。如果对于继承的这个事物而言,其某函数的实现与基类一致,那它就可以直接继承基类的函数;相反,它可以重载之。这种面向对象的设计思想极大地提高了代码的可重用能力,是对现实世界事物间关系的一种良好呈现。Linux内核完全由C语言和汇编语言写成,但是却频繁用到了面向对象的设计思想。在设备驱动方面,往往为同类的设备设计了一个框架,而框架中的核心层则实现了该设备通用的一些功能。同样的,如果具体的设

2010-07-13 19:27:00 576

转载 platform设备驱动全透析

1.1 platform总线、设备与驱动在Linux 2.6的设备驱动模型中,关心总线、设备和驱动这3个实体,总线将设备和驱动绑定。在系统每注册一个设备的时候,会寻找与之匹配的驱动;相反的,在系统每注册一个驱动的时候,会寻找与之匹配的设备,而匹配由总线完成。一个现实的Linux设备和驱动通常都需要挂接在一种总线上,对于本身依附于PCI、USB、I2 C、SPI等的设备而言,这自然不是问题,但是在嵌入式系统里面,SoC系统中集成的独立的外设控制器、挂接在SoC内存空间的外设等确不依附于此类总线。基

2010-07-13 18:25:00 464

转载 Linux主机驱动与外设驱动分离思想

- by 宋宝华(Barry Song)1主机、外设驱动分离的意义在Linux设备驱动框架的设计中,除了有分层设计实现以外,还有分隔的思想。举一个简单的例子,假设我们要通过SPI总线访问某外设,在这个访问过程中,要通过操作CPU XXX上的SPI控制器的寄存器来达到访问SPI外设YYY的目的,最简单的方法是:return_type xxx_write_spi_yyy(...){xxx_write_spi_host_ctrl_reg(ctrl);xxx_ write_spi_host_data_reg(buf

2010-07-13 17:10:00 470

转载 Linux设备驱动程序学习

Linux设备驱动程序学习 前言:    接触ARM-Linux已经有9个多月了,经历了毕业设计和公司的练习设计,对ARM-Linux有了一定的了解,也让我爱上了ARM-Linux,决心以后从事Linux的工作。    8月份开始,我算是从头认认真真,一步一个脚印地学习ARM-Linux。先后对博创UP-NETARM2410-S和友善之臂SBC2440V4进行了系统移植,包括U-Boot1.2.0、Linux2.6.22.2,并针对3个网卡芯片进行了U-Boot和Linux的驱动移植,制作了一个cramfs

2010-07-13 13:12:00 776

转载 S3C24x0片内设备驱动编写时的时钟问题

<br />S3C24x0片内设备驱动编写时的时钟问题前天编写S3C24x0芯片的ADC驱动。其实很简单,参考别人的驱动,把以前的驱动模板改改就好了。可是写好后没使用成功。测来测去,最后发现对ADC的寄存器根本无法写入,只能读出。郁闷!!一开始以为是我用的赋值语句不对,参考我的驱动学习文档,试了一圈,问题依旧!郁闷了整整两天之后,在网上看到有人也遇到了2410的外设寄存器无法赋值的情况,最后发现是时钟问题。受此启发,我回想起了以前看的Linux的SPI驱动,里面有以下语句:<br />hw->clk = c

2010-07-13 13:06:00 444

原创 嵌入式linux启动信息完全注释(转)

<br />作为一名嵌入系统开发者,你一定遇到过下面的情景:<br />在某论坛上看到一篇帖子,上面贴着嵌入式linux开发板启动时的有关信息,然后大家在帖子里讨论着这个启动过程中出现的问题,随机举例如下:<br />Linux version 2.4.20-uc0 (root@Local) (gcc version 2.95.3 <br />20010315 (release)(ColdFire patches - 20010318 from http://f <br />(uClinux XIP and

2010-07-11 14:29:00 574

原创 Uboot技术文档链接

1、uboot 初始化循环体2、uboot浅析 - start_armboot3、uboot移植到an2410全记录

2010-07-11 10:51:00 494

转载 QT4向s3c2410平台移植

在这里就不着重讲解 QT的发展和里面细节的内容,针对嵌入式linux系统来说,使用一种GUI是很常见的,那么首先就涉及移植的问题,只有再移植好的情况下再开发自己的产品。当然这个步骤不是死的,但移植确实是要做的,还要做好,过程有的时候也不是很容易的。今天我就在s3c2410的平台上移植了QT4,然后把移植出现的问题记录了下来,仅仅做个参考。1.开发平台:ubuntu 81.0,交叉编译器版本3.4.

2010-05-06 13:05:00 834

转载 从零开始学习QT Creator(作者:developCpp)

1.从Hello World开始见很多新人问如何使用QT Creator 感觉还是抽点时间出来,写一个QT Creator使用帮助吧 首先下载,地址如下 http://get.qt.nokia.com/qtsdk/qt-sdk-win-opensource-2009.05.exe 安装很简单,直接默认,点下一步即可 安装好之后,打开QT Creator 新建工程 File => New

2010-05-06 12:52:00 1252 1

转载 Qt/Embedded嵌入式开发环境的建立

一.             开发环境(1)       Red Hat Linux 9(2)       Linux Kernel 2.6.14(3)       (Qt开发包)qt-x11-2.3.2.tar.gz (4)       (Qt/Embedded开发包)qt-embedded-2.3.10-free.tar.gz (5)       (自动创建Makefile文件的工具)tmak

2010-05-05 22:06:00 432

原创 搭建嵌入式QT4开发环境

一、PC环境:      Vmware7.0;      操作系统为:ubuntu9.10;      GCC版本为:4.4.1;      交叉工具链版本为:4.1.1。 二、安装交叉工具链:      QT4最好使用GCC4版本的工具链,这里提供4.1.1版本的交叉工具链,工具链包是:4.1.1_softfloat_withlib.tar.bz2。      将

2010-05-04 19:54:00 1258

原创 用DDD调试多进程

1、调试对象     查看当前调试对象:show follow-fork-mode      调试父进程: set follow-fork-mode parent     调试子进程: set follow-fork-mode child 2、调试模式     查看当前调试模式:show detach-on-fork     分离模式:set detach-on-for

2010-04-23 18:43:00 929

转载 使用DDD开发ARM Linux程序

使用DDD+GDB开发ARM Linux程序今天又取得了一些进展,赶快写下来以免自己忘记。自从Linux在我的板子上跑起来之后,我一直在想一个问题,怎么调试将来写的程序。其实我在Linux开发方面真得很外行,到了今天才知道GDB到底是 干什么用的,呵呵。我相信很多人从Bootloader调试开始一直都使用LED啊,printf这样的方法来调试。我做毕设时,就是在MTDBLOCK 里面划出一个USE

2010-04-23 17:01:00 751

转载 Endian的由来

一、引子  在各种计算机体系结构中,对于字节、字等的存储机制有所不同,因而引发了计算机通信领域中一个很重要的问题,即通信双方交流的信息单元(比特、字节、字、双字等等)应该以什么样的顺序进行传送。如果不达成一致的规则,通信双方将无法进行正确的编/译码从而导致通信失败。目前在各种体系的计算机中通常采用的字节存储机制主要有两种:big-edian和little-endian。本文简要描述这两种存储机制的

2010-04-23 11:41:00 370

转载 信号量(semaphore)入门

今天我来说说Linux/Unix下信号量使用的入门吧。信号量是什么?就是设置在内核当中用户解决资源冲突东东。举个简单的例子,一张凳子一个人已经坐了,第二个人就不能坐,但如果第二个人不知道这张凳子已经给人坐了,还坐上去,就会出现问题,所以如果我们约定凳子被占了就登记到一个本子上,每个人想坐这张凳子之前都先看看这个本子有没写下东西,就不会出现上述情况了。我说的这些,只要上过操作系统的同学都知道(除非经

2010-04-22 20:15:00 519

转载 linux进程通信-信号量使用

标题:Linux进程通信-使用信号量一、相关知识 信号量:一个整数;  大于或等于0时代表可供并发进程使用的资源实体数;  小于0时代表正在等待使用临界区的进程数;  用于互斥的信号量初始值应大于0;  只能通过P、V原语操作而改变; 信号量元素组成:  1、表示信号量元素的值;  2、最后操作信号量元素的进程ID  3、等待信号量元素值+1的进程数;  4、等待信号量元素值为0的进程数; 二

2010-04-22 19:48:00 439

转载 条件变量

1.初始化条件变量pthread_cond_init#include int pthread_cond_init(pthread_cond_t *cv,const pthread_condattr_t *cattr);返回值:函数成功返回0;任何其他返回值都表示错误初始化一个条件变量。当参数cattr为空指针时,函数创建的是一个缺省的条件变量。否则条件变量的属性将由cattr中的属性值来决定。调用

2010-04-22 09:10:00 593

转载 多进程与多线程的选择

作者:王姗姗,华清远见嵌入式学院讲师。 上周去参加答辩,内容是安防系统,然后就想到了我们如何来实现我们的程序,是选择进程还是线程。带着疑惑,查了些资料,总结如下: 1、首先要明确进程和线程的含义: 进程(Process)是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。与程序相比,程序只是一组指令的有序集合,它本身没有任何运行的含义,只是

2010-04-21 09:08:00 390

转载 线程解析(四)

作者:曹忠明,华清远见嵌入式学院讲师。一、线程控制上一节我们讲了使用互斥量实现线程的同步,这里我们介绍一下另外一种常用的方法,POSIX提供的无名信号量sem,PV原语是对整数计数器信号量sem的操作,P操作判断sem资源数是否为0,不为0则进行P操作,一次P操作可使sem减一,而一次V操作可使sem加一。下面是POSIX提供的一些接口函数:1、信号量初始化        #inclu

2010-04-21 09:06:00 458

转载 线程解析(三)

作者:曹忠明,华清远见嵌入式学院讲师。前面我们说了线程的创建和撤销,这里我们说一下线程间的同步的问题。当同一个进程中存在多个线程的时候,多个线程共享相同的内存,确保每个线程能够看到一致的数据视图,如果每个线程中都不会读取或修改共同享有的变量,就不会存在一致性的问题,同样如果共享变量时只读的也就不会存在这个问题。但是,当某个线程可一个修改变量,而其他的线程去读取或修改这个变量的时候,就需要进

2010-04-21 09:05:00 331

转载 线程解析(二)

上次说了如何去创建一个线程及如何向线程中传递一个参数那么这次我们说一下如何终止一个线程。如进程中调用exit,_exit使进程结束一样,线程也可以通过类似的方法结束。一、线程的执行体结束线程自然结束。二、可以通过调用pthread_exit使程序结束。pthread_exit 的原型为:      void pthread_exit(void *value_ptr);val

2010-04-21 08:57:00 361

转载 线程解析(一)

作者:曹忠明,华清远见嵌入式学院讲师。在使用线程之前我们要知道线程是个怎样的概念,它的作用是什么?在学多进程或多线程编程的时候,有这样一个概念----进程是资源管理的最小单位,线程是程序执行的最小单位,相对于进程,线程上下文切换花费的开销更少。因为线程共享了内存空间,不同线程可以访问同一个变量,即多有线程都可以访问已经声明了的全局变量。在多进程中这种情况需要使用IPC(进程间通信)对象实现

2010-04-21 08:54:00 346

转载 C语言回调函数学习

对指针的应用是C语言编程的精髓所在,而回调函数就是C语言里面对函数指针的高级应用。简而言之,回调函数是一个通过函数指针调用的函数。如果你把函数指针(函数的入口地址)传递给另一个函数,当这个函数指针被用来调用它所指向的函数时,我们就说这个函数是回调函数。为什么要使用回调函数呢?我们先看一个小例子:        Node * Search_List (Node * node, const int v

2010-04-20 22:29:00 451

转载 pthread_create()之前的属性设置

1.线程属性设置我们用pthread_create函数创建一个线程,在这个线程中,我们使用默认参数,即将该函数的第二个参数设为NULL。的确,对大多数程序来说,使用默认属性就够了,但我们还是有必要来了解一下线程的有关属性。属性结构为pthread_attr_t,它同样在头文件pthread.h中定义,属性值不能直接设置,须使用相关函数进行操作,初始化的函数为pthread_attr_init,这个

2010-04-20 22:19:00 577

转载 Pthread多线程

  POSIX thread 简称为pthread,Posix线程是一个POSIX标准线程.该标准定义内部API创建和操纵线程.  线程库实行了POSIX线程标准通常称为pthreads.pthreads是最常用的POSIX系统如Linux和Unix,而微软的Windowsimplementations同时存在.举例来说,pthreads-w32可支持MIDP的pthread  P

2010-04-20 21:14:00 472

转载 信号量sem_wait()的使用

闲来无事,我给大家讲下UNIX/Linux下信号量函数的使用。首先你得知道什么叫信号量,什么时候要用信号量。这个嘛,主要就是用来保护共享资源的,也就是说如果你想限制某个(些)资源在同一时刻只能有一(多)个线程拥有,就可以使用信号量。当然也可以用作让一个线程等待另一个线程完成某项工作。 用下面一组函数(系统调用)来实现。int sem_init(sem_t *sem,int

2010-04-20 18:31:00 4523 2

转载 printf输出字体颜色

有时候为了实现在终端输出的时候字体能够带颜色,并且可以产生简单的闪烁的功能,特写了下列的代码实现hello world的带颜色的输出,并且每过一秒产生一个闪烁的功能.(注:具体还得判断终端类型)CODE:#include#include#include#includeint flag = 0;void sig_int(int signum){        if (flag == 1) 

2010-04-08 20:15:00 1625

转载 哈希表

哈希表设计【问题描述】     研究哈希(HAXI)表查找技术的两个重要问题是:构造HAXI函数和处理冲突。现在要求针对某个数据集合中的关键字设计一个哈希表(选择合适的哈希函数和处理冲突的方法),完成HAXI表的建立、查找,并计算HAXI表查找成功的平均查找长度。HAXI函数的构造方法有多种,其中除留余数法是一种最简单和最常用的方法。考虑具体问题的关键字集合,如{19,14,23,1,

2010-04-05 16:38:00 550

转载 二叉树的基本运算实验

【问题描述】二叉树采用二叉链表作存储结构,编程实现二叉树的如下基本操作:1.  按先序序列构造一棵二叉链表表示的二叉树T;2.  对这棵二叉树进行遍历:先序、中序、后序以及层次遍历序列,分别输出结点的遍历序列;3.  求二叉树的深度/结点数目/叶结点数目;4.  将二叉树每个结点的左右子树交换位置。【数据描述】    //- - - - - - 二叉树的二叉链表存储表示

2010-04-05 16:25:00 537

转载 用GDB调试程序 - Ubuntu中文

用GDB调试程序<!-- If you want a menu, uncomment the following lines and put (require emacs-wiki-menu) in your Emacs setup somewhere. -->原文标题:用GDB调试程序作者:haoel (QQ是:753640,MSN是: haoe

2010-04-02 19:14:00 346

转载 Linux 开机过程概述

一、开机全过程  综述:  当用户打开PC的电源,1 BIOS开机自检,按BIOS中设置的启动设备(通常是硬盘)启动,2接着启动设备上安装的引导程序lilo或grub开始引导Linux,3 Linux首先进行内核的引导,4接下来执行init程序,init程序调用了rc.sysinit和rc等程序,rc.sysinit和rc当完成系统初始化和运

2010-03-29 17:09:00 314

转载 linux:vi 替换命令

vi/vim 中可以使用 :s 命令来替换字符串。以前只会使用一种格式来全文替换,今天发现该命令有很多种写法(vi 真是强大啊,还有很多需要学习),记录几种在此,方便以后查询。  :s/vivian/sky/ 替换当前行第一个 vivian 为 sky  :s/vivian/sky/g 替换当前行所有 vivian 为 sky      :n,$s/vivian/sky/ 替换第 n

2010-03-29 16:54:00 381

转载 Linux下常用压缩格式的压缩与解压方法

大致总结了一下linux下各种格式的压缩包的压缩、解压方法。但是部分方法我没有用到,也就不全,我将随时修改完善!.tar解包:tar xvf FileName.tar打包:tar cvf FileName.tar DirName(注:tar是打包,不是压缩!)---------------------------------------------.gz解压1:gunzip FileName.

2010-03-29 16:40:00 373

转载 Linux使用中文版man(shell的帮助手册)

有时候用man查看shell命令的用法时候由于本上里面的参数含义不懂,还要用非母语看,理解起来非常吃力。那么干脆用中文版的man吧:1、安装man中文包sudo apt-get install manpages-zh2、备份man配置文件(要养成良好的习惯,特别经常做小白鼠的人,做此步骤是方便修复)sudo cp /etc/manpath.config /etc/manpath.config.ba

2010-03-29 13:57:00 598

转载 linux 下挂载windows分区汉字乱码

linux 下挂载windows分区汉字乱码解决:mount /dev/hda* /mnt -o iocharset=utf8(手动挂载) vi /etc/fstab (自动挂载)或者加入/etc/profile 如下: /dev/hda5 /mnt/D  vfat defaults,iocharset=utf8  0 0/dev/hda6 /mnt/E  ntfs defaults,ioch

2010-03-29 13:47:00 535

原创 一个免费电子书下载网

http://www.ibook8.com/

2010-03-28 17:46:00 476

转载 链表

from:http://public.whut.edu.cn/comptsci/web/data/512.htm 链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。    由于链

2010-03-28 11:06:00 315

转载 声明指针需要注意的一些东西

from:http://hi.baidu.com/xxwpk007/blog/item/74543e4af33da12608f7ef72.html  1.声明指针时,最常见的错误就是,指针未初始化就使用指针.看下面这个程序:                         #include                          int main(void)     

2010-03-27 19:09:00 417

转载 局域网内Ubuntu与WinXP共享文档

from:http://hi.baidu.com/chaolong124/blog/item/f25d4efa89b84915a8d311c3.html 从新立得软件包管理器中安装Samba和Smbfs。Samba是在Unix系统中用于共享文件和打印机的应用软件。Smbfs is a filesystem which understands the SMB/CIFS protocol. T

2010-03-27 19:03:00 365

转载 在WinXP下虚拟Ubuntu,在ubuntu下访问win的共享文件夹的方法

from:http://student.csdn.net/space.php?uid=105001&do=blog&id=10311 基本步骤:(xp 为 Windows 7, Ubuntu为 guest)在WinXP下虚拟Ubuntu,在ubuntu下访问win的共享文件夹的方法:0,在虚拟机选项中添加共享的文件夹1,若要使用共享文件夹功能,必须安装linux guest add

2010-03-27 18:59:00 506

c语言深度解剖-解开程序员面试笔试的秘密

解开程序员面试笔试的秘密! 以含金量挑战国内外同类书籍!

2010-05-12

空空如也

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

TA关注的人

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