GM8180_gpio内核模块调试-阿里云开发者社区

开发者社区> 云计算> 正文
登录阅读全文

GM8180_gpio内核模块调试

简介: <div class="bct fc05 fc11 nbw-blog ztag"> <p>#include &lt;stdio.h&gt;<br>#include &lt;sys/types.h&gt;<br>#include &lt;sys/stat.h&gt;<br>#include &lt;fcntl.h&gt;<br>#include &lt;sys/ioctl.h&gt;<br>#i

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <stdlib.h>
#include "gpio.h"

struct gpio_params gmm;
int gpid =-1;
void main(int argc,char *argv[])
{
 char filename[20];
        int i,k;

 gpid = open("/dev/gpio", O_RDWR);
 if (!gpid)
 {
     printf("GPIO initial fail\n");
  
 }

 gmm.ctrl_pin = 0xc0; // choose GPIO7 pin  
 gmm.data_direct = 0xc0; //set as output pin 
 if(ioctl(gpid, GPIO_SET_DATA_DIRECT,&gmm))    
  printf("GPIO_SET_DATA_DIRECT failed\n");

        for(i=0;i<10;i++)
        {
    gmm.data_out = i%2==0?0x80:0x40; 
    if(ioctl(gpid, GPIO_SET_DATA_OUTPUT,&gmm))    
   printf("GPIO_SET_DATA_OUTPUT failed\n");
         printf("%d\n",i);
  usleep(500000);

         }

 close(gpid);
 return ;

}

 

//gpio.h

#define _GM8180_Platform
struct gpio_params {
 u_int group;
 u_int  ctrl_pin; 
 u_int  data_out; 
 u_int  data_in; 

 u_int  int_clear;  
 u_int  data_direct;   
 u_int  int_enable;   
 u_int  int_trigger;

 u_int  int_both;   
 u_int  int_riseneg;   
} gpio_params;
//Modify By Ken.Hsieh
#ifdef _GM8120_Platform
#define GPIO_SET_DATA_OUTPUT  3
#define GPIO_READ_DATA_INPUT  4 
#define GPIO_SET_DATA_DIRECT 5
#define GPIO_SET_INT            6
#define GPIO_SET_INT_FUNC       7
#define GPIO_CLEAR_INT          8
#endif

#ifdef _GM8180_Platform
#define IOC_MAGIC  'g'

#define GPIO_SET_DATA_OUTPUT    _IOWR(IOC_MAGIC, 8, gpio_params)
#define GPIO_READ_DATA_INPUT    _IOWR(IOC_MAGIC, 9, gpio_params)
#define GPIO_SET_DATA_DIRECT    _IOWR(IOC_MAGIC, 10, gpio_params)
#define GPIO_SET_INT_FUNC       _IOWR(IOC_MAGIC, 11, gpio_params)
#define GPIO_SET_INT            _IOWR(IOC_MAGIC, 12, gpio_params)
#define GPIO_CLEAR_INT          _IOWR(IOC_MAGIC, 13, gpio_params)
#endif

 

//makefile

LINUX_SRC := /usr/src/arm-linux-2.6/linux-2.6.14-fa
CC = arm-linux-gcc
STRIP =arm-linux-strip
INCLUDE = -I$(LINUX_SRC)/include/
INCLUDE += -I/usr/src/arm-linux-2.6/module/GPIO

TARGET1=gpio
all:
 $(CC) $(INCLUDE) gpio.c -o $(TARGET1)
 $(STRIP) $(TARGET1) 
clean:
 rm -f gpio 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: