自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(85)
  • 收藏
  • 关注

原创 I2C软件模拟驱动

/******************************************************************************* * 文件名  :i2c_software.h * 描述    :软件IIC驱动配置头文件 * 作者    :huangqi * 时间    : 2014/12/5 * 版本    : V0.0.1*********

2016-03-10 15:05:04 926

原创 软件模拟I2C(基于Microchip 24LC16B的操作函数库)

本文是在STM8L15x系列的芯片上,使用软件模拟的I2C来实现对24LC16B进行操作的函数库。头文件定义:

2015-10-30 15:10:11 2130

原创 基于input输入子系统的按键驱动(2.6.22内核)

#include #include #include #include #include #include  /* for -EBUSY */#include  /* for request_region */#include  /* for loops_per_jiffy */

2011-07-28 11:27:07 779

原创 RTC(实时钟)设备驱动(内核代码)

代码在:drivers/rtc/rtc-dev.c/* drivers/rtc/rtc-s3c.c * * Copyright (c) 2004,2006 Simtec Electronics * Ben Dooks, ben@simtec.co.uk> * http://arm

2011-07-27 17:01:51 1305

原创 eeprom驱动实例(35内核下)

#include #include #include #include #include #include #include   /* kzalloc() */#include /* sysfs_create_group() */#include #include #inclu

2011-07-27 15:31:24 822

原创 字符设备驱动浅析(内核代码分析)

在cdev.h件中声明的是对字符设备结构体的定义及需要完成的字符设备的操作函数,具体如下所示:#ifndef _LINUX_CDEV_H#define _LINUX_CDEV_H#ifdef __KERNEL__#include #include #include struct

2011-07-27 11:32:30 726

原创 i2c设备驱动(ds1337实例:内核代码)

/* *  linux/drivers/i2c/chips/ds1337.c * *  Copyright (C) 2005 James Chapman jchapman@katalix.com> * * based on linux/drivers/acorn/char/pcf

2011-07-26 16:57:34 3584

原创 s3c2410_i2c总线驱动及at24c02设备驱动实例

/* linux/drivers/i2c/busses/i2c-s3c2410.c * * Copyright (C) 2004,2005 Simtec Electronics * Ben Dooks ben@simtec.co.uk> * * S3C2410 I2C Contr

2011-07-25 20:04:05 3046

原创 简单的IIC驱动实例

#include #include #include #include #include #include #include #include    /* printk() */#include    /* kmalloc() */#include        /* every

2011-07-13 21:48:47 1833

原创 简单的WATCHDOG定时器(看门狗)

#include #include #include #include #include #include #include #include #include #include #define WATCHDOG_MAGIC 'k'//#ifndef _IO//# define

2011-07-13 21:13:00 1550

原创 简单的PWM定时器驱动

/* * Simple - REALLY simple memory mapping demonstration.  脉冲宽度调制(PWM),定时0 */#include #include #include #include    /* printk() */#include

2011-07-13 20:55:22 736

原创 一个简单的LED驱动

/* * Simple - REALLY simple memory mapping demonstration.  *///#include #include #include #include #include    /* printk() */#include    /*

2011-07-13 20:15:40 705

原创 按键驱动(浏览按键)

//#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #in

2011-07-13 17:12:17 828

原创 ADC驱动实例(简单)

ADC驱动(仅一路输入) /********s3c2410-adc.h********/#ifndef _S3C2410_ADC_H_#define _S3C2410_ADC_H_#define ADC_WRITE(ch, prescale) ((ch)#define ADC_W

2011-07-12 21:46:06 6358

原创 globalfifo 驱动实例(工作队列)

/*======================================================================    A globalfifo driver as an example of char device drivers      Th

2011-07-12 20:57:29 589

原创 globalfifo驱动实例(等待队列)

/*======================================================================    A globalfifo driver as an example of char device drivers      Th

2011-07-12 20:45:33 715 1

原创 globalfifo驱动实例(tasklet中断底半部机制)

/*======================================================================    A globalfifo driver as an example of char device drivers      Th

2011-07-12 17:52:46 887

原创 globalfifo驱动实例(poll机制)

/*======================================================================    A globalfifo driver as an example of char device drivers      Th

2011-07-12 14:58:59 1777

原创 globalfifo(管道)驱动

/*======================================================================    A globalfifo driver as an example of char device drivers      Th

2011-07-11 21:58:18 1083

原创 LED驱动实例5(信号量+udev)

#include #include #include #include #include #include #include #include #define CMD_LED_ON 1#define CMD_LED_OFF 0#define CMD_LED_GET_STATE 2

2011-07-11 21:12:16 608

原创 LED驱动实例4(mmap)

#include #include #include #include #include #include #define LED_PHY_BASE 0x56000050int main(void){ int fd = -1; volatile  unsigned int *pA

2011-07-11 20:49:43 634

原创 LED驱动实例3(自旋锁)

#include #include #include #include #include #include #include #define CMD_LED_ON 1#define CMD_LED_OFF 0#define CMD_LED_GET_STATE 2 #define

2011-07-11 20:41:35 553

原创 LED驱动实例2

#include #include #include #include #include #include #include #include #include #include #define DEVICE_NAME     "leds"  /* 加载模式后,执行”cat /p

2011-07-11 20:34:09 581

原创 LED驱动实例

第一个(不完整):#include #include #include #include #include #include #include #include #include #include /*Comment/uncomment the following line to

2011-07-11 17:32:17 546

原创 一个简单的Linux内核模块

#include #include static int __init hello_init(void)  //内核加载函数{ printk("Hello driver!\n");   //内核模块中用于输出的函数 return 0;}static void __exit hel

2011-07-11 16:15:14 400

原创 TTY终端设备文件接口的基本结构

TTY终端设备文件接口的基本结构=============================1) 在操作系统中, 应用程序一般不能直接操作硬件, 只能通过系统调用按照内核所提供的抽象形式来间接访问硬件. 在Linux系统中, 所有的硬件对象抽象为文件对象, 通过

2011-07-03 17:50:16 892

原创 linux、内核源码、内核编译与配置、内核模块开发、内核启动流程

<div id="appShareShareIcon" class="share-btn-img" onclick="function onclick(){share.share(30644577,,30644577)}">linux是如何组成的?答:linux是由用户空间和内核空间组成的为什么要划分用户空间和内核空间?答:有关CPU体系结构,各处理器可以有多种模式,而

2011-06-20 21:13:00 540

原创 网络编程—TCP

<br />/*******************************************************/<br />网络基础编程<br />/*******************************************************/<br />//common.h头文件<br />#ifndef __COMMON_H__<br />#define __COMMON_H__   //定义头文件common.h<br />#include <sys/types.h> 

2011-05-11 20:15:00 513

原创 套接字编程

<br />服务器端:<br />#include<sys/types.h><br />#include<sys/socket.h><br />#include<stdio.h><br />#include<stdlib.h><br />#include<errno.h><br />#include<string.h><br />#include<unistd.h><br />#include<netinet/in.h><br />#define PORT 4321   //端口号<br />#define

2011-05-10 21:29:00 561

原创 多线程(生产者和消费者)

<br />有一个有限缓冲区(这里用有名管道实现FIFO式缓冲区)和两个线程:生产者和消费者。它们不停地把产品放入缓冲区和从缓冲区中拿走产品。一个生产者在缓冲区满的时候必须等待,一个消费者在缓冲区空的时候也必须等待。<br />信号量的考虑:这里使用3个信号量avail和full分别用于解决生产者和消费者线程之间的同步问题,mutex是用于这两个线程之间的互斥问题。其中avail表示有界缓冲区中的空单元数初始值为N,full表示有界缓冲区非空单元数,初始值为0;mutex是互斥信号量,初始值为1。<br /

2011-05-09 21:25:00 1063

原创 线程与信号量

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

2011-05-09 20:44:00 669

转载 linux多线程设计

<br />linux多线程设计是指基于Linux操作系统下的多线程设计,包括多任务程序的设计,并发程序设计,网络程序设计,数据共享等。Linux系统下的多线程遵循POSIX线程接口,称为pthread。编写Linux下的多线程程序,需要使用头文件pthread.h,连接时需要使用库libpthread.a。<br />pthread_t在头文件/usr/include/bits/pthreadtypes.h中定义: <br />  typedef unsigned long int pthread_t;

2011-05-09 16:53:00 641

原创 共享内存

<br />#include<sys/types.h><br />#include<sys/ipc.h><br />#include<sys/shm.h><br />#include<stdio.h><br />#include<stdlib.h><br />#include<string.h><br />#define BUFFER_SIZE 2048<br />int main()<br />{<br /> pid_t pid;<br /> int shmid;<br /> char *shm_addr

2011-05-07 21:31:00 472

原创 信号量

/************************************************//* sem_com.h */#ifndef  SEM_COM_H#define  SEM_COM_H                   //定义sem_com.h文件#include #include union semun                    //定义联合体union semnn结构{ int val; struct semid_ds *buf; unsigned short *arr

2011-05-07 16:26:00 903

原创 信号机制

<br />实验1:<br />#include<stdio.h><br />#include<signal.h><br />#include<unistd.h><br />#include<stdlib.h><br />int wait_mark;<br />void waiting(),stop();   //申明信号响应函数<br />int main(int argc,char *argv[])<br />{<br /> int p1,p2;<br /> signal(SIGINT,stop);  

2011-05-05 21:03:00 588

原创 无名管道系统调用

#include#include#include#include#include#include#define MAX 256#define DELAY 1int main(){ pid_t pid; int pipe_fd[2]; //定义两个文件描述符 char buf[MAX]; //定义缓冲区大小 const char data[] = "Pipe Test Program"; //定义数据 int real_read

2011-05-04 16:42:00 504

原创 进程及进程管理

#include#include#include#include#include#include//#includeint global = 22;char buf[] = "the test content!/n";void exit_check(int stat)    //waitpid的作用是等待子进程退出并回收资源,同时通过WIFEXITED等宏调用可以检测子进程退出状态。{ if(WIFEXITED(stat)) {  printf("exit abnormally!the signal cod

2011-05-03 15:35:00 378

原创 文件目录操作编程

<br />通过一个简单的ls程序,完成读目录内容的编程,了解基本的读目录读的基本步骤:<br />#include <stddef.h><br />#include <stdio.h><br />#include <sys/types.h><br />#include <sys/stat.h><br />#include <dirent.h><br />int main(void)<br />{<br />    DIR *dp;<br />    struct dirent *ep;   <br /> 

2011-04-29 19:44:00 625

原创 文件I/O操作编程

<br />通过一个简单的程序完成文件的复制操作,了解基本的文件I/O文件读写的基本步骤:<br />#include<stdio.h><br />#include<sys/stat.h><br />#include<sys/types.h><br />#include<fcntl.h><br />#include<unistd.h><br />#define max 128<br />int main(){<br /> int f1,f2;<br /> char buf[max];<br /> int r

2011-04-28 15:39:00 497

原创 标准I/O操作编程

一、1.向缓冲区中输入字符2.向缓冲区中写的字符数目超过缓冲区得大小时,才执行输出。3.可以手工计算出缓冲区大小(341*3+1=1024)参考代码:#includeint main(){       int i=0;       for(i=0;i              if(i>=100)                      fprintf(stdout,"%d",i);              else if(i>=10)                      fprintf(stdo

2011-04-27 16:31:00 745

空空如也

空空如也

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

TA关注的人

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