gpio_set_value(port_num,0/1) 一般只是在这个GPIO口的寄存器上写上某个值,至于这个端口是否设置为输出,它就管不了! 而gpio_direction_output (port_num,0/1),在某个GPIO口写上某个值之后,还会把这个端口设置为输出模式. 因此,有人也许就会建议,把gpio_set_value这个函数直接去掉不用,是否可以,显然是可以的. 系统开发人员在要结合这两者来使用,以便提高效率. 一般某个端口设置好了输入与输出模式后,最好不要经常变动. 首先…
在Linux驱动中常常会碰到gpio_set_value(port_num,0/1)或gpio_direction_output (port_num,0/1) 这两者有什么关系呢gpio_set_value(port_num,0/1) 一般只是在这个GPIO口的寄存器上写上某个值,至于这个端口是否设置为输出,它就管不了!而gpio_direction_output (port_num,0/1),在某个GPIO口写上某个值之后,还会把这个端口设置为输出模式. 因此,有人也许就会建议,把gpio_s…
一.驱动源码 #include <linux/module.h> #include <linux/kernel.h> #include <linux/fs.h> #include <linux/init.h> #include <linux/delay.h> //#include <asm/irq.h> //#include <mach/regs-gpio.h> //#include <mach/hardware.h…
关键词:Android  linux hrtimer 蜂鸣器  等待队列 信号量 字符设备 平台信息:内核:linux3.4.39 系统:android/android5.1平台:S5P4418  作者:庄泽彬(欢迎转载,请注明作者) 邮箱:2760715357@qq.com 程序描述:本文控制的设备是无源蜂鸣器,由于无源蜂鸣器是需要产生一定的频率的PWM才能够控制蜂鸣器,不像有源蜂鸣器,只需要提供高低电平就可以控制蜂鸣器.linux内核普通的定时器,由于具有一定的局限性,不能达到纳秒级别的定时…
首先来看s3c_gpio_cfgpin(); int s3c_gpio_cfgpin(unsigned int pin, unsigned int config) { struct s3c_gpio_chip *chip = s3c_gpiolib_getchip(pin);//得到对应GPIO结构体首指针,里面包含了该GPIO的各种参数 unsigned long flags; int offset; int ret; if (!chip) return -EINVAL; offset = p…
平台简介 开发板:TQ2440 (NandFlash:256M  内存:64M) u-boot版本:u-boot-2015.04 内核版本:Linux-3.14 作者:彭东林 邮箱:pengdonglin137@163.com 摘要 这篇博客的目的是简要分析两种spi驱动的实现,一种是利用Samsung的S3C2440自带的硬件SPI控制器,另一种是利用Linux内核已经写好的用GPIO模拟SPI时序,实现一个软件SPI控制器.操作的外设是韦东山的SPI视频教程中提供的OLED模块,同时分享一下…
本文转载自:http://blog.sina.com.cn/s/blog_a6559d9201015vx9.htmlG #include <linux/gpio.h> // 标准 GPIO_API    int gpio_request(unsigned gpio, const char *label); 获得并占有 GPIO port 的使用权,由参数 gpio 指定具体 port,非空的lables指针有助于诊断.主要是告诉内核这地址被占用了.当其它地方调用同一地址的gpio_reques…
/***************************************************************** * gpio irq * * 一直以来都没了解过gpio的irq,如何使用,今天正好了解下. * 本文从内核和应用层分析gpio的irq,并写验证程序. * * 本文部分程序内容源自以下链接,并自己更改进行验证.验证平台freescal imx6. * http://blog.ittraining.com.tw/2015/05/raspberry-pi-b-pi2…
控制GPIO_1_28的输出: #define MY_BOMB_GPIO       IMX_GPIO_NR(1, 28) 配置为输出方式: gpio_direction_output (MY_BOMB_GPIO,0); 设置电平状态 gpio_set_value(MY_BOMB_GPIO,1); 读取电平状态 tem=  gpio_get_value(MY_BOMB_GPIO);…
S3C6410的GPIO引脚相对来说比较多,而且大部分引脚都具有多重复用功能,如何在linux上用最简单的方式来控制GPIO这需要我们好好研究一下底层的代码了,其实方法有很多种,鉴于在操作系统端控制GPIO并不像控制传统的单片机那样. 这里我将提及一种方法来讲述,这种方法也是我至今看到最简单的方法 首先我们打开linux-3.0.1\arch\arm\plat-samsung\include\plat下gpio-cfg.h这个头文件,仔细浏览后发现,我们可以使用的函数: 1.设置单一io口 in…
嵌入式Linux驱动开发日记 主机硬件环境 开发机:虚拟机Ubuntu12.04 内存: 1G 硬盘:80GB 目标板硬件环境 CPU: SP5V210 (开发板:QT210) SDRAM: 512M  (4片K4T1G164Q ) Nand flash: 512M (K9F4G08) 以太网芯片: SMSC LAN9220 工具介绍 仿真器: 暂无 电缆: 串口线,USB线 Windows 操作系统软件环境 ADS编译工具: 暂无 仿真器软件:暂无 调试软件: 终端(ADB).eclipse…
转自:http://blog.csdn.net/mirkerson/article/details/8464290 一 概述 Linux内核中gpio是最简单,最常用的资源(和 interrupt ,dma,timer一样)驱动程序,应用程序都能够通过相应的接口使用gpio,gpio使用0-MAX_INT之间的整数标识,不能使用负数,gpio与硬件体系密切相关的,不过linux有一个框架处理gpio,能够使用统一的接口来操作gpio.在讲gpio核心(gpiolib.c)之前先来看看gpio是怎…
本文记录添加imx6 otg host支持的过程. 参考链接 http://www.cnblogs.com/helloworldtoyou/p/6108560.html https://community.nxp.com/thread/328351 https://community.nxp.com/thread/305646 https://community.nxp.com/thread/387529 设备配置 配置引脚复用 这里遇到的问题主要是USB OTG POWER的引脚不能输出高电平…
经过几天的学习,终于linux驱动的基本框架弄清楚了...真的很艰辛,,,不过终于还是熬过来了,虽然还是最基础的,,, 今晚也完成了我第一个linux驱动,,,心里还是有点小兴奋的,哈哈O(∩_∩)O 直接上驱动源程序吧::: 我的开发板是Smart210,根据原理图,IO口输出0 led亮,输出1 led灭 #include <linux/kernel.h> #include <linux/module.h> #include <linux/miscdevice.h>…
/************************************************************************ * I.MX6 ov5640 camera * 说明: * 记录ov5640摄像头的设备注册方式. * * 2016-6-8 深圳 南山平山村 曾剑锋 ***********************************************************************/ 一.设备注册: cat arch/arm/mach-m…
Linux 提供了GPIO 操作的 API,具体初始化及注册函数在 driver/gpio/lib_gpio.c 中实现.   #include    int gpio_request(unsigned gpio, const char *label); 获得并占有 GPIO port 的使用权,由参数 gpio 指定具体 port.非空的label指针有助于诊断.主要告诉内核这块地址被占用了.当其他地方调用同一地址的gpio_request就会报告错误,该地址已经被申请.在/proc/mem有…
/************************************************************************** * I.MX6 driver goto 使用 * 说明: * 在绝大多数地方,我们都被告诉尽可能不要用goto,甚至都没学过goto,但 * 这种语法却在内核驱动中普遍使用. * * 2016-4-13 深圳 南山平山村 曾剑锋 ***********************************************************…
测试环境:  CPU: AT91SAM9X35      Linux: Atmel提供的linux-at91-linux4sam_5.3 (Linux-4.1.0) 转载请注明: 凌云物网智科嵌入式实验室: http://iot-yun.com/     郭文学<guowenxue@gmail.com> 下面的这个驱动文件at91_keyled.c在Atmel提供的linux-at91-linux4sam_5.3下实现了按键控制LED的亮灭过程,通过这个简单的驱动描述了基于DTS的驱动开发模型…
原文网址:http://tc.chinawin.net/it/os/article-2512b.html 一 概述 Linux內核中gpio是最簡單,最常用的資源(和interrupt ,dma,timer一樣)驅動程序,應用程序都能夠通過相應的接口使用gpio,gpio使用0-MAX_INT之間的整數標識,不能使用負數,gpio與硬件體系密切相關的,不過linux有一個框架處理gpio,能夠使用統一的接口來操作gpio.在講gpio核心(gpiolib.c)之前先來看看gpio是怎麼使用的 二…
在后面的驱动学习中,需要对GPIO进行一系列的操作,了解这些引脚操作有助于编码的效率. 一.配置GPIO S3C6410要使用其引脚时,需要对其进行配置,如配置为输入/输出/中断等功能,根据芯片手册来配置,所用的这些配置工作都在Gpiolib.c(/arch/arm/plat-s3c64xx)中完成,当然,你在起步阶段可以用基本的__raw_readl和__raw_writel来操作,了解其基本的原理. 1. 配置为上拉/下拉 arm芯片一般都可以内部配置为上拉或下拉,如此就不需要外部接上拉电阻…
欢迎转载,转载时需保留作者信息,谢谢. 邮箱:tangzhongp@163.com 博客园地址:http://www.cnblogs.com/embedded-tzp Csdn博客地址:http://blog.csdn.net/xiayulewa   是平时自己word离线做笔记的,当发在网上才发现写的太宏观,不怎么容易看懂,今后做笔记会注意多贴代码. 1.   GPIO 1.1.  地址映射 如上所述: #define S3C24XX_VA_GPIO             ((S3C24XX…
[分享]iTOP4412开发板-Bluetooth移植文档 最近须要把Bluetooth移植到iTOP-4412 开发平台.查阅了相关资料,经过一段时间的研究.调试,最终成功的将蓝牙功能移植到了开发板上面.这里笔者记录移植过程及注意事项,方便以后工作须要. iTOP-4412开发板的Bletooth模块与板卡之间的连接採用UART接口.Bletooth硬件模块使用的是MTK的MT6620芯片,MTK提供了Android4.0及Android4.4的driver, Porting Guid,有了这…
1.NFC基本概念: NFC 又称为近场通信,是一种新兴技术,可以在彼此靠近的情况下进行数据交换,是由非接触式射频识别(RFID) 及互连互通技术整合演变而来,通过单一芯片集成感应式读卡器: NFC有效通讯距离一般不超过10厘米,其传输速度有106 Kbit/秒.212 Kbit/秒或者424 Kbit/秒三种. 2.NFC的工作模式: 读卡器模式(Reader / Writer Mode) 仿真卡模式(Card Emulation Mode) 点对点模式(P2P Mode) 读卡器模式: 读卡…
点击打开链接 daily buildhttp://android-ci-platform.cnbj.sonyericsson.net/job/daily_build_jb-mr2-yukon/DL-CNBJ-TianChi-SWCM: tianchi gina jb 的 CM 一. msm8226-tianchi_dsds.dtsi; msm-pm8226.dtsi 二.. Audio Jack   NC 和 NO的选择改成了dts里面设置   @kernel/arch/arm/boot/dts…
由于安卓系统比较复杂,开发中会发中会碰见各种小问题,在此做一些记录,只要觉得有必要就会添加进来. 1.触屏鼠标模式和触屏模式 开发android4.3高通400平台时,用atmel_max 640T作为触屏,很奇怪的问题,调好驱动后,系统运行的效果,居然跟鼠标一样,相对运动,网上查询资料几乎没有,大家都很懒啊!查到一个相关的文章,不过转载的多,已不知道到底谁写的了. android4.0与2.3版本的触摸屏驱动调试注意 http://blog.sina.com.cn/s/blog_6a16c0a…
在以前的文章中,有一篇 基于ARM-contexA9-Linux驱动开发:如何获取板子上独有的ID号 在那篇文章中,具体可以参考.那时候我使用了简单的字符设备驱动框架,最终的ID号通过read方法可将ID读取出来,但是,这样做就太麻烦啦,有没有更简单的方法呢?其实有,这种方法称作IO地址的映射,而今天我们要说的是IO地址的动态映射方法,静态映射就太简单了,直接调用相应的接口,配置相应的寄存器,设置状态就可以实现.接下来看看驱动代码: #if 0 . io地址: . 静态映射: //这个头文件与平…
”通用输入/输出口”(GPIO)是一个灵活的由软件控制的数字信号.他们可由多种芯片提供,且对于从事嵌入式和定制硬件的Linux开发者来说是比较熟 悉.每个GPIO都代表一个连接到特定引脚或球栅阵列(BGA)封装中“球珠”的一个位.电路板原理图显示了GPIO与外部硬件的连接关系.驱动可以编写 成通用代码,以使板级启动代码可传递引脚配置数据给驱动. 片 上系统 (SOC) 处理器对GPIO有很大的依赖.在某些情况下,每个非专用引脚都可配置为GPIO,且大多数芯片都最少有一些GPIO.可编程逻辑器件(…
实现 GPIO 扩展,先弄清楚“复用”的概念,将调用这些 GPIO 的驱动去掉配置,重新编译,加到自己的驱动中,就可以实现扩展的 GPIO 的输入和输出.另外必须要先看文档“迅为iTOP-4418开发板和6818开发板-驱动-GPIO 输入输出和例程_V1.X”.1 GPIO 扩展的内核配置在底板上,引出的扩展口有 J6(camera 口),J38(GPIO/CAN/485),另外如果自己做底板,假如不使用 WIFI 等模块,还可以将 WIFI 等模块的 IO 口扩展成 GPIO.这里只介绍 J…
gpio调试的方式有很多,linux3.0以上ARM架构的处理器基本上都采用了DTS的方式,在linux3.0可以通过获取sysfs的方式来获取gpio状态: sysfs文件系统的建立可以参照下面的博客:http://www.cnblogs.com/linhaostudy/p/8377895.html 一.GPIO的调试方法: 在Linux下,通过sysfs,获取gpio状态,也可以操作gpio. 1.获取gpio状态,实质上就是调用show函数 cd /sys/kernel/debug/ ca…
转自:http://blog.csdn.net/tommy_wxie/article/details/9427047 一 概述 Linux内核中gpio是最简单,最常用的资源(和 interrupt ,dma,timer一样)驱动程序,应用程序都能够通过相应的接口使用gpio,gpio使用0-MAX_INT之间的整数标识,不能使用负数,gpio与硬件体系密切相关的,不过linux有一个框架处理gpio,能够使用统一的接口来操作gpio.在讲gpio核心(gpiolib.c)之前先来看看gpio是…