自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 资源 (56)
  • 收藏
  • 关注

原创 linux select&poll

还有一个与设备阻塞与非阻塞访问息息相关的论题,即select和poll,select和poll的本质一样,前者在BSD Unix中引入,后者在System V中引入。poll和select用于查询设备的状态,以便用户程序获知是否能对设备进行非阻塞的访问,它们都需要设备驱动程序中的poll函数支持。  驱动程序中poll函数中最主要用到的一个API是poll_wait,其原型如下:v

2012-01-31 15:39:40 2433

转载 Linux驱动编程 step-by-step

第三次看了LDD3了(虽然现在已经是kernel3.0但从这本书商还是能学到很多) 每次都有一些收获 现在终于能够写一写代码了驱动程序的作用:简单来说 驱动程序就是使计算机与设备通信的特殊的代码,在作单片机时候(无OS)我们自己定义接口及自定义的结构来操作相关硬件,而在有OS的模式下我们操作的硬件是去实现对应的接口(这些接口是已定义好的,我们需要实现这些接口)而无需自己定义接口,这样既能正

2012-01-19 16:55:54 1894

转载 Linux编程常用的函数

总共分为12部分分别是:进程、线程、消息队列、信号量集、共享内存、PGSQL编程、MYSQL编程、网络编程、文件访问、标准I/O、系统数据文件和信息、信号(一)     进程1.     进程ID为0的进程通常是调度进程,常常被称为交换进程进程ID为1的进程通常是init进程,在自举过程结束时由内核调用进程ID为2的进程页守护进程,负责支持虚拟存储系统的分页操作2.

2012-01-18 17:13:29 1317

原创 Linux基础编程-文件操作open,lseek,read,write,close

Linux基础编程-文件操作open,lseek,read,write,close Linux上面对文件的操作可以分为两种:1.Linux系统提供的API; 2.C标准的文件操作函数。前者依赖于Linux系统,后者是标准的C文件操作函数与操作系统无关。 文件操作方式主要是打开,读写和关闭这三种。在LinuxAPI之中主要是使用open函数,write,read,close。

2012-01-18 17:06:07 1026

原创 字符设备驱动学习(二) 设备接点的创建

驱动程序编写好后,还需要创建设备节点,有两种方式:一是通过mknod命令去手动创建,例如:mknod /dev/hello c 250 0,/dev/hello为设备节点名字,c代表字符设备,250和0代表它的主次设备号。二是使用udev或mdev来实现自动创建设备节点。使用mknod手动创建设备节点不够灵活,如果是动态分配的设备号怎么办,难道每次加载驱动后去查看/proc

2012-01-18 16:58:58 1191

原创 字符设备驱动学习(一)

一般的流程都是,呵呵,其实也不算是一般的流程了,只是手动加载字符设备驱动的一种方法吧,1.    先使用register_chrdev_region或alloc_chrdev_region来注册一个字符设备的设备号,大家都知道Linux是通过设备号来找到相应的驱动程序的,所以你要注册字符设备的时候,需要一个设备号或系统为你指定一个设备号。这两函数的差别就是register_chrdev_reg

2012-01-18 16:54:40 1184

原创 Linux多线程函数解析

Linux多线程函数用得比较多的是下面的3个pthread_create(),pthread_exit(),pthread_join();它们都是在头文件之中。编译时需要加静态库-lpthread 下面是函数的说明:  pthread_create是UNIX环境创建线程函数 int pthread_create(      pthread_t *restrict tidp,

2012-01-18 16:48:45 1065

原创 Linux编程中安装必要的man帮助文档

linux开发的过程中,比较痛苦的就是在linux没有找到一个好用的帮忙文档,像windows中有MS强大的MSDN,而刚开始入门又不似一些大牛能刷刷的直接找到定义的头文件,甚至源文件,,,所以痛苦的时光时常发生,今天网上看了一下,其实系统自带的man工具就有很强大的功能,只是我们需要安装各个库的帮忙文档而矣需要查找类似于pthread_create函数需要安装 pos

2012-01-18 16:45:52 1049

原创 misc杂项设备驱动

Linux里面的misc杂项设备是主设备号为10的驱动设备,它的注册跟使用比较的简单,所以比较适用于功能简单的设备。它有自己的设备结构体: struct miscdevice  {     int minor;     const char *name;     const struct file_operations *fops;     struct list_head

2012-01-18 16:32:35 1594

原创 open系统调用在内核中的流程分析

真是蛮复杂的,我分三步走,力求讲得比较清楚。以字符设备为例,相对于块设备要简单些。基于2.6.26的内核一)驱动注册open函数都干了些什么?register_chrdev -> cdev_add  ->  kobj_mapfile: fs/char_dev.cint register_chrdev(unsigned int major, const c

2012-01-18 16:30:12 1782

原创 Linux系统调用列表

以下是Linux系统调用的一个列表,包含了大部分常用系统调用和由系统调用派生出的的函数。这可能是你在互联网上所能看到的唯一一篇中文注释的Linux系统调用列表,即使是简单的字母序英文列表,能做到这么完全也是很罕见的。按照惯例,这个列表以man pages第2节,即系统调用节为蓝本。按照笔者的理解,对其作了大致的分类,同时也作了一些小小的修改,删去了几个仅供内核使用,不允许用户调用的系统调用

2012-01-18 16:26:33 730

原创 linux 信号量使用

信号量的数据类型为结构sem_t,它本质上是一个长整型的数。函数sem_init()用来初始化一个信号量。它的原型为:  extern int sem_init __P ((sem_t *__sem, int __pshared, unsigned int __value));  sem为指向信号量结构的一个指针;pshared不为0时此信号量在进程间共享,否则只能为当前进程的所有线程共享

2012-01-18 14:45:22 1971

原创 Linux 信号说明列表

1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR213) SIGPIPE 14) SI

2012-01-18 14:01:25 970

原创 Android & Linux的suspent和resume执行流程

<!--h1 {margin-top:0.13in; margin-bottom:0.13in; line-height:0.28in; page-break-inside:avoid}h1.western {font-family:"Times New Roman",serif; font-size:16pt}h1.cjk {font-family:"De

2012-01-18 10:46:35 13423

原创 Linux设备驱动之内存映射

1. 内存映射所谓的内存映射就是把物理内存映射到进程的地址空间之内,这些应用程序就可以直接使用输入输出的地址空间,从而提高读写的效率。Linux提供了mmap()函数,用来映射物理内存。在驱动程序中,应用程序以设备文件为对象,调用mmap()函数,内核进行内存映射的准备工作,生成vm_area_struct结构体,然后调用设备驱动程序中定义的mmap函数。 2. 映射的种类把同

2012-01-17 13:41:48 3754

原创 Linux内核模块时间同步函数汇总

在linux内核模块中能用到的函数比用户空间多,但是它的函数往往被用得很少。当然在内核中叶可以调用用户空间的函数只要直接调用系统调用的封装函数就行,如下:如调用long gettimeofday(struct timeval tv, struct timezone tz);函数可以直接调用封装体:_syscall1(long,gettimeofday, struct timeval,tv,

2012-01-17 10:17:42 3361

原创 tasklet使用

taskletTasklet的使用比较简单,只需要定义tasklet及其处理函数并将两者关联例子:Void my_tasklet_func(unsigned long)DECLARE_TASKLET(my_tasklet.my_tasklet_func,data)代码DECLARE_TASKLET实现了定义名称为my_tasklet的tasklet并将其与my_taskle

2012-01-16 10:42:04 5795

原创 Linux工作队列实现机制

<!--p {margin-bottom:0.08in}h1 {margin-top:0.13in; margin-bottom:0.13in; line-height:0.28in; page-break-inside:avoid}h1.western {font-family:"Times New Roman",serif; font-size:16pt

2012-01-16 10:07:15 7041

原创 linux内核定时器

struct list_head {        struct list_head *next, *prev;} 定时器(内核定时器、动态定时器)由结构timer_list表示,定义在文件linux/timer.h中。struct timer_list {            struct list_head entry; /* 定时器链表的入口 */

2012-01-16 09:47:58 1155

原创 Linux下面一个简单的虚拟platform驱动

在Linux之中,约定如果设备不属于任何的总线,则可以把它注册为虚拟的platform设备。下面就简单来学习一下一个简单的platform设备是怎么创建出来的。一般注册platform驱动的步骤是:1,platform_device_create注册一个设备2,platform_driver_create注册一个驱动。static struct platform_dri

2012-01-14 15:56:19 1394

转载 ARM linxu启动过程分析(四)

<!--p {margin-bottom:0.08in}-->1. Linux内核启动第三阶段start_kernel:内核从现在开始就进入C语言部分,内核启动第三阶段从init/main.c文件中的start_kernel()函数开始,到该函数结束。这一阶段对整个系统内存、cache、信号、设备等进行初始化,最后生成init进程后,调用cpu_idle()

2012-01-14 11:10:47 1288 1

转载 ARM linxu启动过程分析(三)

<!--p {margin-bottom:0.08in}-->1. Linux内核启动第二阶段:内核启动第二阶段主要完成的工作有,cpuID检查,machineID(也就是开发板ID)检查,创建初始化页表,设置C代码运行环境,跳转到内核第一个真正的C函数startkernel开始执行。这一阶段涉及到两个重要的结构体:一个是structproc_inf

2012-01-14 11:09:51 1250

转载 ARM linxu启动过程分析(二)

<!--p {margin-bottom:0.08in}-->*****解压缩内核,分三种情况,下面一一解释:说明:这一段分析中所提到的vmlinux指的是基本内核映像vmlinux/*检查当前地址间的相互关系,防止解压缩过程中出现地址重叠或者说地址冲突 *  r4 = final kernel address   //最终解压后的内核首地址 *

2012-01-14 11:08:35 1395

转载 Arm linxu启动过程分析(一)

<!--p {margin-bottom:0.08in}-->本文着重分析FS2410平台linux-2.6.14内核启动的详细过程,主要包括:zImage解压缩阶段、vmlinux启动汇编阶段、startkernel到创建第一个进程阶段三个部分,一般将其称为linux内核启动一、二、三阶段,本文也将采用这种表达方式。对于zImage之前的启动过程,本文不做表述,可

2012-01-14 11:06:00 1667

原创 Linux设备驱动----之一 cdev

内核中每个字符设备都对应一个 cdev 结构的变量,下面是它的定义:linux-2.6.22/include/linux/cdev.hstruct cdev {  13        struct kobject kobj;  14        struct module *owner;  15        const struct file_operations *ops

2012-01-13 11:27:56 1373

原创 Andoid init.c

在 Android中使用启动脚本init.rc,可以在系统的初始化过程中进行一些简单的初始化操作。这个脚本被直接安装到目标系统的根文件系统中,被 init可执行程序解析。 init.rc是在init启动后被执行的启动脚本,其语法主要包含了以下内容:        Commands:命令         Actions: 动作        Triggers:触发条件

2012-01-12 14:51:10 1708

原创 字符设备 register_chrdev_region()、alloc_chrdev_region() 和 register_chrdev()

1. 字符设备结构体  内核中所有已分配的字符设备编号都记录在一个名为 chrdevs 散列表里。该散列表中的每一个元素是一个 char_device_struct 结构,它的定义如下:   static struct char_device_struct {       struct char_device_struct *next;    // 指向散列冲突链表中的下一个元

2012-01-12 10:11:19 16030

原创 等待队列 PK 工作队列

对这2个容易混淆的队列做简单概念上的区别,至于怎么用,资料一大堆,不多说,等需要的时候再去找吧 等待队列在内核中有很多用途,尤其适合用于中断处理,进程同步及定时。我们在这里只说,进程经常必须等待某些事件的发生。例如,等待一个磁盘操作的终止,等待释放系统资源,或者等待时间经过固定的间隔。 等待队列实现了在事件上的条件等待,希望等待特定事件的进程把自己放进合适的等待队列,并

2012-01-12 10:00:56 1230

UNIX环境高级编程

UNIX环境高级编程

2012-01-31

Android底层开发

Android底层开发文档整理,Android底层开发

2011-12-26

android内核移植文档整理

android内核移植文档整理,我移植时参考过的文档,论文,资料,等待资料.学习andoid内核移植的好文章

2011-12-26

Uboot启动和移植

Uboot启动和移植

2011-12-25

uboot分析和笔记

uboot分析和笔记 详细的分析 uboot分析和笔记 详细的分析

2011-12-25

Android面试题

Android面试题

2011-12-25

android底层相关模块介绍

android底层相关模块介绍供14章 包括android驱动所有模块,学习的好资料啊

2011-12-25

Android核心分析

Android核心分析 Zygote Service - maxleng的专栏 Service深入分析 IPC框架分析 Binder,Service,Service manager

2011-12-25

Android编译系统

Android_build_systemAndroid_build_systemAndroid_build_system

2011-12-25

android编译大全_完全指南

android编译大全_完全指南

2011-12-25

Android的编译系统

Android的编译系统

2011-12-25

FPGA学习经验

FPGA学习经验共享FPGA学习经验共享FPGA学习经验共享FPGA学习经验共享

2011-12-25

用FPGA设计DDS论文

用FPGA设计DDS论文

2011-12-25

matlab书籍整理

matlab书籍整理

2011-12-25

超声波测距资料打包

超声波测距资料

2011-12-25

嵌入式系统设计开发流程

嵌入式系统设计开发流程嵌入式系统设计开发流程嵌入式系统设计开发流程嵌入式系统设计开发流程

2011-12-25

ucos 2内核结构

ucos 2内核结构

2011-12-25

嵌入式操作系统介绍

嵌入式操作系统介绍

2011-12-25

任务管理 时间管理 内存管理

任务管理 时间管理 内存管理

2011-12-25

uCOSII移植

uCOSII移植

2011-12-25

C语言实现FFT

C语言实现FFT

2011-12-25

C2000与单片机对比分析

C2000与单片机对比分析

2011-12-25

基于DSP的FFT算法实现

基于DSP的FFT算法实现

2011-12-25

TMS320C2000 DSP硬件结构

TMS320C2000 DSP硬件结构

2011-12-25

TMS320C2000 DSP指令系统

TMS320C2000 DSP指令系统

2011-12-25

TMS320C2000 DSP开发环境

TMS320C2000 DSP开发环境

2011-12-25

基于DSp湿度传感器测试系统设计

基于DSp湿度传感器测试系统设计,这可是个人论文啊。

2011-12-25

CCS的技术概述

CCS的技术概述

2011-12-25

做DSP最应该懂得157个问题

做DSP最应该懂得157个问题

2011-12-25

基于TMS320C240湿度传感器测试系统设计

基于TMS320C240湿度传感器测试系统设计

2011-12-25

Jabber(XMPP)服务协议的概述中文版

Jabber(XMPP)服务协议的概述中文版

2011-12-25

AVR实现MP3,歌曲放在U盘.

AVR实现MP3,歌曲放在U盘,原理图,代码都有,还有说明哦

2011-12-25

XMPP协议简介

XMPP协议简介

2011-12-25

基于Android平台的嵌入式手机MP3播放器

基于Android平台的嵌入式手机MP3播放器的设计与仿真

2011-12-25

超宽带无线通信技术 ppt

超宽带无线通信技术 超宽带无线通信技术

2022-09-11

ARM---Cortex-A8处理器

ARM---Cortex-A8处理器, PPT版本, 非常好的参考资料。 欢迎下载 Cortex-A8处理器 技术特点; Cortex-A8内部 功能及特点; Cortex-A8内核工作模式; Cortex-A8存储系统。

2022-09-11

opencl SVM例程

opencl SVM例程

2016-08-16

linux设备启动char_dev2

linux设备启动char_dev2

2012-01-31

linux设备启动char_dev1

linux设备启动char_dev

2012-01-31

linux字符设备驱动

linux字符设备驱动

2012-01-31

空空如也

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

TA关注的人

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