将驱动放入/extdrv中编译

部分驱动如下:

#include <linux/module.h>

#include <linux/miscdevice.h>
#include <linux/init.h>
#include <linux/slab.h>
#include <linux/i2c.h>
#include <linux/string.h>
#include <linux/rtc.h>
#include <linux/bcd.h>
#include <linux/kernel.h>
#include <linux/version.h>
#include <linux/module.h>
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/fcntl.h>
#include <linux/mm.h>
#include <linux/miscdevice.h>
#include <linux/proc_fs.h>
#include <linux/fs.h>
#include <linux/slab.h>
#include <linux/smp_lock.h>
#include <linux/init.h>
#include <asm/uaccess.h>
#include <asm/hardware.h>
#include <asm/io.h>
#include <asm/system.h>
#include <linux/interrupt.h>
#include <linux/ioport.h>
#include <linux/string.h>
#include <linux/list.h>
#include <asm/semaphore.h>
#include <asm/delay.h>
#include <linux/timer.h>
#include <linux/delay.h>
#include <linux/proc_fs.h>
#include <linux/poll.h>
#include <asm/hardware.h>
#include <asm/bitops.h>
#include <asm/uaccess.h>
#include <asm/irq.h>
#include <linux/moduleparam.h>
#include <linux/ioport.h>
#include <linux/interrupt.h>
#include "gpio_i2c.h"
#include "gpio_i2c1.h"
#include "rtc-ds1339.h"
#define ENABLE_TEST

#define DS1339_BIT_CENTURY 0x80/* in REG_MONTH */

static unsigned char rtc1339_byte_read(unsigned char chip_addr, unsigned char addr);

static unsigned char rtc1339_byte_write(unsigned char chip_addr,
                       unsigned char addr, unsigned char data) 
{
    #ifdef ENABLE_TEST
    unsigned char reg_val;
    #endif
    
    gpio_i2c_write(chip_addr, addr, data);  
    #ifdef ENABLE_TEST
    reg_val = rtc1339_byte_read(chip_addr, addr);
    if(reg_val != data)
    {
        printk("ec6214_byte_write error: addr:%x, reg:%x, val:%x, read:%x\r\n", chip_addr, addr, data, reg_val);
    }
    #endif
    return 0;
}

static unsigned char rtc1339_byte_read(unsigned char chip_addr, unsigned char addr)
{   
    unsigned char reg_val;
    reg_val = gpio_i2c_read(chip_addr, addr);
    return reg_val;
}

///////////////////////////////////////////////////////////////////////////////
//***********open the ds1339*****************************************//
int ds1339_open(struct inode * inode,struct file *file)
{
 return 0;
}
///////////////////////////////////////////////////////////////////////////////
//***********close the ds1339*****************************************//
int ds1339_close(struct inode * inode,struct file *file)
{
 return 0;
}

... ...

示例如下:

#include <stdio.h>
#include <stdlib.h> /* getenv() */
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <error.h>
#include <sys/time.h>
#include <unistd.h>
#include <time.h>
#include <getopt.h>
#include <linux/rtc.h>
#include "rtc-ds1339.h"

int Init()
{
int fd;
//open device file
fd = open("/dev/rtc-ds1339",O_RDWR);
if(fd < 0)
{
printf("device open fail\n");
return -1;
}

return fd;
}

int main(int agc,char **agv)
{
int fd,ch;
struct rtc_time 
{
  unsigned int tm_sec;
  unsigned int tm_min;
  unsigned int tm_hour;
  unsigned int tm_wday;
  unsigned int tm_date;
  unsigned int tm_month;
  unsigned int tm_year;
};
struct rtc_time tm;

tm.tm_year=2013;
tm.tm_month=03;
tm.tm_date=14;
tm.tm_wday=4;
tm.tm_hour=16;
tm.tm_min=18;

fd=Init();
if (fd>0)
{
if (ioctl(fd,CMD_SET_TIME,&tm)<0)
printf ("ioctl eo\n");
while(1)
{
ioctl(fd,CMD_GET_TIME,&tm);
printf("%02d.%02d.%02d,%01d,%02d:%02d:%02d\n"
,tm.tm_year,tm.tm_month,tm.tm_date,tm.tm_wday,tm.tm_hour,tm.tm_min,tm.tm_sec);
sleep(1);
}
close(fd);
}

return 0;
}

运行结果如下:

最新文章

  1. Asp.net core 通过Models 生成数据库的方法
  2. html中获取图片的真实尺寸
  3. poj3186 Treats for the Cows(区间)
  4. [转]Java Spring的Ioc控制反转Java反射原理
  5. xshell 远程连接Linux
  6. onethink对二维数组结果集进行排序
  7. 图片上传之FileAPI与NodeJs
  8. Dynamics CRM 依赖组件类型为应用程序功能区导致的无法删除实体问题的解决方法
  9. linux运维工作内容及岗位要求
  10. 吴恩达机器学习笔记21-正则化线性回归(Regularized Linear Regression)
  11. keras训练和保存
  12. 直接修改java的war包
  13. [转]Idea2016 使用Maven配置简单Web项目(受益比较多的一篇)
  14. android stuido - 关闭单词拼写检查
  15. thinkphp 3.2跟3.1 区别
  16. 状态栏,ActionBar,工具栏高度调整
  17. Python的第三方模块安装
  18. requirejs——基础
  19. FlaskWeb开发从入门到放弃(二)
  20. 【BZOJ 1592】[Usaco2008 Feb]Making the Grade 路面修整 dp优化之转移变状态

热门文章

  1. sublime Text 3 使用插件追踪函数
  2. CSS学习(二)- 有关 hasLayout 和 BFC
  3. 编译包中的 Servlet
  4. IDEA15入门常用设置
  5. hdu 1534(差分约束+spfa求最长路)
  6. Android Studio Error -- Could not create the Java Virtual Machine
  7. Activity四种启动方式
  8. javaScript Number对象
  9. flex 均分铺满
  10. /proc/kcore