转自:http://www.arm9home.net/read.php?tid-27259.html

GPIO Driver and apk(include jni) support All GPIO Port,Support Android2.3/kernel2.6 & android4.0/kernel3.0.8 for Tiny/mini6410 and Tiny/mini210

通用GPIO驱动和应用程序(包含jni),支持所有GPIO端口,支持LED控制,支持友善6410和210系列开发板,支持安卓2.3/内核2.6、安卓4.0/内核3.08

1、介绍
一时兴起编写的小程序,配合bjwGPIOdriver,可以实现几个小功能,详细请看介绍。
界面没怎么花心思,做得比较丑-_-;但android 2.3和4.0通用;

1.1、主界面
主界面6个按钮,其中5个可以再进入具体的功能界面,最后一个按钮是退出;
Pin Control用于单独端口的控制,可以配置的项目是最全的;
LED Control专门用来展示LED控制,只是控制端口的高低电平而已,然后通过线程控制变一些花样;
GPIO List可以列出所有端口的信息,也可以把这些信息导出到存储卡;
Oscilloscope是端口高低电平示波器,因为读取是轮询的,所以只作为娱乐功能;
Performance Test测试读取4个GPIO端口需要多少时间,作为轮询时间的参考;

1.2、单独GPIO端口控制
注意:如果您不清楚此功能的作用,请不要乱改GPIO引脚的配置,若因任何操作导致开发板损坏,本人概不负责!!!
第一行用来设置或读取具体端口的高低电平,引脚号默认值为用户LED1,6410板为GPK(4),210板为GPJ2(0);
接下来3行是配置或读取IO的cfgpin,端口号仍然取第一行“GPIO引脚”,具体请查CPU手册,0~15对应二进制0000~1111;
然后是上拉状态的配置或读取,端口号仍然取第一行“GPIO引脚”;
最后是串口调试信息的控制,可以打开或关闭,还可获取当前的状态,注意这里说的是内核的调试信息,不是adb的调试信息。

6410CPU手册,一般只用到0~7,即0000~0111

210CPU手册,比较多0~15都可能用到,即0000~1111

1.3、LED控制
Read Leds可以刷新4个用户LED的状态;
也可以通过开关按钮单独控制;
最后几个选项是通过线程实现4个LED灯的循环亮灭控制;
注意:虽然GPIO引脚号可以改,但如果您不清楚,请勿乱改;若因任何操作导致开发板损坏,本人概不负责!!!

1.4、所有GPIO端口信息列表
如果端口为高电平(1),那么此行为蓝色;
如果端口为低电平(0),那么此行为绿色;
如果端口读取错误(-1),那么此行为红色。
需要说明的是,6410开发板支持所有端口的读取,而210开发板2.6内核支持全端口的读取,但3.0内核只支持到MP03,MP03之后的端口读取时内核会崩溃,所以210板子就统一只读取到MP03为止。

可以把取得的信息以CSV格式导出到存储卡

导出后可以用记事本或excel打开,如下图所示的样子,包含4列:端口名称,电平值(高:1,低:0,错误:-1),cfgpin配置,上拉配置

1.5、IO口电平示波器
这个只是娱乐功能,做得不怎么完善
4个开关按钮控制4个端口的高低电平,默认是控制4个用户LED,6410开发板为GPK(4~7),210开发板为GPJ2(0~3),采用最简单的打点法,一次读取4个IO电平,高电平就把点画在中心线上方,低电平就把点画在中心线下方。
暂停的时候,竖线会断掉……,但运行的时候不会。而且在210上比较流畅,在6410上会闪烁,surfaceview还是掌握不到家啊-_-

按menu键可以设置要查看的GPIO口,比如210板子用于LCD控制的GPF0(4~7)

LCD的4个GPIO端口电平变化如下图

1.6、Performance Test
运行一次耗时比较久,请耐心等待,6410板子可能要花好几分钟。
210板子的结果大概是0.274ms/4port。

2、安装说明
2.1、内核补丁
之所以需要打补丁,是因为本人写的GPIO驱动需要调用某些内核函数,而友善提供的内核正好这些函数不全,如果不打补丁的话,可能编译过不了或者使用时会导致内核崩溃。
只要这些内核函数是完整的,那么GPIO驱动一定可以支持此内核,不管是什么版本的内核。所以如果你的内核这些函数是完整的,那就不需要这些补丁,那么请跳过此小节。
不同的内核,需要的补丁不同,请不要用错。
另外还要注意内核的版本以及友善提供的支持光盘的日期,因为不知道友善后续会不会补全这些函数,所以下面的说明,是本人所用内核的光盘日期,当然更早以前日期的内核文件,肯定是需要打补丁的。
2.1.1、提供如下3个版本的Patch:
①、6410系列开发板:我使用的是Tiny6410,内核2.6.36,光盘日期2012-08-28,Patch文件名:s3c6410gpio.patch
②、210系列开发板(android2.3):我使用的是Mini210s,内核2.6.35,光盘日期2012-11-16,Patch文件名:s5pv210_2.6gpio.patch
③、210系列开发板(android4.0):我使用的是Mini210s,内核3.0.8,光盘日期2012-11-16,Patch文件名:s5pv210_3.0gpio.patch

2.1.2、另外也提供已经patch好的文件,自己可以根据这些文件判断需不需要打patch
同样对应不同版本的内核,3种内核3个文件夹;如果不想打补丁,也可以直接把文件夹里的内容覆盖到内核文件夹根目录替换同名文件。

2.2、GPIO驱动
驱动本身没啥好说的,采用platform driver写法,属于练手之作,简单易懂吧。
2.2.1、驱动文件名bjwgpio.c,放到内核的drivers/gpio文件夹,所有内核都使用这个驱动文件。
2.2.2、然后修改drivers/gpio文件夹里的Kconfig,在endif前增加(如果你patch或覆盖了如上补丁,那么此步就自动做好了,请跳过)。
config GPIO_BJW
         tristate"GPIO support for Tiny6410/Mini6410/Tiny210/Mini210"
         dependson CPU_S5PV210 || CPU_S3C6410
         defaulty
         help
           This option enables support for All GPIOread/write/cfg/pull on Tiny6410/Mini6410/Tiny210/Mini210.
2.2.3、最后修改drivers/gpio文件夹里的Makefile,在最后增加一行(如果你patch或覆盖了如上补丁,那么此步就自动做好了,请跳过)
obj-$(CONFIG_GPIO_BJW)      += bjwgpio.o

2.3、重新编译内核
先make menuconfig
然后确认如下选项是否已经选中
Device Drivers  --->
-*- GPIO Support  --->
<*>  GPIO support for Tiny6410/Mini6410/Tiny210/Mini210
最后保存,并编译。

2.4、修改设备打开读写权限
不修改设备打开权限的话,应用程序操作时会出错无法打开设备。
驱动设备只有一个,为/dev/bjw-gpio。
需要改rootfs里的init.rc,在“on init”节里找到友善自己修改权限的地方,并加上我们的语句,如下:
#{{ added by FriendlyARM
chmod 0666 /dev/bjw-gpio
然后重新制作ROM,连同上面编译好的内核,重新烧写。

2.5、JNI
Jni的源代码和apk的源代码一起,在jni文件夹里。
如果需要重新编译jni,请自行下载ndk。
本人使用的是android-ndk-r8b-windows编译的。

2.6、简便测试方法
不想用apk软件测试的话,可以在adb shell中使用如下命令控制,可能会有出错提示但不影响。
6410点灯:
LED1:echo GPK 4 0 > /dev/bjw-gpio
LED2:echo GPK 5 0 > /dev/bjw-gpio
LED3:echo GPK 6 0 > /dev/bjw-gpio
LED4:echo GPK 7 0 > /dev/bjw-gpio

6410灭灯:
LED1:echo GPK 4 1 > /dev/bjw-gpio
LED2:echo GPK 5 1 > /dev/bjw-gpio
LED3:echo GPK 6 1 > /dev/bjw-gpio
LED4:echo GPK 7 1 > /dev/bjw-gpio

210点灯:
LED1:echo GPJ2 0 0 > /dev/bjw-gpio
LED2:echo GPJ2 1 0 > /dev/bjw-gpio
LED3:echo GPJ2 2 0 > /dev/bjw-gpio
LED4:echo GPJ2 3 0 > /dev/bjw-gpio

210灭灯:
LED1:echo GPJ2 0 1 > /dev/bjw-gpio
LED2:echo GPJ2 1 1 > /dev/bjw-gpio
LED3:echo GPJ2 2 1 > /dev/bjw-gpio
LED4:echo GPJ2 3 1 > /dev/bjw-gpio

3、下载地址
3.1、Patch下载地址

https://github.com/benjaminwan/GPIOKernelPatch

3.2、GPIO驱动下载地址

https://github.com/benjaminwan/bjwGPIOdriver

3.3、apk和jni源代码下载地址

https://github.com/benjaminwan/bjwGPIOapk

3.4、apk下载

http://www.arm9home.net/job.php?action-download-pid-tpc-tid-27259-aid-4812.html

通用GPIO驱动和apk(含jni),支持所有GPIO,支持LED控制,支持友善6410/210开发板,支持安卓2.3/4.0,内核2.6/3.0相关推荐

  1. 全志 Tina Linux LCD显示屏调试指南 支持MIPI DSI RGB LVDS I8080 SPI等接口,开发板支持百问网T113 D1-H哪吒 DongshanPI-D1s V853

    1 概述 编写目的 本文档将介绍sunxi 平台Display Engine 模块中LCD 的调试方法. LCD 调试方法,调试手段. LCD 驱动编写. lcd0 节点下各个属性的解释. 典型LCD ...

  2. iMX6ULL驱动开发 | 让imx6ull开发板支持usb接口FC游戏手柄

    手边有一闲置的linux开发板iMX6ULL一直在吃灰,不用来搞点事情,总觉得对不住它.业余打发时间就玩起来吧,总比刷某音强.从某多多上买来一个usb接口的游戏手柄,让开发板支持以下它,后续就可以接着 ...

  3. iTOP-4418开发板支持动态调频,AXP228电源管理,预留锂电池接口,内置充放电电路及电量计...

    iTOP-4418开发板 支持动态调频,AXP228电源管理,预留锂电池接口,内置充放电电路及电量计 核心板320PIN全引出,16G存储高配版本,核心板4418/6818全兼容,并跨行业大量应用 系 ...

  4. iTOP-4418/6818开发板支持双屏异显,双屏同显

    iTOP-4418/6818开发板平台安卓系统下支持双屏异显,双屏同显,客户可按照不同用途,分别播放适合屏幕显示方式的内容 ,如HDMI屏幕和LCD屏幕显示不同内容, 一个屏幕播放广告,另一个屏幕运行 ...

  5. linux板卡支持USB键盘,让linux2.6.24内核在开发板支持usb鼠标

    让linux2.6.24内核在开发板支持usb鼠标 发布时间:2008-03-27 16:06:22来源:红联作者:Inwind 今天下午,对以前移植的linux2.6.24内核不能检测USB鼠标进行 ...

  6. Linux下imx6dl开发板从镜像的烧写、内核源码编译到第一个驱动运行的详细步骤

    文章目录 前言 一.对开发板烧写镜像 1.镜像烧写 2.串口测试 二.搭建交叉编译环境 1.Ubuntu下搭建交叉编译环境 2.WSL下搭建交叉编译环境 三.编译Linux内核源码 1.Ubuntu下 ...

  7. alios things开发板_AliOS Things开发:让你的开发板支持AliOS Studio调试-阿里云开发者社区...

    给AliOS Things一颗STAR(前往GitHub关注我们) 目录 简介 在AliOS-Things 2.1版本之后,AliOS Studio提供了一套简单易懂的接口可以让开发者很容易适配开发板 ...

  8. IMX6开发板支持Android|Linux + Qt|Ubuntu|Debian|Youcto系统

    迅为开发板支持系统:Android4.4/6.0系统:Linux + Qt4.7/5.7系统:Ubuntu12.04/16.04系统:  Debian 9.9 系统:Youcto系统(4.1-krog ...

  9. OTA在线升级Android7.1系统迅为IMX6Q开发板支持SATA,PCIE,EIM总线,WIFI蓝牙

    iTOP-IMX6 开发平台是基于 NXP 的 IMX6 系列芯片开发的产品,该产品广泛应用于车载系统.数字标牌.金融设备.人机界面.机上娱乐系统.工业控制.医疗设备.仪器仪表.智慧城市.商业电子等多 ...

最新文章

  1. v9php 碎片信息,phpcms v9碎片管理及调用技巧分享
  2. apache配置反向代理(通过不同端口访问不同目录)
  3. C++ Primer 5th笔记(chap 17 标准库特殊设施)regex_replace
  4. Oracle 表数据去重
  5. substring用法
  6. 10点43博客文章汇总(2018年度)
  7. 自学java编译老是出错_为什么按照书上的代码,编译老是出错?
  8. 计算机参评高校168所,168所大学排行榜单!计算机科学与技术专业哪些高校专业实力最强!...
  9. 大文件读取mmap磁盘映射
  10. GandCrab4.0勒索病毒解密工具
  11. BugkuCTF writeup
  12. 带劲!厂内全流程智能仓储物流系统
  13. Android 从应用程序跳到系统应用管理和应用的权限管理页面
  14. ijkplayer源码---FFPlayer结构体4 SDL_Aout
  15. CISSP-D8-软件开发安全
  16. C语言中的循环语句(while、dowhile、for)
  17. C语言中: 整型数据相除 得到浮点型数据
  18. MSP430f5529-GPIO简介
  19. 瑞吉外卖:linux课程学习(软件安装、项目部署)
  20. 虚拟养老院如何运作?虚拟养老院不提供床位-新导智能

热门文章

  1. Linux常用命令——lftp命令
  2. 牢记公式,ardupilot EKF2就是纸老虎(四)!
  3. 学会如何管理和保护布线系统
  4. Day 38 HTML
  5. 基于少量样本的快速学习Few-shot learning
  6. 【Test】GacUI 1.0 眼看着就要写完了 (4)
  7. C++软件异常的常见原因分析与总结(实战经验分享)
  8. LINUX 查看宝塔BT登陆账号密码
  9. stata移动平均插值法mipolate命令
  10. 销售易CEO 史彦泽:特殊时期,企业如何维持销售运转?