自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 资源 (10)
  • 收藏
  • 关注

转载 S3C24XX体系的Linux GPIO控制相关API实现

GPIO(General Purpose Input/Output的缩写)就是芯片的引脚,引脚是可编程的可对引脚的工作模式进行设置:输入模式(检测输入信号),输出模式(输出0或1),高阻状态(常用于AD转换),还有禁止或允许上内部下拉电阻(上拉:管脚通过电阻接高电平,下拉:管脚通过电阻接地,也可以外部接上拉或下拉电阻),还有管脚复用等功能,即通过对内部寄存器的设置使引脚既可以工作在一般模式,作为普

2010-05-19 19:43:00 1701

原创 ARM Linux驱动的编译(2.6内核)

1、将驱动源码放在/drivers/char/下 2、修改drivers/char/Kconfig文件,添加以下内容:config My_Buttons        tristate "My_Buttons test"        depends on ARCH_S3C2440        default y if ARCH_S3C2440        help

2010-05-12 20:53:00 911

原创 Linux设备驱动开发详解--笔记11--内存与I/O访问

typedef void (*lpFunction) ();//定义一个无参数,无返回类型的函数指针类型//定义一个函数指针,指向cpu启动后所执行的第一条指令的位置lpFunction lpReset = (lpFunction)0xF000FFF0;lpReset();//调用函数 MMU停供虚拟地址和物理地址的映射、内存访问权限保护和Cache缓存控制等硬件支持。操作系统

2010-05-09 17:43:00 2574 2

原创 C语言:typedef定义函数指针

在typedef的使用中,最麻烦的是指向函数的指针,如果没有下面的函数,你知道下面这个表达式的定义以及如何使用它吗? int (*s_calc_func(char op))(int, int); 如果不知道,请看下面的程序,里面有比较详细的说明 #include // 声明四个函数//int add(int, int);//int sub(int, int);//i

2010-05-09 17:34:00 8565

原创 Linux设备驱动开发详解--笔记10--中断与时钟

中断:cpu在执行程序的过程中,出现了某些突发事件时cpu必须暂停执行当前的程序,转去处理突发事件,处理完毕后cpu又返回原程序被中断的位置并继续执行  根据中断入口跳转方法的不同,中断分为向量中断和非向量中断。采用向量中断的cpu通常为不同的中断分配不同的中断号,当检测到某中断号的中断到来后,就自动跳转到与该中断号对应的地址执行。不同中断号的中断油不同的入口地址。非向量中断的多个

2010-05-09 17:33:00 1006

原创 Linux设备驱动开发详解--笔记9--异步通知与异步I/O

异步通知:一旦设备就绪,则主动通知应用程序,这样应用程序根本不需要查询设备状态,这一点非常类似于硬件上的“中断”的概念,比较准确的称谓是“信号驱动的异步I/O  //启动信号驱动机制signal(SIGIO, input_handler);//让input_handler()处理SIGIO信号fcntl(fd, F_SETOWN, getpid());//设置本进程为STD

2010-05-09 17:31:00 925

原创 Linux设备驱动开发详解--笔记8--阻塞与非阻塞I/O

阻塞操作是指在执行设备操作时若不能获得资源则挂起进程,直到满足可操作的条件后在进行操作。非阻塞操作的进程在不能进行设备操作时并不挂起,它或者被放弃,或者不停的查询,直到可以进行操作为止  唤醒进程的地方最大可能发生在中断里面,因为硬件资源获得的同时往往伴随着一个中断 在用户程序中,select()和poll()也是与设备阻塞与非阻塞访问息息相关的,使用非阻塞I/O的应用程序通常

2010-05-09 17:30:00 1644

原创 Linux下select和poll的用法

select()函数的作用    系统调用select和poll的后端实现,用这两个系统调用来查询设备是否可读写,或是否处于某种状态。如果poll为空,则驱动设备会被认为即可读又可写,返回值是一个状态掩码如何使用select()函数?    select()函数的接口主要是建立在一种叫fd_set类型的基础上。它(fd_set) 是一组文件描述符(fd)的集合。由于fd_set类型的长度在

2010-05-09 17:30:00 1539 1

原创 Linux设备驱动开发详解--笔记7--并发控制

中断屏蔽的使用方法:local_irq_disable() //关中断local_irq_enable() //开中断 这两个函数都只能禁止和使能本cpu内的中断,因此,并不能解决SMP多cpu引发的竞态。因此,单独使用中断屏蔽通常不是一种值得推荐的避免竞态的方法,它适宜与自旋锁联合使用 另外,local_irq_save(flags)除了进行禁止中断操作以外,还保存目

2010-05-09 17:28:00 538

原创 Linux设备驱动开发详解--笔记6--字符设备驱动

使用下列洪可以通过主设备号和次设备号生成dev_tMKDEV(int major, int mainor) 如果复制的内存是简单类型,如char、int、long等,则可以使用简单的put_user()和get_user() Linux系统建议以如图方式定义ioctl命令码 命了码的设备类型字段为一个“幻数”,可以是0-0xff之间的值,内核中的ioctl-number

2010-05-09 17:27:00 747

原创 vi命令

移动命令(光标定位) h j k l  左下上右移动光标H        跳到屏幕上的第一行M        跳到屏幕的中间行L        跳到屏幕上的最后一行w        光标以单词向前移动至单词第一个字母b        与w相反,向后移动至单词的第一个字母%:       移动到与制匹配的括号上去(),{},[],CTRL+G  得到当前光标在

2010-05-09 17:26:00 413

原创 Linux设备驱动开发详解--笔记4--Linux内核模块

modprobe命令比insmod命令强大,它在加载某模块时会同时加载该模块所依赖的其他模块。使用modprobe命令加载的模块若以“modprobe –r filename”的方式卸载将同时卸载其依赖的模块。 printk打印到var/log/messages 2.6内核中已加载的信息也存在于/sys/module目录下,加载hello.ko后,内核中将包含/sys/module

2010-05-09 17:25:00 617

原创 Linux设备驱动开发详解--笔记5--Linux文件与设备系统

应用程序和VFS之间的接口是系统调用,而VFS与磁盘文件系统以及普通设备之间的接口是file_operations结构体成员函数。由于字符设备的上层没有磁盘文件系统,所以字符设备的file_operations成员函数直接由设备驱动提供了,file_operations正是字符设备驱动的核心,如图: 而对块设备来说,ext2、fat、jffs2等文件系统中会实现针对VFS的file_ope

2010-05-09 17:25:00 1100

原创 VMware6.5 + RedHat E5 VMware Tools的安装

RedHat Enterprise 5 默认没有安装源码包,因此需要手动安装在第一张盘下找到kernel-xen-devel-2.6.18-8.el5.i686.rpm包进行安装[root@localhost ~]# rpm -ivh kernel-xen-devel-2.6.18-8.el5.i686.rpm选择VM-->install VMware Tools [root@localh

2010-05-09 17:23:00 1013

转载 内核符号表详解

关键词:Kernel Symbol Table、/proc/ksyms、system.map、Oops、LKM这应该是一个很基本的内核概念,和模块、系统调用等一样基础,但牵涉的东西却一点也不窄,一毫也不浅。(但也不深:-)【内核符号表,kernel symbol table】Linux的内核是个单内核monolithic,任一函数都可以访问公共数据结构和函数调用。在设计程序时,需要命名一些函数名、

2010-05-09 17:23:00 1837

原创 Linux学习初记

我的第一个shell程序:tt1.shwhile truedo       date;       sleep 1;done 执行方式1:sh tt1.sh执行方式2:./tt1.sh(要求该文件有可执行权限) Shell变量:环境变量:       工具:echo 回显       显示环境变量:echo $HOME          

2010-05-09 17:22:00 734

原创 C中的空

1.   什么是空指针常量(null pointer constant)?[ 6.3.2.3-3] An integer constant expression with the value 0, or such an expression cast to type void *, is called a null pointer constant.这里告诉我们:0、0L、/0、3 - 3

2010-05-09 17:21:00 643

原创 C程序设计的常用算法

  算法(Algorithm):计算机解题的基本思想方法和步骤。算法的描述:是对要解决一个问题或要完成一项任务所采取的方法和步骤的描述,包括需要什么数据(输入什么数据、输出什么结果)、采用什么结构、使用什么语句以及如何安排这些语句等。通常使用自然语言、结构化流程图、伪代码等来描述算法。  一、计数、求和、求阶乘等简单算法  此类问题都要使用循环,要注意根据问题确定循环变量的初值、终值或结束条件

2010-05-09 17:20:00 685

原创 C++学习笔记

C++中,类的大括号后面要加“ ; ” 尽量避免使用void main(),因为在某些系统中,main()函数返回的int值,将被调用该程序的系统接收,通过该返回值,调用该程序的系统可以判断程序是否运行正常 良好的便程习惯(命名规则)(1)宏定义用大写字母加下划线表示,如MAX_LENGTH;(2)函数命名,如setName(), getCountOfStudents();

2010-05-09 17:19:00 856

原创 rpm包管理详解(4)

介绍完了rpm包的安装和查询,本节接着来介绍rpm包的卸载和升级,这样以来rpm包的“增删改查”就都涉及到了。rpm包的卸载和升级的指令如下:rpm -e [包名] 用来卸载一个rpm包rpm -U [包文件] 用来升级一个现有的rpm需要注意的是,如果要卸载的rpm包中的内容被别的rpm包依赖,那么则无法卸载,例如[leconte@localhost ~]$ rpm -e

2010-05-09 17:18:00 786

原创 rpm包管理详解(3)

rpm包之间会维持依赖关系,这是包管理系统的特色。我们都经历过安装一个包而因为依赖缺失而装不上的情况。后来yum的出现能一定程度解决这个问题,但我们仍然有必要了解rpm依赖关系背后的细节。自己打过rpm包的人都知道,在包的spec配置文件往往要明确写出此包所依赖的包名或文件名,同时也可能需要明确写出此包所提供的内容。这个内容可能是动态库也可能是其他一些名字,并不一定是文件名。各个包之间正是依靠

2010-05-09 17:17:00 2793

原创 rpm包管理详解(2)

本节接着介绍rpm的查询功能,查询是我们最常用的功能,例如查询一个包里包含哪些文件、一个文件属于哪个包、以及包之间的依赖关系等等。rpm的-q参数是用来进行查询的,需要明确的是rpm既可以对安装在系统上的包进行查询,也可以对一个未安装的rpm包进行查询。当一个rpm包安装到系统上之后,安装信息通常会保存在本地的/var/lib/rpm/目录下,数据会以berkeley DB的方式保存。查看/v

2010-05-09 17:16:00 721

原创 rpm包管理详解(1)

在linux世界里流行两种包管理方式,分别是redhat系的rpm和debian系的deb。其中rpm的使用更为广泛,我打算接下来分多章详细介绍一下rpm的包管理机制。包管理是操作系统用来维护各组件版本的一种方式,对于软件发行者来说,将自己的程序制作成标准的rpm格式也会使得程序的安装、升级和卸载变得非常容易。因此linux下几乎所有流行的程序都有rpm格式的包,有些是发行者自己打包,也有

2010-05-09 17:15:00 713

原创 Linux设备驱动开发详解--笔记3--Linux内核及内核编程

在设备驱动方面,Linux2.6相对于Linux2.4有较大的改动,这主要表现在内核API中增加了不少新功能(如内存池)、sysfs文件系统、内核模块从.o变为.ko、驱动模块编译方式、模块使用计数、模块加载和卸载函数的定义等方面 Linux内核主要有进程调度、内存管理、虚拟文件系统、网络接口和进程间通信等5个子系统组成,如下图: 在设备驱动编程中,当请求的资源不能满足时,

2010-05-09 17:14:00 1050

原创 Linux设备驱动开发详解--笔记2--驱动设计的硬件基础

处理器的分类,如下图所示:存储器可分为只读存储器(ROM)、闪存(Flash)、随机存取存储器(RAM)、光介质存储器和磁介质存储器 Nor Flash和cpu的接口属于典型的类SRAM接口,不需要增加额外的控制电路。Nor Flash的特点是可芯片内执行,程序可以直接在Nor内运行。而Nand Fash和cpu的接口必须由相应的控制电路进行转换,当然也可以通过地址线或GPIO

2010-05-09 17:13:00 900 1

原创 Linux设备驱动开发详解--笔记1--Linux设备驱动入门

什么是驱动?最通俗的解释就是“驱使硬件设备行动” 作用?设备驱动与底层硬件直接打交道,按照硬件设备的具体工作方式读写设备寄存器,完成设备的轮询、中断处理、DMA通信,进行物理内存向虚拟内存的映射,最终使通信设备能够收发数据,使显示设备能够显示文字和画面,使存储设备能够记录文件号数据 计算机系统的硬件主要有cpu、存储器、外设组成。但是随着IC制造工艺的发展,目前,芯片的

2010-05-09 17:12:00 1422

原创 Linux驱动之ioctl

在用户空间,使用ioctl系统调用来控制设备,原型如下:int ioctl(int fd, unsigned long cmd, ...);第三个参数不表示一个变数目的参数,而是一个类型可选的参数。第三个参数依赖于控制命令。一些命令不用参数,一些用一个整数值,一些使用指针 1、ioctl函数定义命令 在编写ioctl代码之前,首先需要定义命令。为了防止对错误的设备使用正确的

2010-05-09 17:10:00 1916

原创 第一个嵌入式Linux的驱动程序

   从这个总结正式开始了我的驱动之旅,心情不免有点激动,尽管现在对驱动的编写还很模糊,但还是有纪念意义的…… 开发平台:    虚拟机下RedHat9,内核2.4.20.8    交叉编译编译器:天嵌公司提供的arm-linux-gcc 4.3.3    内核树:/home/linux-2.6.30.4目标平台:    TQ2440,内核是ARM9    OS内核

2010-05-09 17:09:00 1172

原创 Qte开发环境的搭建

1. 硬件环境A. 主机:x86系列PC机。B. 开发板:YC2440。2. 软件环境A. 主机操作系统:VMware5.5虚拟机下的Redhat9(完全安装) (RedHat企业版的可能不用安装e2fsprogs-1.35.tar.gz和jpegsrc.v6b.tar.gz)B. 开发板操作系统:嵌入式Linux,内核版本为2.6.13。C. 交叉编译器:arm-linux-gcc-2.95

2010-05-09 17:07:00 2028

原创 虚拟机Linux下Minicom的配置

1、添加串口: 在Linux启动之前,虚拟机--》设置--》添加--》串口--》保存--》启动Linux。 2、#minicom ,出现启动界面,CTRL-A Z 进入帮助界面    3、键入O ,配置串口,选择第三项“Serial port setup”点击回车    4、通过分别键入A、E、F,配置,点击回车(F选项配置成No,否则不能接收键盘输入) 5、选择“Sa

2010-05-09 17:05:00 629 1

原创 Windows下的Linux虚拟机网络配置

今天在虚拟机下又重装了linux,下面是从网上搜到的linux虚拟机的网络配置: 1、 你装好虚拟机后,你会发现多出来两个网卡 ,一个1,一个8,2、 共享对外的网卡:“本地连接—属性—高级” 选中   允许其他网络用户通过此计算机的Internet连接来连接  (这时“允许其他网络用户控制或禁止共享的Internet连接”变为可用状态。)选中家庭网络连接  “VMware Netwo

2010-05-09 17:04:00 483

原创 交叉编译环境的搭建

交叉编译环境的搭建很简单,就是把工具集解压,配好环境变量即可,具体步骤如下: 1、在usr/local/下新建目录arm2、将arm-linux-gcc-3.4.1.tar.bz2拷贝到arm目录下3、解压:tar jxvf arm-linux-gcc-3.4.1.tar.bz24、vi /root/.bashrc,在此文件的最后加一句话:export PATH=$PATH:/

2010-05-09 17:03:00 557

原创 Linux下第一个Qt程序

1 #include2 #include34 int main(int argc, char **argv)5 {6     QApplication a(argc, argv);7   8     QPushButton hellobtn("Hello Qt!", 0);9     hellobtn.resize(100, 20);10    a.setMainWidget(&hello

2010-05-09 17:02:00 864

原创 Linux下挂载与解除挂载U盘

今天在我的虚拟机Linux(RedHat)下挂载了一下优盘,大体步骤是这样的: 1、使用命令:fdisk -l,查看系统硬盘和分区情况2、插入优盘,再次用fdisk -l命令查看        大家可以发现多了一个硬盘/dev/sdb和它的一个分区/dev/sdb1 3、使用命令:mkdir -p /mnt/usb,在mnt目录下创建目录usb来作挂接点 4、进

2010-05-09 17:00:00 2668

原创 RedHat9、RedHat E5下vi的配置

Linux版本:RedHat9输入 vi --version命令,查看vimrc的位置,编辑该文件,添加红色部分,就能很好的进行C编程了 if &t_Co > 2 || has("gui_running")  syntax on  set tabstop=4  set softtabstop=4  set shiftwidth=4  set mouse=a  set autoinden

2010-05-09 16:59:00 1333

原创 TQ2440按键驱动程序详解

/*要搞清楚谁是输入*//*在这里,按键控制对应的中断引脚,从而控制对应的IO寄存器*//*相当于信息从外面输入*//*我们要做的是根据对应的输入信息,来采取相应的响应动作*//*这就达到了中断响应的目的*//*其核心就是要检测*//*那么,该如何去检测呢?*//*通过什么来检测呢?*//*如何得知一个设备究竟用到哪些资源呢?*//*这是个非常重要的问题*//*我想应该看具体的电路原理图*//

2010-05-09 16:44:00 4632 2

快学scala --高清完整版 --带书签

快学scala --高清完整版 --带书签

2017-04-10

Scala编程实战 完整书签版--part2

真正的《scala编程实战》完整版,分两卷,请下载part1、part2

2017-04-10

Scala编程实战 完整书签版--part1

真正的《scala编程实战》完整版

2017-04-10

嵌入式linux应用程序开发详解.pdf

嵌入式linux应用程序开发详解.pdf

2009-07-15

嵌入式实时操作系统 都江堰 源码

事件调度的操作系统给嵌入式开发带来了崭新的思路,使得面向对象的开发思路在操作系统层面就得以实现。因而,djyos给应用程序员带来的,并不是代码效率的增加或运行速度的加快,而是开发模式的改变

2009-05-19

强实时嵌入式操作系统VxWorks源码

这个操作系统是目前应用最广泛的、稳定性最好的,这是VxWorks系统的源码,希望对大家有所帮助

2009-05-18

嵌入式实时操作系统Hello China源码

Hello China是一个嵌入式实时操作系统,这个操作系统用c语言模拟的面向对象的思想,这时可取之处

2009-05-18

ADS使用教程(欢迎大家下载)

这本书不是太大,如果有一定基础的话,能够快速的熟悉ADS的使用

2009-05-18

uc/os-ii 中文注释版

有中文注释,使源码阅读容易些,我也是下的别人的,不过里面做了稍微的修改,希望对大家有所帮助

2009-05-18

j2ee帮助文档(英文)

免费给你们提供一个j2ee的帮助文档,我现在就是用这个,希望对大家用所帮助

2008-12-06

空空如也

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

TA关注的人

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