添加链接描述
参考了这位大神的程序;

#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/fs.h>
#include <linux/init.h>
#include <linux/delay.h>
#include <linux/device.h>
#include <asm/uaccess.h>
#include <asm/irq.h>
#include <asm/io.h>#define DEV_NAME "led"/* led */
#define GPIO6_BASE_ADDR             0x120b6000
#define GPIO6_DIR_ADDR            ((GPIO6_BASE_ADDR) + (0x400))
#define GPIO6_DATA_OUT_ADDR       ((GPIO6_BASE_ADDR) + (0x000))
#define GPIO6_7_SET_DATA__ADDR    ((GPIO6_DATA_OUT_ADDR) + (0x200))volatile unsigned long *gpio6_dir = NULL;
volatile unsigned long *gpio6_dataout = NULL;
volatile unsigned long *gpio6_setdata = NULL;
/* led end */static int major = (-1); /* 初始化为无效值 */
static struct class *led_drv_class;static int led_drv_open(struct inode *inode, struct file *file)
{/* 将dir寄存器bit7置1:表示output功能 */*gpio6_dir |= (1<<7);return 0;
}static int led_drv_release(struct inode *pinode , struct file *pfile)
{/* 将data寄存器置1,表示输出高电平 *///*gpio6_setdata = (1<<7);return 0;
}static ssize_t led_drv_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos)
{char val;int ret;ret = copy_from_user(&val, buf, count);if(!ret){*gpio6_setdata = val;}return 0;
}static struct file_operations led_drv_fops = {.owner   = THIS_MODULE,.open    = led_drv_open,.release = led_drv_release,.write   = led_drv_write,
};/* 驱动入口函数 */
static int led_drv_init(void)
{major = register_chrdev(0, "led_drv", &led_drv_fops); // 注册, 告诉内核,返回值major为自动分配的主设备号led_drv_class = class_create(THIS_MODULE, "leddrv");device_create(led_drv_class, NULL, MKDEV(major, 0), NULL, DEV_NAME); /* insmod xxx后,会自动生成/dev/xyz设备,并且自动给该设备分配主设备号major *//* 映射寄存器地址 */gpio6_dir      = (volatile unsigned long *)ioremap(GPIO6_DIR_ADDR, 32);gpio6_dataout = (volatile unsigned long *)ioremap(GPIO6_DATA_OUT_ADDR, 32);gpio6_setdata = (volatile unsigned long *)ioremap(GPIO6_7_SET_DATA__ADDR, 32);return 0;
}/* 驱动出口函数 */
static void led_drv_exit(void)
{unregister_chrdev(major, "led_drv"); /* 卸载驱动程序,告诉内核 */device_destroy(led_drv_class, MKDEV(major, 0));class_destroy(led_drv_class);/* 删除映射关系 */iounmap(gpio6_setdata);iounmap(gpio6_dataout);iounmap(gpio6_dir);
}module_init(led_drv_init);
module_exit(led_drv_exit);MODULE_LICENSE("Dual BSD/GPL");

可以简单粗暴操作:
*gpio6_dir |= (1<<7);
*gpio6_setdata = 0xff; //高电平

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>/**  ledtest <dev> <on|off>*/
void print_usage(char *file)
{printf("Usage:\n");printf("%s <dev> <on|off>\n",file);printf("eg. \n");printf("%s /dev/leds on\n", file);printf("%s /dev/leds off\n", file);printf("%s /dev/led1 on\n", file);printf("%s /dev/led1 off\n", file);
}int main(int argc, char **argv)
{int fd;char* filename=NULL;char val;if(argc !=3){print_usage( argv[1]);//打印用法}filename = argv[1];fd = open(filename, O_RDWR);//打开dev/firstdrv设备文件if (fd < 0)//小于0说明没有成功{printf("error, can't open %s\n", filename);return 0;}if(!strcmp(argv[2], "on"))val = (1<<7);   //此处驱动的GPIO6_7属于第7个引脚,所以需要把bit7置1elseval = 0;write(fd, &val, 1);//操作LEDprintf("Set led GPIO to %d\n",val);close(fd);return 0;
}

Hi35xx GPIO在ko中设置相关推荐

  1. 【嵌入式07】寄存器映射原理详解,GPIO端口的初始化设置步骤

    本文主要介绍STM32F103系列芯片的地址映射和寄存器映射原理,GPIO端口的初始化设置步骤. 一.STM32F103系列芯片的地址映射和寄存器映射原理 1.什么是寄存器? 2.地址映射和寄存器映射 ...

  2. 了解GPIO端口的初始化设置三步骤LED流水灯C语言 寄存器方式编程实现

    文章目录 前言 一.地址映射.寄存器映射原理 二.GPIO端口的初始化设置 1.时钟配置 2.输入输出模式 3.最大速率设置 三.TM32F103C8T6用C语言 .寄存器方式实现LED灯的闪烁 原理 ...

  3. 在Dockerfile中设置G1垃圾回收器参数

    在Dockerfile中设置G1垃圾回收器参数 ENV JAVA_OPTS="\ -server \ -XX:SurvivorRatio=8 \ -XX:+DisableExplicitGC ...

  4. idea中设置指向源代码Scala

    1.到官网下载scala源代码 点击如下链接下载源码:http://www.scala-lang.org/download/all.html 选择需要的版本点击进行下载,我选择的是2.11.8版本,如 ...

  5. 转--Android如何在java代码中设置margin

    ========  3 在Java代码里设置button的margin(外边距)? 1.获取按钮的LayoutParams LinearLayout.LayoutParams layoutParams ...

  6. Android中设置TextView的颜色setTextColor

    tv.setTextColor(Color.parseColor("#FFFFFF")); tv.setTextColor(Color.WHITE); tv.setTextColo ...

  7. html 中设置样式方式,在html元素中设置css样式的方式是什么

    如果我们要在HTML元素中设置CSS样式,那么我们就需要在元素中设置"id" 和 "class"选择器. (推荐教程:CSS教程) 下面我们来分别说一下id选择 ...

  8. R语言ggplot2可视化:通过在element_text函数中设置ifelse判断条件自定义标签文本的显示格式:例如、粗体、斜体等

    R语言ggplot2可视化:通过在element_text函数中设置ifelse判断条件自定义标签文本的显示格式:例如.粗体.斜体等 目录

  9. seaborn使用violinplot函数可视化小提琴图、并在violinplot函数中设置inner参数来添加数据点显示数据的稠密程度

    seaborn使用violinplot函数可视化小提琴图.并在violinplot函数中设置inner参数来添加数据点显示数据的稠密程度(Seaborn violinplot with data po ...

最新文章

  1. 微软职位内部推荐-Sr. Dev Lead
  2. 处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”...
  3. A Mini Locomotive POJ - 1976(动态规划+思维)
  4. Thread.join()
  5. ZSKAME大白菜2013官网下载
  6. MySQL事件与定时器,mysql下存储过程与定时器
  7. 微信支付国庆消费数据出炉:门票交易增幅超8成 酒店行业交易增幅超7成
  8. java tcp 线程_java 网络协议(一)Tcp多线程服务器端编程
  9. mysql 主从同步不一致_为什么mysql会经常出现主从同步不一致的情况
  10. python实训day5
  11. C++ 不定参数(转)
  12. 朗沃20140414
  13. ajax post提交数据_第三十五天JavaScript中的ajax
  14. Week12(11月28日)
  15. Python实现8中常用排序算法
  16. SecureCRT上传下载位置
  17. Linux下的TCP测试工具
  18. ZJUT 2012校赛决赛-涂颜色
  19. 电脑卡顿?性能不足?一套连招榨干你的电脑!
  20. golang profiling

热门文章

  1. 如何用Pandas处理文本数据?
  2. KDD'20 Workshop 来了!学术竞赛,发表Paper,针对疫情设计隔离策略
  3. 50道练习实践学习Pandas!
  4. 考那么多试,拿那么高分,大模型们真的懂语言了吗?
  5. 马斯克蝉联美国CEO薪酬榜No.1,年入41亿,库克皮猜纳德拉加起来都没他高
  6. 用漫画了解 Linux 内核到底长啥样
  7. 那些为了学技术而离婚、私奔的大佬们运营的公众号有哪些?
  8. Linux期末复习题库(1)
  9. 机器视觉边缘检测算法详解
  10. 机器学习库Scikit-learn库使用总结.pptx