现在的位置: 首页 > 综合 > 正文

How to use the RTC driver

2013年08月30日 ⁄ 综合 ⁄ 共 3893字 ⁄ 字号 评论关闭

How to use the RTC driver

****************************************************************
1. Introducation
****************************************************************
ADSP21535 has one Real Time Clock RTC device, and the RTC driver
is designed as a standard Linux RTC driver.

The RTC device major/minor numbers:
major             minor
10                135

The RTC device name is /dev/rtc.

When the read function is called, the application is blocked
until the RTC interrupt is generated.

****************************************************************
2. system call
****************************************************************
The RTC device driver is designed as a standard Linux RTC
driver, and the following system calls are supported.

2.1 open: The standard open function call.
int open("/dev/rtc", int oflag, /* mode_t mode */...);

The open function is used to establish the connection between the RTC
device with a file descriptor.
- oflag:
  O_RDONLY   Open for reading only
  O_WRONLY   Open for writing only
  O_RDWR     Open for reading and writing

USAGE:
------
int fd;

fd = open("/dev/rtc", O_RDONLY, 0);
...
close(fd);

2.2 close: The standard open function call.
int close(int file_handler);

The close function is used to disconnect the RTC device with the relevant
file descriptor.

USAGE:
------
int fd;

fd = open("/dev/rtc", O_RDONLY, 0);
...
close(fd);

2.3 ioctl: the standard ioctl function call(refer to section 3).
int ioctl(int file_handler, int request, /* arg */...);

The ioctl command is used to configure the RTC device.

USAGE:
------
int fd;
struct rtc_time rtc_tm;
int ret;

fd = open("/dev/rtc", O_RDONLY, 0);
...
// the ioctl command RTC_RD_TIME is used to read the current timer.
// about the detail ioctl command, refer to section 3
ret = ioctl(rtc_fd, RTC_RD_TIME, &rtc_tm);
...
close(fd);

2.4 read:  the standard read function call.
ssize_t read(int file_handler, viod *buf, size_t nbytes);

In the RTC driver, the read function is used to wait for the RTC device interrupt.
When call the read function, the application is locked until a interrupt is generated.

USAGE:
------
int fd;
int ret;
struct rtc_time rtc_tm;
unsigned long data;

fd = open("/dev/rtc", O_RDONLY, 0);
ret = ioctl(fd, RTC_ALM_SET, &rtc_tm);
// call the read function to wait the Alarm interrupt
ret = read(fd, &data, sizeof(unsigned long));
...
close(fd);

****************************************************************
3. RTC deivce ioctl
****************************************************************
RTC_SWCNT_OFF: This ioctl does not need an argument, and it can
               be used to disable the RTC stop-watch interrupt.

RTC_SWCNT_ON:  This ioctl does not need an argument, and it can
               be used to enable the RTC stop-watch interrupt.

RTC_AIE_OFF:   This ioctl does not need an argument, and it can
               be used to disable the RTC alarm interrupt.   

RTC_AIE_ON:    This ioctl does not need an argument, and it can
               be used to enable the RTC alarm interrupt.    

RTC_UIE_OFF:   This ioctl does not need an argument, and it can
               be used to disable the RTC update interrupt.   

RTC_UIE_ON:    This ioctl does not need an argument, and it can
               be used to enable the RTC update interrupt.   

RTC_ALM_READ:  This ioctl needs one argument(struct rtc_time *),
               and it can be used to get the current RTC alarm
               parameter.   

RTC_ALM_SET:   This ioctl needs one argument(struct rtc_time *),
               and it can be used to set the RTC alarm.   

RTC_RD_TIME:   This ioctl needs one argument(struct rtc_time *),
               and it can be used to get the current RTC time.   

RTC_SET_TIME:  This ioctl needs one argument(struct rtc_time *),
               and it can be used to set the current RTC time.   

RTC_EPOCH_READ:This ioctl needs one argument(long *), and it
               can be used to get the current RTC epoch.   

RTC_EPOCH_SET: This ioctl needs one argument(long), and it can
               be used to set the current RTC epoch.   

RTC_SWCNT_SET: This ioctl needs one argument(long), and it can
               be used to set the current RTC stop-watch (the
               unit is minute).   

RTC_SWCNT_RD:  This ioctl needs one argument(long *), and it
               can be used to get the current RTC stop-watch
               (the unit is minute).   

****************************************************************
4. Caution
****************************************************************

 

抱歉!评论已关闭.