Root/cap_keyboard/src/user_space/jz_test_gpio.c

1/*
2  JZ47xx test gpio
3
4  Copyright (C) 2010 Andres Calderon andres.calderon@emqbit.com
5                          Carlos Camargo cicamargoba@unal.edu.co
6                                 
7This program is free software; you can redistribute it and/or modify
8it under the terms of the GNU General Public License as published by
9the Free Software Foundation; either version 2 of the License, or
10(at your option) any later version.
11
12This program is distributed in the hope that it will be useful,
13but WITHOUT ANY WARRANTY; without even the implied warranty of
14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15GNU General Public License for more details.
16
17You should have received a copy of the GNU General Public License
18along with this program; if not, write to the Free Software
19Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
20
21#include <stdio.h>
22#include <unistd.h>
23
24#include "jz47xx_gpio.h"
25
26//#define TEST_PORT JZ_GPIO_PORT_C
27//#define TEST_PIN 17
28
29int
30main (int argc,char *argv[])
31
32{
33  int TEST_PORT, TEST_PIN;
34
35  if(argc != 3){
36    fprintf(stderr,"\nUsage: %s TEST_PIN_PORT(A=0, B=1, C=2, D=3) TEST_PIN \n",argv[0]);
37  }
38
39  TEST_PORT = ;
40  TEST_PIN = ;
41  JZ_PIO *pio = jz_gpio_map (TEST_PORT);//declara un puntero que mapea la dirección fisica del controlador que está dentro del chip. (mapeo de la memoria fisica)
42
43  if (!pio)
44    return -1;
45
46  jz_gpio_as_output (pio, TEST_PIN);//define el pin, para que sea una salida, pasa la direccion de memoria en donde está el controlador y el pin. Está declarado en el archivojz47xx_gpio.c la función as_func es similar a la que se asigna en el kernel. Sin necesidad del driver. (Espacio de usuario). Utilizan interfaces diferentes. Los registros tienen que moverse físicamente. En el espacio de usuario es más complicado y pueden tener mucha latencia. En el kernel se ejecuta sin tanta latencia.
47
48//mirar diferencias entre espacio de kernel y espacio de usuario.
49
50
51//otra forma es hacerlo por parte de un intérprete.
52
53// tener una librería básica que haga las funciones y a través de un lenguaje de muy alto nivel se puede interpretar los comandos...
54
55
56//Lenguaje -LUA-
57/*
58intérprete de alto nivel desarrollado por unos brasileros.
59
60*/
61  int tg = 1;
62
63  while (1)
64    {
65      jz_gpio_out (pio, TEST_PIN, tg);
66      printf ("[%d]", jz_gpio_get_pin (pio, TEST_PIN));
67      fflush (stdout);
68      usleep (500 * 1000);
69      tg = !tg;
70    }
71  return 0;
72}
73

Archive Download this file

Branches:
master



interactive