• 大小: 30KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-10
  • 语言: Java
  • 标签: Android  Linux  

资源简介

Android系统中上层UI是使用Java语言完成的,涉及到底层驱动的话,需要SO库(JNI层)的连接。所以针对LED控制,将从底层驱动、JNI层SO连接库和上层UI界面进行设计。 此处LED驱动程式采用动态编译,可随时进行修改、编译和载入驱动。但需要手动加载驱动和创建设备节点.

资源截图

代码片段和文件信息

/* linux/drivers/dmatek/pad4412_led/led.c
 *
 * DMATEK
 * lyp
 * 2016.04.12
 *
 */

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#include 
#include 
#include 

#include 



#define LED_ON  1
#define LED_OFF 0

#define LED_MAJOR 230
#define led_name “led“

#define EXYNOS4412_baseADDR    0x11400000
#define EXYNOS4412_GPK3CON    (* (volatile unsigned int *)0x114000A0)//(EXYNOS4412_baseADDR + 0xA0)  
#define EXYNOS4412_GPK3DAT   (* (volatile unsigned int *)0x114000A4)//(EXYNOS4412_baseADDR + 0xA4)

#define GPIO_GPK3_LED18       EXYNOS4_GPK3(3)     //led 18
#define GPIO_GPK3_LED19       EXYNOS4_GPK3(4)     //led 19



static void led_off(int led_num)
{

//int gpk3dat;

//gpk3dat = __raw_readl(EXYNOS4412_GPK3DAT);
switch(led_num)
{
case 1: //led1
//gpk3dat &=~(1<<3); //D18
gpio_direction_output(GPIO_GPK3_LED180);
break;
case 2: //led2
//gpk3dat &=~(1<<4); //D19
gpio_direction_output(GPIO_GPK3_LED190);
break;
default:
break;
}
//__raw_writel(gpk3datEXYNOS4412_GPK3DAT);

}

static void led_on(int led_num)
{

//int gpk3dat;

//gpk3dat = __raw_readl(EXYNOS4412_GPK3DAT);//S3C_GPBDAT
switch(led_num)
{
case 1: //led1
//gpk3dat |= (1<<3); //D18
gpio_direction_output(GPIO_GPK3_LED181);
break;
case 2: //led2
//gpk3dat |= (1<<4); //D19
gpio_direction_output(GPIO_GPK3_LED191);
break;
default:
break;
}
//__raw_writel(gpk3datEXYNOS4412_GPK3DAT);
}

static ssize_t led_read(struct file *file char __user *buf size_t count loff_t *offset)
{
return count;
}

static ssize_t led_write(struct file *file const char __user *buf size_t count loff_t *offset)
{
return 0;
}


static int led_open(struct inode *inode struct file *file)
{
printk(“led_open +++++++1\n“ );

gpio_direction_output(GPIO_GPK3_LED180);
gpio_direction_output(GPIO_GPK3_LED190);

/*unsigned int val;
val = readl(EXYNOS4412_GPK3CON);
val &= ~ (0xff <<0);
val |= (1 << 12)|(1<<16);
writel(val EXYNOS4412_GPK3CON); //将GPK3和GPK4设置为输出模式

val = readl(EXYNOS4412_GPK3DAT);
val &= ~ ((1 <<3)|(1<<4));
writel(val EXYNOS4412_GPK3DAT); //将GPK3和GPK4置为低*/
printk(“led_open -------1\n“ );
return 0;

}

/* release command for led device file */
static int led_close(struct inode *inode struct file *file)
{
// printk(“led_close +++1\n“);

return 0;
}

/* ioctl command for led device file */


//static int led_ioctl(struct

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        4533  2016-04-13 09:42  led.c
     文件       63792  2016-04-12 17:53  led.ko
     文件         402  2016-04-12 10:09  Makefile

评论

共有 条评论