IO Device:SI852DIO

From LEXWiKi

Revision as of 17:37, 3 June 2008 by Denny (Talk | contribs)
Jump to: navigation, search


The Sample code source you can download form

si852dio.c

The Sample code introduction

This sample code just support the our FI/CI/MI/SI 852X Main board DIO/WDT function,about function we used which you can see more detail information in Linux-IO Programming

The Sample code Demo

/* si852dio.c:example of CI852X DI/O
 * Compile with `gcc -O2 -o example si852dio.c',
 * and run as root with `./example'.
 * more information in http://www.pluto.it/files/ildp/HOWTO/IO-Port-Programming/IO-Port-Programming.html*/
 
#include <stdio.h>
#include <unistd.h>
#include <asm/io.h>
 
#define SI852X_WDTE 0x600 //SI852X,WatcherDog Enable IO space port ,Support Hex value 0x00~0xff 
#define SI852X_WDTD 0x604 //SI852X,WatcherDog Disable IO space port. 
#define SI852X_DI   0x608 //SI852X,DI Function IO space port.
#define SI852X_DO   0x60C //SI852X,DO Function IO space port.
 
int main()
{
 // Access to the ports 
 iopl(3);
 if (ioperm(SI852X_WDTE, 1, 1)) {perror("ioperm"); exit(1);}
 if (ioperm(SI852X_WDTD, 1, 1)) {perror("ioperm"); exit(1);}
 if (ioperm(SI852X_DI  , 1, 1)) {perror("ioperm"); exit(1);}
 if (ioperm(SI852X_DO  , 1, 1)) {perror("ioperm"); exit(1);}
  
 //The DO Function which set the data value (D0-7) for the SI852X_DO port all to low (0) 
 outb(0, CI852X_DO);
  
 // Sleep for a while (100 ms) 
 usleep(100000);
  
 //The DI function which read from SI852X_DI port status then display a result 
 printf("status: %d\n", inb(SI852X_DI));
 
 // Enable the WatchDog timer of the SI852X_WDTE 
 outb(10, CI852X_WDTE); // the Action will reboot after 10 secord 
 
 // Disable the WatchDog timer of the CI852X_WDTD 
 // inb(CI852X_WDTD);
 
  exit(0);
}
 
/* end of si852dio.c */
Personal tools