资源简介

《嵌入式Linux应用程序开发标准教程》(第2版全)[高清版]附源码.rar

资源截图

代码片段和文件信息


/* gpio_drv.c */

#include 
#include 
#include 
#include 

#include    /* printk() */
#include  /* kmalloc() */
#include        /* everything... */
#include     /* error codes */
#include     /* size_t */
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include “gpio_drv.h“

static int major = 0;
module_param(major int 0);

void s3c2410_gpio_cfgpin(unsigned int pin unsigned int function)
{
unsigned long base = S3C2410_GPIO_base(pin);
unsigned long shift = 1;
unsigned long mask = 0x03;
unsigned long con;
unsigned long flags;

if (pin < S3C2410_GPIO_BANKB) 
{   
shift = 0;
mask  = 0x01;
}   

mask <<= (S3C2410_GPIO_OFFSET(pin) << shift);

local_irq_save(flags);

con = __raw_readl(base + 0x00);
con &= ~mask;
con |= function;

__raw_writel(con base + 0x00);

local_irq_restore(flags);
}

void s3c2410_gpio_pullup(unsigned int pin unsigned int to) 
{
unsigned long base = S3C2410_GPIO_base(pin);
unsigned long offs = S3C2410_GPIO_OFFSET(pin);
unsigned long flags;
unsigned long up; 


if (pin < S3C2410_GPIO_BANKB)
{
return;
}

local_irq_save(flags);

up = __raw_readl(base + 0x08);
up &= ~(1 << offs);
up |= to << offs;
__raw_writel(up base + 0x08);

local_irq_restore(flags);
}

void s3c2410_gpio_setpin(unsigned int pin unsigned int to)
{
unsigned long base = S3C2410_GPIO_base(pin);
unsigned long offs = S3C2410_GPIO_OFFSET(pin);
unsigned long flags;
unsigned long dat;

local_irq_save(flags);

dat = __raw_readl(base + 0x04);
dat &= ~(1 << offs);
dat |= to << offs;
__raw_writel(dat base + 0x04);

local_irq_restore(flags);
}


int gpio_open (struct inode *inode struct file *filp)
{
s3c2410_gpio_pullup(S3C2410_GPB0 1); /* BEEP*/
s3c2410_gpio_pullup(S3C2410_GPF4 1); /* LED D12 */
s3c2410_gpio_pullup(S3C2410_GPF5 1); /* LED D11 */
s3c2410_gpio_pullup(S3C2410_GPF6 1); /* LED D10 */
s3c2410_gpio_pullup(S3C2410_GPF7 1); /* LED D9 */
s3c2410_gpio_cfgpin(S3C2410_GPB0 S3C2410_GPB0_OUTP);
s3c2410_gpio_cfgpin(S3C2410_GPF4 S3C2410_GPF4_OUTP);
s3c2410_gpio_cfgpin(S3C2410_GPF4 S3C2410_GPF5_OUTP);
s3c2410_gpio_cfgpin(S3C2410_GPF4 S3C2410_GPF6_OUTP);
s3c2410_gpio_cfgpin(S3C2410_GPF4 S3C2410_GPF7_OUTP);
return 0;
}

ssize_t gpio_read(struct file *file char __user *buff size_t count loff_t *offp)
{
return 0;
}

ssize_t gpio_write(struct file *file const char __user *buff size_t count loff_t *offp)
{
return 0;
}

int switch_gpio(unsigned int pin unsigned int swt)
{
if (!((pin <= S3C2410_GPF7) && (pin >= S3C2410_GPF4)) && (pin != S3C2410_GPB0))
{
printk(“Unsupp

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       5412  2008-12-19 19:17  嵌入式Linux应用程序开发标准教程 源码\driver\11-3-2\gpio_drv.c

     文件        674  2008-12-19 19:17  嵌入式Linux应用程序开发标准教程 源码\driver\11-3-2\gpio_drv.h

     文件        870  2008-12-19 19:17  嵌入式Linux应用程序开发标准教程 源码\driver\11-3-2\gpio_test.c

     文件        394  2008-12-19 19:17  嵌入式Linux应用程序开发标准教程 源码\driver\11-3-2\Makefile

     文件      11829  2008-12-19 19:17  嵌入式Linux应用程序开发标准教程 源码\driver\11-6\butt_drv.c

     文件        936  2008-12-19 19:17  嵌入式Linux应用程序开发标准教程 源码\driver\11-6\butt_drv.h

     文件       1248  2008-12-19 19:17  嵌入式Linux应用程序开发标准教程 源码\driver\11-6\butt_test.c

     文件        674  2008-12-19 19:17  嵌入式Linux应用程序开发标准教程 源码\driver\11-6\gpio_drv.h

     文件        373  2008-12-19 19:17  嵌入式Linux应用程序开发标准教程 源码\driver\11-6\Makefile

     文件        384  2008-12-19 19:17  嵌入式Linux应用程序开发标准教程 源码\driver\11-7\Makefile

     文件        943  2008-12-19 19:17  嵌入式Linux应用程序开发标准教程 源码\driver\11-7\test.c

     文件       3021  2008-12-19 19:17  嵌入式Linux应用程序开发标准教程 源码\driver\11-7\test_drv.c

     文件        460  2008-12-19 19:17  嵌入式Linux应用程序开发标准教程 源码\driver\11-7\test_drv_load

     文件        165  2008-12-19 19:17  嵌入式Linux应用程序开发标准教程 源码\driver\11-7\test_drv_unload

     文件       1132  2008-12-19 19:17  嵌入式Linux应用程序开发标准教程 源码\file_io\6-3-1-1\copy_file.c

     文件        230  2008-12-19 19:17  嵌入式Linux应用程序开发标准教程 源码\file_io\6-3-1-1\Makefile

     文件       1166  2008-12-19 19:17  嵌入式Linux应用程序开发标准教程 源码\file_io\6-3-2-1\lock_set.c

     文件        429  2008-12-19 19:17  嵌入式Linux应用程序开发标准教程 源码\file_io\6-3-2-1\Makefile

     文件        474  2008-12-19 19:17  嵌入式Linux应用程序开发标准教程 源码\file_io\6-3-2-1\read_lock.c

     文件        495  2008-12-19 19:17  嵌入式Linux应用程序开发标准教程 源码\file_io\6-3-2-1\write_lock.c

     文件        244  2008-12-19 19:17  嵌入式Linux应用程序开发标准教程 源码\file_io\6-3-3-1\Makefile

     文件       2515  2008-12-19 19:17  嵌入式Linux应用程序开发标准教程 源码\file_io\6-3-3-1\multiplex_select.c

     文件        241  2008-12-19 19:17  嵌入式Linux应用程序开发标准教程 源码\file_io\6-3-3-2\Makefile

     文件       1821  2008-12-19 19:17  嵌入式Linux应用程序开发标准教程 源码\file_io\6-3-3-2\multiplex_poll.c

     文件        646  2008-12-19 19:17  嵌入式Linux应用程序开发标准教程 源码\file_io\6-4\reader\com_reader.c

     文件        304  2008-12-19 19:17  嵌入式Linux应用程序开发标准教程 源码\file_io\6-4\reader\Makefile

     文件       3057  2008-12-19 19:17  嵌入式Linux应用程序开发标准教程 源码\file_io\6-4\reader\uart_api.c

     文件        375  2008-12-19 19:17  嵌入式Linux应用程序开发标准教程 源码\file_io\6-4\reader\uart_api.h

     文件        712  2008-12-19 19:17  嵌入式Linux应用程序开发标准教程 源码\file_io\6-4\writer\com_writer.c

     文件        302  2008-12-19 19:17  嵌入式Linux应用程序开发标准教程 源码\file_io\6-4\writer\Makefile

............此处省略162个文件信息

评论

共有 条评论