硬件开发指南_第1页
硬件开发指南_第2页
硬件开发指南_第3页
硬件开发指南_第4页
硬件开发指南_第5页
免费预览已结束,剩余35页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Tiny4412 Android 硬件开发2014-05-(Tiny4412 Android 硬件开发2014-05-(本手册适用于Tiny4412 开发板Copyright2007-2014s.第1简(简称“友善之臂”)创建本手册由友善之 Android 开发环境,以及如何简(简称“友善之臂”)创建本手册由友善之 Android 开发环境,以及如何Tiny4412 开发板作为真机调试程序程序硬件资源,包括I2C,GPIO,SPI, 串口等资源, 为你的项目开发提供参考为了方便用户,本手册的所用到包放在Btools 目录下,手册中的示例码,完整的工程都放在A les 目录的,供参考,友善之臂保

2、留本手册的解释和修改权:本手册由ARM9()发布请注明出处,手册内免有遗漏之处,欢迎大家提出宝贵意见,请发邮件至:dev 第2第3第3目 .-1.-6 目 .-1.-6 .-6并安装ADT集成开发环境和ANDROIDSDK7 AndroidSDKAPI17)9启动ADT集成开发环境(AndroidDeveloper.- 9 .-10程序 -.- 12 .- 14 .-14.- 14 在Tiny4412上测试ADB功能16通过USBADB在Tiny441218在Tiny4412上调试Android程序19.-21.-21 -.- 23 24开关LED的接口说明25让.-25 .- 25 I2C2

3、6SPI接口说明27GPIO接口说明29.-30.- 30 GPIO示例3135示例.- 36A/D37I2C&EEPROM38SPI示例38.- 38第4 -.-39第5第一章 建立Android应用开发环Btools1.1 并安装JDKJavaSEDevelopmentAndroid第一章 建立Android应用开发环Btools1.1 并安装JDKJavaSEDevelopmentAndroidSDKADTJavaWindows上安装JDK,JDK可按以下方/technetwork/java/javase/downloads/index.html,在页面中击AcceptLicense第6

4、 -,Windows764bitjdk-7u51-windows-完成后,双击安装程序,JDKPath 环境变量中:电脑”-在系统变量中,找到 环境变量,双击它,在变量值前面追加以下内容,Windows764bitjdk-7u51-windows-完成后,双击安装程序,JDKPath 环境变量中:电脑”-在系统变量中,找到 环境变量,双击它,在变量值前面追加以下内容 ilsJvajdk1.7.0_514) 环境变量设置成功后,DOSjava应该能得到如下输出1.2 并安装ADT集成开发环境和Android /sdk/获取的SDK 第7 -Windows32-bit 64-bit 版本Windo

5、ws32-bit 64-bit 版本adt-bundle-windows-x86_64-20131030.zip, 64-bit的版本将得到的压缩包解压, 可以看到包含以下目录可以看到, eclipseAndroideclipse第8 -Android集成开发环境,命名为AndroidDeveloperTools, ADTAndroid SDK(API Tiny4412Android版本是4.2.2, 为了方便在Android集成开发环境,命名为AndroidDeveloperTools, ADTAndroid SDK(API Tiny4412Android版本是4.2.2, 为了方便在Tin

6、y4412上调试程 相应版本的 SDK,这里再另行说明SDKManager启动SDK管理程序AndroidSDKManagerSDKManager中选中Android4.2.2API17) Image 组件,如下图所示:中的SDKPlatformARMEABIv7a在上面框中点击“Install 4 packages”按钮,在弹出的Choose Packages to 1.2.2启动ADT集成开发环境 (Android Developer adt-bundle-windows-x86_64-20131030目录,再进eclipse目eclipse.exe ADT, 启动封面如下图所示:第9 -

7、Workspace 代码,不修改直接点击 OK,之前会询问你是否发送使用数据,可以选Workspace 代码,不修改直接点击 OK,之前会询问你是否发送使用数据,可以选择 NoFinishADT的主界面EclipseADTEclipseEclipseSDK 以及 Android 开发所需的 Eclipse 插件,因此,ADT 本质上就是 SDK+ADT Plugin,因此不引ADT1.3 :创建Android模拟在ADT中点击Windows菜单然后点击AndroidVirtualDeviceManager来启动模拟器管理器,点击“New.”按钮,将弹出“Create new Android V

8、irtual Device(AVD)”第10 -三在“Create new Android Virtual OK在“Create new Android Virtual OKStartLaunchLaunch第111.4 Android程序 (验证开发环境是否搭建成功1.4.1 Android 项主界面上1.4 Android程序 (验证开发环境是否搭建成功1.4.1 Android 项主界面上依次选择菜单:File-New-Android Application Project 如下图所示第12 -界面上将弹出“New Android 框,框中进行如下输入AppicationnameProj

9、ect界面上将弹出“New Android 框,框中进行如下输入AppicationnameProjectNamePackagename中选择:API17:Android4.2JellyBean) SDK 中选择:API17:Android 4.2 (Jelly Bean)如下图所示Next最后点“Finish”第13 -1.4.2 在模拟器运行AndroidoWorldPackageExplorer ADTAndroidAndroid系统,所以要耐等1.4.2 在模拟器运行AndroidoWorldPackageExplorer ADTAndroidAndroid系统,所以要耐等待,Andr

10、oid 系统启动完成后,将会自动运 实现把这 1.5 步骤五:建立Tiny44121.5.1 安装USB ADBADTWindowAndroid SDK ManagerSDK Manager第14 - UsbDriver的状态, 如是 UsbDriver的状态, 如是 Tiny4412Android启动完毕后,这时,Windows7 会提示正在安装驱动程序:MiniUSB PC Android SDK USB SDK usb_driver第15 -1.5.2 在Tiny4412上测试ADBadbPath右击在系统变量中,找到 Path 1.5.2 在Tiny4412上测试ADBadbPath右

11、击在系统变量中,找到 Path 环境变量,双击它,在变量值前面追加 adt-bundle 的路径, 由于我将压缩包在 c:根目录解压, 因此, 我添加的路径如下: tools;ADTadb cmdcmd.exeDOSDOSadb第16 -Tiny4412Android, miniUSBTiny4412PCDOS窗口Tiny4412ADBTiny4412Android, miniUSBTiny4412PCDOS窗口Tiny4412ADBTiny4412exitDOSADBD:sinaweibo_2.0.4.apkDOSadbinstall D:sinaweibo_2.0.4.apk 进行安装。A

12、DB功能非常强大,除了安装、调试、第17 -#adb #adb 1.5.3 通过USB ADB在Tiny4412ADTPackageExploreroWorldProperties, Properties 1.5.3 通过USB ADB在Tiny4412ADTPackageExploreroWorldProperties, Properties SettingsEdit Configuration 窗口,点击“ Alwaysprompttopickdevice,如下所示:SelectionModeOK device”4.2.2的设备(Tiny4412啦第18 - ADT 1.5.4 在Tiny

13、4412上调试Android先在Tiny4412 ADT 1.5.4 在Tiny4412上调试Android先在Tiny4412oWorld 程序然后在ADT 主界面上点击”bu第19 -第20 -第20 -在Andorid程序第二硬Android 应用程序,友善之臂为用户开发一个函数库(命名为 libfriendlyarm-hardware.so),用 在Andorid程序第二硬Android 应用程序,友善之臂为用户开发一个函数库(命名为 libfriendlyarm-hardware.so),用 的硬件设备包括:串口设备、蜂鸣器设备、EEPROM、ADC、LED设备等, 可以接口包括:I

14、2C, SPI, GPIO 常用的接口。ist ndoid ist ist的功能。Android 应用程序中使用libfriendlyarm-hardware.so 函数库来操2.1 如何使用函数库(libfriendlyarm-Tiny4412Btoolslibfriendlyarm-hardware目录下包含了开发所需的.soJavaJNIJavalibfriendlyarm-hardware.soiTest libfriendlyarm-hardware.so 版本中都内置了 libfriendlyarm-hardware.so 该库文件位于 Android 源代码目录的以下路径/sys

15、tem/lib/libfriendlyarm-hardware.so 第21 -vendor/friendly-arm/exynos4412/rootdir/system/lib/libfriendlyarm-如果你是参考本文档的方法用 ADT 开发 Android 应用程序,可以通过以下方法使 armeabi如果你是参考本文档的方法用 ADT 开发 Android 应用程序,可以通过以下方法使 armeabi目录,然后将libfriendlyrm-hardware.so armeabisrc目录下分别创建comfriendlyarmAndroidSDK三然后将B光盘下的 /friendlya

16、rm/AndroidSDK 录下的所有.java到你工程内的 srccomfriendlyarmAndroidSDK 目录下ADTADT左侧右击你的项目列表,选择“Refresh”刷新一下项HardwareControler类中封装,其它Enum结尾的都是一些常量定义,在 第22 -importcom.friendlyarm.AndroidSDK.HardwareControler; import com.friendlyarm.AndroidSDK.SPIEnum;import com.friendlyarm.AndroidSDK.GPIOEnum; importcom.friendlyar

17、m.AndroidSDK.FileCtlEnum;2.2 函数库(libfriendlyarm-hardware.so)接口说HardwareControler 类来调用libfriendlyarm-hardware.so HardwareControler 对象实例:2.2 函数库(libfriendlyarm-hardware.so)接口说HardwareControler 类来调用libfriendlyarm-hardware.so HardwareControler 对象实例:通用的输入输出接第23StringdevName:flags: 打开文件的方式,例如可读可写还是 只 读 打

18、开 , 可 选 值 需 参 考 Value,cmd: ioctl efd:data:ebuf, fd:len:成功返回 的字节数,出错返回-1,如果在调read 之前已到达文件末尾read0。串口通讯的接口说timer第24StringdevName, 串口通讯的接口说timer第24StringdevName, long baud,StringparityBit, String flowCtrl)devName:baud: dataBits:588 ) st its:121 ) parityBit: flowCtrl: 数据流控 值为单个字母,H表示硬件流控制,S 表示 流控制,N成功打开串

19、口时,将返回串口的文件描述符,用该描述符可进行 read、wrie 和 selet -。fd:sen: 阻塞等待数据多长时间( :秒) usec: 阻塞等待数据多长时间 ( :纳秒,1=1000)fd1,0,出错时返回-1。voidfd:readwriteclose开关LED的接口说 让的接口说ADC的转换结 第25readwriteclose开关LED的接口说 让的接口说ADC的转换结 第25ADCADCfrequency:le D, e)ledID:指定要开关哪一个LED(取值03) e: 1表示亮,0表示灭2.2.6 I2C接口说在使用如下接口之前,首先需要使用 接口打开设备, 如下所示

20、操作完成后,记得用 第26fd:2.2.6 I2C接口说在使用如下接口之前,首先需要使用 接口打开设备, 如下所示操作完成后,记得用 第26fd:I2Cslave:I2CEEPROM0 x50fd:I2Ctimeout设置超时时间(ioctlfd:I2Cretries设置重试次数(ioctl 回-ADCADCchannels: 要2.2.7 SPI接口说在使用如下接口之前,首先需要使用 接口打开设备,如下所示操作完成后,记得用 第27bits2.2.7 SPI接口说在使用如下接口之前,首先需要使用 接口打开设备,如下所示操作完成后,记得用 第27bitsspi_fdSPIbits:字长设置每次

21、读SPI设备的字长虽然大部分SPI接口的字长是8或者16,仍然会有一些特殊的例子。需明的是,如果这个成员为零的话,默认使用 8bitsspi_fdSPIbits:字长(ioctlspi_fdSPISPIEnum.MSBspi_fd=ev1.0,FileCtlEnum.O_RDWRbyte byteData,fd:I2Cwait_ms:写一个字节的数据到 I2C 设备的指定位fd:I2Cwait_ms:从 I2C 设备指定的位置读一个字节的数第28 -spi_fdSPI第28 -spi_fdSPIdivider: 分频系数,传入在 SPIEnum.java 中定义的以 spi_fdSPImode

22、SPISPIEnum.SPI_MODE0 spi_fd, byte byteData, spi_fdSPIbyteDataSPI, , 0 , ;spi_fd, byte writeData, byte readBuff,spi_fdSPIreadBuff: 存放2.2.8 GPIO接口说libfriendlyarm-hardware.so函数库在操作GPIOsysfsGPIO 的2.2.8 GPIO接口说libfriendlyarm-hardware.so函数库在操作GPIOsysfsGPIO 的Androidsystem ADTapksystem签名;GPIO 示例。 第29pin:GPI

23、O通知系统需要导出控制的GPIO引脚相 当 于 执 行 命 令echo pin pin:GPIO通知系统取消导出某个GPIO引脚,相 当 于 执 行 命 令echo pin spi_fd,bytewriteData, spi_fdSPI spi_fd, byte readBuff, readBuff: 存放从SPI设2.3 示例程2.3.1 在板LED示 可,下面的代码演示开关 e2.3 示例程2.3.1 在板LED示 可,下面的代码演示开关 e开关指定的LED第30import/LED1开启/LED1关闭pin:GPIOvalue: 传入 GPIOEnum.LOW 表示输出低电GPIOEnu

24、m.HIGHpin:GPIOGPIOEnum.LOW返回 GPIOEnum.HIGH 表示输出高电平,失败pin:GPIOdirection:GPIOEnum.INpin:GPIO成功返回 GPIOEnum.IN 表示输入,返回本示例仅适用于控制Tiny4412在板的LED, LED, 2.3.2GPIO 本示例仅适用于控制Tiny4412在板的LED, LED, 2.3.2GPIO pin与上一例子不同,本示例通过GPIOLEDLinuxKernel LEDLinuxKernel LED 文件系统中GPIO相关的文件节点,因此,你的Androidsystem权限操作GPIO的Androids

25、ystem ADTapksystem第31 -采用第一种比较简单的方法,即将示例工程放在Android码目录去编译, GPIO_LED_DemoAndroidpackages/appsTiny4412Android-4.2.2_r1“Tiny4412Amount/mnt/iso代采用第一种比较简单的方法,即将示例工程放在Android码目录去编译, GPIO_LED_DemoAndroidpackages/appsTiny4412Android-4.2.2_r1“Tiny4412Amount/mnt/iso代 adb1) AndroidManifest.xml文件需要指定:android:sh

26、aredUserId=android.uid.system,如2) Android.mk:=禁用内核中的LED驱 configDevice-CharacterLEDSupportforFriendlyARMTiny4412GPIOLEDs第32 HYPERLINK http:/s/ #adbinstallrAndroid4.2.2 设置一下Android#. #cd #cp les/GPIO_LED_Demo.mm#cdGPIO_LED_Demo # mm获悉LED的GPIO引脚的定义和内GPIO LED14GPM4(03) 需要通过sysfs的方式来获悉LED的GPIO引脚的定义和内GPIO

27、 LED14GPM4(03) 需要通过sysfs的方式来操作GPIO, 因此(每一个GPIO 79LED14GPM4(03)79+079,LED479+3=82第33# cd #foriingpiochip*;doechocat$i/label:cat$i/base;通过GPIO来控制LED 通过GPIO来控制LED (echopin/sys/class/gpio/export),注意文件系统节点 100 毫秒后,设置引脚的模式为输出,并对引脚设置高电平来熄灭所有 第34privateTimerTaskinit_task=newTimerTask() publicvoid run() Log.

28、d(TAG,init_task+if(step=STEP_INIT_GPIO_DIRECTION)fori=0;i4;i+)if(HardwareControler.setGPIODirection(79+i,GPIOEnum.OUT)=0)elseLog.v(TimerTask, setGPIODirection stepelseif(step=STEP_CLOSE_ALL_LED) for (i=0; i4; i+) if(HardwareControler.setGPIOValue(79+i,GPIOEnum.HIGH)=0) else Log.v(TAG,setGPIOValuefailed);step elseif (step = STEP_INIT_VIEW) Messagemessage=newMessage();message.w

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论