GPIO控制一个外部接口驱动
来源:互联网 发布:机房的网络结构示意图 编辑:程序博客网 时间:2024/05/16 07:12
GPIO控制一个外部接口驱动
1.电路图
实现UART_EN高电平导通
上图为链接UART_EN链接P1的A43.
由电路图可知,UART_EN链接的是6410处理器的GPH0接口。
2.驱动程序为:
#include <linux/miscdevice.h> #include <linux/kernel.h> #include <linux/module.h> #include <linux/init.h> #include <linux/fs.h> #include <linux/pci.h> #include <linux/gpio.h> #define DEVICE_NAME "uart_en"static int uart_en_ioctl(struct file *file,unsigned int cmd){switch(cmd){case 0:gpio_direction_output(S3C64XX_GPH(0),0);printk("down~~~~~~~~~~~~ 0\n");return 0;break;case 1:gpio_direction_output(S3C64XX_GPH(0),1);printk("up~~~~~~~~~~~~~~ 1\n");return 0;break;default:return -EINVAL;}}static struct file_operations dev_fops = {.owner = THIS_MODULE,.unlocked_ioctl = uart_en_ioctl,};static struct miscdevice misc = {.minor = MISC_DYNAMIC_MINOR,.name = DEVICE_NAME,.fops = &dev_fops,};static int __init dev_init(void){int ret;gpio_request(S3C64XX_GPH(0),"gpio_uart_en");gpio_direction_output(S3C64XX_GPH(0),0);ret = misc_register(&misc);printk(DEVICE_NAME "\tinitialized\n");return ret;}static void __exit dev_exit(void){misc_deregister(&misc);}module_init(dev_init);module_exit(dev_exit);MODULE_LICENSE("GPL");MODULE_AUTHOR("BQL");驱动Makefile:
obj-m:=uart_en.oCURRENT_PATH:=$(shell pwd)ARM_LINUX_KERNEL:=/opt/中控硬件驱动/source/linux-2.6.38all:$(MAKE) -C $(ARM_LINUX_KERNEL) SUBDIRS=$(CURRENT_PATH) modulesclean:rm -rf *.cmd *.o *.ko *.mod.c *.symvers *.order
3.测试程序为:
#include <stdio.h>#include <stdlib.h>#define UART_EN "/dev/uart_en"int main(int argc,char **argv){int fd;fd = open(UART_EN,0);if(fd<0){printf("can't open /dev/uart_en!");exit(0);}if(!(strcmp(argv[1],"up"))){ioctl(fd,1);}else if(!(strcmp(argv[1],"down"))){ioctl(fd,0);}else{exit(0);}exit(0);}
测试Makefile:
all:arm-linux-gcc test_uart_en.c -o test_uart_enclean:rm -rf *.o test_uart_en
挂接在/proc上的GPIO控制一个外部接口驱动
http://blog.csdn.net/taozi343805436/article/details/8478343
- GPIO控制一个外部接口驱动
- 挂接在/proc上的GPIO控制一个外部接口驱动
- 谈一个GPIO驱动
- 6410 gpio控制及接口
- 控制单个GPIO端口的驱动
- LINUX之GPIO驱动及接口使用
- Linux 驱动中GPIO接口解析
- GPIO驱动
- gpio驱动
- tq2440 GPIO口控制驱动的编写中的一些问题
- 基于设备树的GPIO驱动(通过系统节点控制)
- [RK3288][Android6.0] 调试笔记 --- 通用GPIO驱动控制LED
- [Linux驱动炼成记]02-用户空间控制GPIO
- GPIO控制
- GPIO驱动及设备模型接口使用讲解
- 使用GPIO控制SPI接口的AD芯片 (转)
- 使用GPIO控制SPI接口的AD芯片//来源不详
- 通过Raspberry Pi(树莓派)的GPIO接口控制发光二极管
- eclipse中jni调试本地C++代码步骤
- android中sqlite3的一些操作命令
- Android 开源3D游戏引擎汇总
- blastall的使用方法,以及输出文件的格式记录
- 类jQuery selector的控件查询iQuery开源类库介绍
- GPIO控制一个外部接口驱动
- Ubuntu 修改myeclipse背景色
- 认识保护模式
- UNDERSTANDING HTK ERROR MESSAGES
- 朋友无言
- C#执行oracle返回游标类型的存储过程
- Android自动化测试在多种屏幕下的注意事项
- jquery $(document).ready() 与window.onload的区别
- 图像拼接 opencv