基于Cubieboard2的静电测试仪开发

摘要:对于电子制造类企业,员工在进入车间前需要进行静电测试,以防操作中自身静电对电子元器件造成破坏。对于一个信息化水平较高的工厂,都会使用MES系统对生产的各个过程进行管控,包括员工每日的静电测试记录。因设备需求量大,同时要符合人机交互的需求,所以要求静电测试仪成本低、操作友好的、便于维护。本文介绍了基于Cubieboard2的静电测试仪的开发思路以及一些设计经验,供更多工程师作为入门参考。
关键字:静电测试仪、Cubieboard、GPIO、Android

0 引言

Cubieboard2是方糖科技公司基于全志科技A20芯片开发的一款核心板,常见外设如GPIO、UART、SPI、I2C等都有提供,可以认为是一款增强版的ARM开发板,不过该板可以跑各种操作系统如Ubuntu、Android、Debian等。考虑到当前安卓设备的普及程度、安卓应用开发的熟悉程度以及产品自身的交互性需求,通过安卓APP控制底层的GPIO来获取端口电平高低来判定静电测试通过情况是一种较好的方式。

1 设备控制原理概述

静电检测设备可认为是一个开关,静电测试合格时开关闭合,正常情况下开关断开。将静电测试设备串入Cubieboard,通过检测某个GPIO口的电压便可判定设备导通情况,电气原理图如图1.1所示。

图1.1 电平检测原理图

2 A20芯片GPIO概述

2.1 基本概念

General Purpose Input Output,即通用输入/输出,也称总线扩展器。GPIO为内核必备的模块,无须sys_config.fex进行配置[1]。实际上,无须配置是指GPIO的驱动模块已经嵌入内核,除有特殊配置的端口,其余默认为输出功能,可以通过开发Linux程序调用GPIO。sys_config.fex是Cubieboard核心板默认的配置文件,每个端口的默认功能都在其中定义。在本应用中,某个GPIO口需要检测输入,因此需要单独配置。

2.2 GPIO功能描述

根据文献[2]中的描述可知,每个GPIO口都有不同的复用功能,一般功能有输入\输出\中断输入等。根据sys_config.fex中默认的端口配置查阅文献[2],可知此引脚的具体功能含义。图2.1为文档[3]中部分原理图,由图可知,PE口被作为拓展口引出,因此本文选择PE4口作为电平检测口,便于外围接线。
图2.2为本文在sysconfig1.lhs(在Android系统下等同于sys_config.fex文件)配置的GPIO参数。其中gpio_used表示是否使能端口,gpio_num表示需要使用的端口数量,gpio_pin_1表示要配置的第一个Pin脚的功能,格式为:

Port:端口+组内序号<功能分配><内部电阻状态><驱动能力><输出电平状态>
例如:
port:PE4<0><1>

对于上例,通过查阅手册[2]的PE Configure Register信息可知,PE4的功能0即为输入功能;查阅PE Pull Register0可知default为禁用上拉\下拉,内部为高组态;查阅PE Multi-Driving Register0可知默认驱动能力为Level1;查阅PE Data Register可知端口输出状态为1。

图2.1 Cubieboard2原理图(部分)

图2.2 本应用GPIO配置

3 Cubieboard2烧写Android系统

3.1 DragonFace

DragonFace是一款系统镜像编辑工具,功能强大,具有读取安卓系统镜像中的配置、修改开机启动画面、增加或删除内置应用等功能,主界面如图3.1所示。

图3.1 DragonFace主界面

点击主界面上的“固件”,选择从官方下载的支持触摸屏显示的镜像。切换至“高级设置”选项卡,点击“修改系统配置”即可读取内置的sysconfig1.lhs。根据需要对相应的GPIO口进行类似图2.2所示的配置,配置完成后保存退出。最后点击界面上的“保存”按钮,在弹出的对话框中重命名修改后的系统镜像。需要注意的是,不同Windows系统下保存的系统镜像大小不同,经测试,win10x64系统下保存的镜像烧录后无法正常工作,win7x86系统下保存的镜像可以正常工作。

3.2 PhoenixSuit

PhoenixSuit是一款烧录工具,作用和51单片机下的烧录工具类似,只不过单片机烧录工具烧录的是.hex文件,而PhoenixSuit烧录的是包含完整系统的.img文件。有关PhoenixSuit工具的具体使用方法参见文档[4]。
如果因配置错误导致烧录后开发板无法启动,可使用如下步骤烧录原始镜像:

  1. 拔下开发板连接PC的microUSB线
  2. 按住开发板上的FEL键(位置microUSB口下方)
  3. 打开PhoenixSuit,选择官方默认固件
  4. 将microUSB线连上电脑
  5. 当发现PhoenixSuit已开始烧录固件时,可松开FEL键

4 SHELL下的GPIO操作

4.1 Linux内核初探

虽然本设备核心板中烧录的是Android系统,但Android仍基于Linux,所以可以通过操纵底层硬件的方式来进行GPIO读写,因此有必要了解Linux内核。在开发板配套的配套教程中,Linux源码位于\lichee\linux-3.4目录下,该目录如图4.1所示。

图4.1 Android的linux内核目录

以上目录结构和标准的Linux内核是一致的,除了多一个modules目录。modules目录是扩展用来存放没有跟内核的sys_config.fex集成的外部模块的地方。需要重点关注的是arch目录,该文件夹下存放的是不同芯片架构的内核配置文件。由于A20芯片基于ARM的Cortex-A7架构,所以相关的内核配置文件放在\arch\arm文件夹下。不同公司的基于ARM架构的芯片因外设不同,模块配置也不尽相同,全志A20芯片的相关配置文件都放在\arm\mach-sun7i目录下。对于GPIO模块的配置有对应的gpio目录,如想深入研究GPIO底层驱动的实现,可对照文献[2]中的寄存器说明来阅读源码。
如果说\arch目录实现了不同linux架构、同一架构下不同厂商的不同外设的统一,那么与之平级的\drivers目录则实现了所有外设的统一,实现了对底层寄存器访问函数的统一封装。满足linux架构的外设驱动模块可被linux内核加载,并对外提供统一的调用接口,比如open函数,read函数就可以实现指定模块的打开和状态读取,前提是该模块已经被正确加载。

4.2 常用SHELL指令介绍

除了编程使用open、read等函数通过调用底层GPIO驱动来实现引脚状态读取,还可以通过SHELL指令直接操作相关寄存器的映射文件进行值的读写。
使用过DOS系统和Windows终端控制台的人对命令行界面都有一定的了解。与这些系统不同,Linux的命令行是通过一种叫做SHELL的程序提供。SHELL程序负责接收用户的输入,解析用户输入的命令和参数,调用相应的程序,并给出结果和出错提示[5]。常用SHELL指令如图4.2所示。


图4.2 常用SHELL指令

4.3 通过SHELL指令操作GPIO

根据前文描述,本系统配置的GPIO出入探测口是PE4和PE5。如果想验证这两个端口是否配置成功,可以将Cubieboard连接PC,通过adb指令对设备进行访问。图4.3显示了进入指定目录查看配置结果的命令,命令解释如下:

  • adb devices:查看已连接的Android设备
  • adb shell:登录Android设备,获取设备的控制权


图4.3 验证配置信息

通过SHELL指令cd进入/sys/class/gpio_sw目录后,若该目录下有链接文件PE4、PE5则证明配置读取成功,反之失败。由于PE4、PE5只是链接文件,要获取端口的值需要打开这个链接文件链接到的目录。使用cd指令打开目录,使用ls -l指令查看该目录下的文件,得到如图4.4所示的目录结构。

图4.4 已配置的GPIO口文件目录

由图4.4可知,cfg、data、drv、pull的文件类型均为[-],即为一般文件,可读写。在2.2节曾介绍过和GPIO相关的四种类型的寄存器,以上四个文件就是这些寄存器的端口映射文件,因而可通过echo和cat指令读写文件,如图4.5所示。根据图1.1所述的电气原理图,设备在断开情况下,GPIO口应为高电平,与cat指令获取的结果一致。

图4.5 读取GPIO口的值

5 通过Android应用控制GPIO

由于Cubieboard2官方提供的镜像已经过root,所以程序中可以通过打开shell进程来执行shell指令,和第4节提供的读取GPIO引脚值的方式相同,关键代码块如图5.1所示。
readinput函数中先打开了shell进程,然后创建了和shell进程交换数据的数据输出流。执行完cat指令后建立和shell进程交换数据的数据输入流,把返回的结果读入。

图5.1 读取GPIO的关键Android代码

6 总结

本文虽然只介绍了Cubieboard下的GPIO操作,但是其中用到的思想以及很多资料都可以推广到其他外设的操作中,比如引脚功能该如何配置,如何通过shell指令操作外设寄存器等。经实践验证,这种直接操作底层硬件的读取方式大大提升了检测效率。如工厂中有MES系统,Android应用可直接通过Webservice对静电测试结果进行记录,提升工厂的信息化水平和管理水平。

7 参考文献

[1]. 全志科技. A20_Script和GPIO开发说明书_V2.1[M]. 网络发行: 2014, 2-63
[2]. 全志科技. A20 User Manual Revision 1.0[M]. 网络发行: 2013, 240-306
[3]. 方糖科技. Cubieboard2原理图[M].
[4]. 全志科技. PhoenixSuit使用说明文档[M].
[5]. 弓雷等. ARM嵌入式Linux系统开发详解[M]. 清华大学出版社: 2014, 51

基于Cubieboard2的静电测试仪开发相关推荐

  1. catia三维轴承_浅谈基于CATIA二次开发的单排四点接触球轴承三维设计论文

    浅谈基于CATIA二次开发的单排四点接触球轴承三维设计论文 一.概述 单排四点接触球转盘轴承是一种能够同时承受较大轴向负荷.径向负荷和倾覆力矩等综合载荷,集支承.旋转.传动.固定等多种功能于一身的特殊 ...

  2. miui12 android版本,miui12基于安卓几版本开发的?miui12是安卓11吗

    miui12基于安卓几版本开发的?miui12系统已经在内测阶段了,还没有体验的用户朋友们对于miui12系统非常的好奇,想知道miui12基于安卓几,是安卓11吗?为了帮助大家有更全面的了解,今天小 ...

  3. 基于FPGA的以太网开发

      基于FPGA的以太网开发,在调试过的FPGA玩家开来,其实算不上很难的技术!但是如果只是菜鸟级别的选手,没有调试过的话,就有些头疼了!早在自己在实习的时候,就接触到XAUI(万兆以太网口)接口,但 ...

  4. 基于IAR上搭建开发MM32的环境

    简 介: 初步搭建了MindMotion基于IAR的软件开发环境.测试了基于DAPLink对于SeekFree开发板的开发功能.但是对于测试实验板,DAPLink无法寻找到目标MCU. 利用MM32- ...

  5. 基于Servlet+JSP+JavaBean开发模式的用户登录注册

    基于Servlet+JSP+JavaBean开发模式的用户登录注册 一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复 ...

  6. 基于MINA框架快速开发网络应用程序

    1.MINA框架简介  MINA(Multipurpose Infrastructure for Network Applications)是用于开发高性能和高可用性的网络应用程序的基础框架.通过使用 ...

  7. 基于原子探索者stm32f407开发板的ucos-iii+lwip1.4.1的tcp server并发服务器完美解决例程(转)...

    源:基于原子探索者stm32f407开发板的ucos-iii+lwip1.4.1的tcp server并发服务器完美解决例程 转载于:https://www.cnblogs.com/LittleTig ...

  8. 基于ASP.Net Core开发的一套通用后台框架

    基于ASP.Net Core开发一套通用后台框架 写在前面 这是本人在学习的过程中搭建学习的框架,如果对你有所帮助那再好不过.如果您有发现错误,请告知我,我会第一时间修改. 知其然,知其所以然,并非重 ...

  9. 基于Chrome的扩展开发(二)

    Chrome启动时默认的效果如下图所示,有"most visited","Searches","Recent bookmarks",&quo ...

  10. Dipforge 3.0 a3 发布,基于 Web 的集成开发环境

    Dipforge 3.0 a3 主要是增强了 Web IDE,增加了一些改进的图标. Dipforge 是一个应用服务器,提供了快速企业开发,无需 CRUD,侧重于解决实际的问题. Dipforge  ...

最新文章

  1. 使用LogKit进行日志操作
  2. visual studio输入法打不了中文_我为什么不用Mac自带输入法
  3. 写给准备找工作的同志们!!!!(转载)
  4. form表单提交时,同一个名字的input类型的两个同时提交会覆盖吗
  5. pip更换镜像源_Ubuntu20.04LTS更换软件源镜像
  6. Ubuntu 20.04更换下载源阿里云
  7. linux查找指定修改时间的文件夹,linux 查找某个日期以后修改过哪些文件 shell脚本...
  8. (转)ComputerStyle与currentStyle的区别
  9. prototype、JQuery中跳出each循环的方法
  10. 学习Oracle分析函数(Analytic Functions)
  11. BZOJ3711 : [PA2014]Druzyny
  12. steam加速_Steam玩家们快看看,追梦加速器的试用体验者怎么说?
  13. linux 摄像头yuv,camera YUV格式
  14. NAS存储技术之NAS的结构
  15. android标题栏 状态栏,android设置无标题栏 、 状态栏
  16. 笑傲江湖 琴箫合奏之曲
  17. Kali安装GVM(openvas)教程并更改用户密码
  18. 腾讯副总裁吴军答腾讯的“抄袭与创新”(互联网行业的商业智慧)
  19. python实习——03
  20. ffmpeg利用滤镜合并四个视频,左一右三

热门文章

  1. Element修改图标大小,设置颜色
  2. 输入框限制规则 只能输入数字 只能输入字母数字 等等
  3. qiankun加载react子应用报错[import-html-entry] error occurs while executing normal script
  4. 胎死腹中的天颖工作室-2004年初的痛楚
  5. JavaBean字段防止非空赋值
  6. 天牛群,天牛须结合粒子群算法BAS-PSO。研究生阶段毕生所 学,低价出售!可定制pid参数整定。
  7. 智商测试图片素材软件,智商测试图片 测试你智商的图片[100P]
  8. 优化动画卡顿:卡顿原因分析及优化方案
  9. php insertrow,table insertRow、deleteRow定义和用法总结_javascript技巧
  10. python按键盘上哪个键运行_python键盘操作PyKeyboard安装使用详解