有NDK编译环境的请进。

dh1314al 2013-07-27 11:25:31
求好心人 https://github.com/julianshen/ScreenCap 编译这个项目 打包成so库给我。
qq498795832 好人一生平安,谢谢
...全文
415 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
dancing_with_wolf 2014-01-04
  • 打赏
  • 举报
回复
楼主,截系统屏幕图这个弄好了没,我这段时间也在弄这个,也是用的 https]这个项目,也是编译少头文件,弄好了麻烦给我说说呗,谢谢了。 1443885833 这个是我的QQ。
媒体盒子 2013-08-06
  • 打赏
  • 举报
回复
兄弟,看来你是想做截屏软件!不过据我研究 此段代码不适用于第三方应用程序,如果是系统应用程序的话可以用用。
dh1314al 2013-08-03
  • 打赏
  • 举报
回复
引用 3 楼 avi9111 的回复:
已经被折磨死,我下个ndk下了一晚上,今天早上还在下什么7r 9r 8e window linux 64x各种版本,还没发现一个能编译过的,他们网上说8e应该能过,再不行,我要崩溃了
大哥搞好了么。这个问题确实很蛋疼的。
dh1314al 2013-08-03
  • 打赏
  • 举报
回复
引用 6 楼 guoyoulei520 的回复:
不是编译不了,你需要在源码环境下编译,我还看到mk文件里面依赖skia的一些头文件。。 NDK中没有。你去源码中编译吧
木有搞过这方面的东西啊。帮忙搞一下吧。
dh1314al 2013-08-03
  • 打赏
  • 举报
回复
引用 6 楼 guoyoulei520 的回复:
不是编译不了,你需要在源码环境下编译,我还看到mk文件里面依赖skia的一些头文件。。 NDK中没有。你去源码中编译吧
大哥能帮忙搞一下嘛?我没搞过ndk啊。求助啊
citycal 2013-08-02
  • 打赏
  • 举报
回复
中间binder下的头文件木有,不过其他的都找到了头文件位置,用到的是skia的东西,这个要能运行成功,还得继续下载东西,需要时间。。。
凉凉二点凉 2013-08-02
  • 打赏
  • 举报
回复
不是编译不了,你需要在源码环境下编译,我还看到mk文件里面依赖skia的一些头文件。。 NDK中没有。你去源码中编译吧
mmorss 2013-08-02
  • 打赏
  • 举报
回复
头文件都没有啊,没法编
doveqian 2013-08-02
  • 打赏
  • 举报
回复
这么多文件没有,编译个鬼啊,还有那么多库文件也没看见。。。 还让人编译..
avi9111 2013-08-02
  • 打赏
  • 举报
回复
已经被折磨死,我下个ndk下了一晚上,今天早上还在下什么7r 9r 8e window linux 64x各种版本,还没发现一个能编译过的,他们网上说8e应该能过,再不行,我要崩溃了
dh1314al 2013-08-01
  • 打赏
  • 举报
回复
楼上的能帮我搞一下么,这个问题会折磨死
a_reader 2013-07-27
  • 打赏
  • 举报
回复
编不过,缺头文件,或许得在linux下编,我没装。。。 F:/android_work_ziv/screenCap/trunk/jni/com_cust_android_screencap_ScreenCap.cpp :20:33: error: binder/ProcessState.h: No such file or directory F:/android_work_ziv/screenCap/trunk/jni/com_cust_android_screencap_ScreenCap.cpp :21:36: error: binder/IServiceManager.h: No such file or directory F:/android_work_ziv/screenCap/trunk/jni/com_cust_android_screencap_ScreenCap.cpp :23:28: error: binder/IMemory.h: No such file or directory F:/android_work_ziv/screenCap/trunk/jni/com_cust_android_screencap_ScreenCap.cpp :24:45: error: surfaceflinger/ISurfaceComposer.h: No such file or directory F:/android_work_ziv/screenCap/trunk/jni/com_cust_android_screencap_ScreenCap.cpp :26:28: error: SkImageEncoder.h: No such file or directory F:/android_work_ziv/screenCap/trunk/jni/com_cust_android_screencap_ScreenCap.cpp :27:22: error: SkBitmap.h: No such file or directory F:/android_work_ziv/screenCap/trunk/jni/com_cust_android_screencap_ScreenCap.cpp :31: error: 'android' is not a namespace-name F:/android_work_ziv/screenCap/trunk/jni/com_cust_android_screencap_ScreenCap.cpp :31: error: expected namespace-name before ';' token F:/android_work_ziv/screenCap/trunk/jni/com_cust_android_screencap_ScreenCap.cpp : In function 'void Java_com_cust_android_screencap_ScreenCap_captureScreenToFil e(JNIEnv*, _jclass*, _jstring*)': F:/android_work_ziv/screenCap/trunk/jni/com_cust_android_screencap_ScreenCap.cpp :40: error: 'String16' does not name a type F:/android_work_ziv/screenCap/trunk/jni/com_cust_android_screencap_ScreenCap.cpp :41: error: 'sp' was not declared in this scope F:/android_work_ziv/screenCap/trunk/jni/com_cust_android_screencap_ScreenCap.cpp :41: error: 'ISurfaceComposer' was not declared in this scope F:/android_work_ziv/screenCap/trunk/jni/com_cust_android_screencap_ScreenCap.cpp :41: error: 'composer' was not declared in this scope F:/android_work_ziv/screenCap/trunk/jni/com_cust_android_screencap_ScreenCap.cpp :42: error: 'name' was not declared in this scope F:/android_work_ziv/screenCap/trunk/jni/com_cust_android_screencap_ScreenCap.cpp :42: error: 'getService' was not declared in this scope F:/android_work_ziv/screenCap/trunk/jni/com_cust_android_screencap_ScreenCap.cpp :44: error: 'IMemoryHeap' was not declared in this scope F:/android_work_ziv/screenCap/trunk/jni/com_cust_android_screencap_ScreenCap.cpp :44: error: 'heap' was not declared in this scope F:/android_work_ziv/screenCap/trunk/jni/com_cust_android_screencap_ScreenCap.cpp :45: error: 'uint32_t' was not declared in this scope F:/android_work_ziv/screenCap/trunk/jni/com_cust_android_screencap_ScreenCap.cpp :45: error: expected ';' before 'w' F:/android_work_ziv/screenCap/trunk/jni/com_cust_android_screencap_ScreenCap.cpp :46: error: 'PixelFormat' was not declared in this scope F:/android_work_ziv/screenCap/trunk/jni/com_cust_android_screencap_ScreenCap.cpp :46: error: expected ';' before 'f' F:/android_work_ziv/screenCap/trunk/jni/com_cust_android_screencap_ScreenCap.cpp :47: error: 'status_t' was not declared in this scope F:/android_work_ziv/screenCap/trunk/jni/com_cust_android_screencap_ScreenCap.cpp :47: error: expected ';' before 'err' F:/android_work_ziv/screenCap/trunk/jni/com_cust_android_screencap_ScreenCap.cpp :48: error: 'err' was not declared in this scope F:/android_work_ziv/screenCap/trunk/jni/com_cust_android_screencap_ScreenCap.cpp :48: error: 'NO_ERROR' was not declared in this scope F:/android_work_ziv/screenCap/trunk/jni/com_cust_android_screencap_ScreenCap.cpp :49: error: 'stderr' was not declared in this scope F:/android_work_ziv/screenCap/trunk/jni/com_cust_android_screencap_ScreenCap.cpp :49: error: 'strerror' was not declared in this scope F:/android_work_ziv/screenCap/trunk/jni/com_cust_android_screencap_ScreenCap.cpp :49: error: 'fprintf' was not declared in this scope F:/android_work_ziv/screenCap/trunk/jni/com_cust_android_screencap_ScreenCap.cpp :54: error: 'w' was not declared in this scope F:/android_work_ziv/screenCap/trunk/jni/com_cust_android_screencap_ScreenCap.cpp :54: error: 'h' was not declared in this scope F:/android_work_ziv/screenCap/trunk/jni/com_cust_android_screencap_ScreenCap.cpp :54: error: 'LOGD' was not declared in this scope F:/android_work_ziv/screenCap/trunk/jni/com_cust_android_screencap_ScreenCap.cpp :56: error: 'SkBitmap' was not declared in this scope F:/android_work_ziv/screenCap/trunk/jni/com_cust_android_screencap_ScreenCap.cpp :56: error: expected ';' before 'b' F:/android_work_ziv/screenCap/trunk/jni/com_cust_android_screencap_ScreenCap.cpp :57: error: 'b' was not declared in this scope F:/android_work_ziv/screenCap/trunk/jni/com_cust_android_screencap_ScreenCap.cpp :57: error: 'SkBitmap' is not a class or namespace F:/android_work_ziv/screenCap/trunk/jni/com_cust_android_screencap_ScreenCap.cpp :59: error: 'SkImageEncoder' has not been declared F:/android_work_ziv/screenCap/trunk/jni/com_cust_android_screencap_ScreenCap.cpp :60: error: 'SkImageEncoder' has not been declared F:/android_work_ziv/screenCap/trunk/jni/com_cust_android_screencap_ScreenCap.cpp :60: error: 'SkImageEncoder' has not been declared make: *** [/cygdrive/f/android_work_ziv/screenCap/trunk/obj/local/armeabi/objs/s crcap/com_cust_android_screencap_ScreenCap.o] Error 1
一、网狐荣耀版短信验证开发流程说明 现在的很多游戏,都有短信验证登录的功能,特别是国内比较火的网狐棋牌系统,有的甚至直接短信验证码为登录密码,这确实是一个好的思路,保证了密码不被盗。但是,短信验证怎么实现呢?很多开发者有时会出现暂时的迷茫。下面我就把大概的思路告诉大家。一、申短信通道,国内的短信通道很多,不同的通道速度不一样,我们在申时要一个基本原则就是速度要快,基本上要发送即接收了,客户不可能等的。国内调查发现,客户等网页打开的时间是最长不超过5秒,短信接收的时间最长不超过10秒。当然,特殊的短信例外,比如银行确认短信等涉及财产安全的短信;二、手机客户端或PC客户端开发出相应的短信验证功能,行手机号码的接收,接收到手机号码后,直接发送服务器端,这里当然不能客户端集成直接发,那就会被别人利用了。服务器端发送短信。客户接收到短信后就可以行验证。 二、网狐荣耀版棋牌机器人配置完了不游戏不上桌 在网狐荣耀版机器人配置中经常遇到机器人配置完了不游戏,不上桌。这个问题一般是几方面的问题造成的。 一、你的这款游戏是否支持机器人,支持的话就服务器端会有相应的机器人组件。 二、支持机器人,但是机器人组件没在服务器端目录,或没有。 三、这个游戏是否配置了机器人,有时可能是配置错了,好好的详细再查一下吧。 四、机器人数量不够,已经用尽。 五、游戏机器人没有开启。 基本上就这些原因了,每个都要细细的查,这样才能发现问题。 可以咨询q-q457189 三、网狐荣耀版手机端在复制文本时提示“复制内容非法”的解决办法 在网狐荣耀版开发调试过程中,复制文本时,提示“复制非法内容”,开始吓一跳,没有什么非法内容啊?也没有禁词,也没有国家不允许的内容。最后通过程序查看,原来是平台的问题。换安卓、苹果系统就好了。 四、最新出炉的网狐荣耀版机器人添加视频教程 最新出炉的网狐荣耀版机器人添加视频教程,包括机器人的导入,机器人的分配,机器人的配置,房间的配置等。全方位的讲解了网狐荣耀版机器人的管理添加过程。可以联系我获取下载地址。Q-Q457189 五、网狐荣耀版安卓端的签名与打包 第一、打开ADT,选择file-import,加载荣耀版安卓项目。 第二,右键项目,选择export,入下图界面,选择android,然后再选择Export Android Application,然后选择下一步,这里默认,再行下一步。 第三步,这里选择Create new keystore,Location选择存储路径,Passowrd输入签名密码,Confirm确认密码。然后行下一步 第四步,填写好各个相关信息,注意密码那里和上个页面的一致。其它随便。然后下一步,选择打包APK文件的存储路径。 第五步,点击finish等待程序签名与APK的生成,结束。 六、网狐荣耀版游戏启动时出现“正在初始化组件”启动失败 【 2017-11-10 08:35:33 】[ 游戏 ] 房间参数加载成功 【 2017-11-10 08:35:35 】正在初始化组件... 【 2017-11-10 08:36:41 】服务启动失败 【 2017-11-10 08:36:41 】服务停止成功 这样的问题有两个原因造成 一、开发库是否正确,不正确,重新生成开发库。 二、游戏kindid设置是否正确,不正确修改。 这两个问题解决了,问题就迎刃而解了。 祝你好运。 七、网狐荣耀版"定时器异常:TimerID=2“错误 在网狐荣耀版行机器人操作或其它操作时,经常会出现"定时器异常:TimerID=2“错误,这个错误怎么处理呢? 这里提示其实已经很明白了,就是定时器错误。 一和运行库有关系,二和操作有关。 八、网狐荣耀版棋牌游戏机器人的添加 在棋牌运营过程中,没有机器人开始是很难运行的,没有人气,那么,网狐荣耀版棋牌游戏怎么添加机器人呢?下面简单说明 加机器人首先要有一些机器人的名字,这些名字可以自己搜集,也可以用网上别人搜集的,比如Q-Q名。然后用脚本一键导入。 用户信息导入后,就可以用机器人工具行房间的机器人分配了。 九、eclipse加载荣耀版时红叉an outline is not available报错的处理 很多时候这些错误不是程序问题造成,而是环境问题造成。这个主要是第三方的类库与cocos2d-x的支持文件没有加载的原因造成,加载了就可以正常运行了。 十、网狐荣耀版手机端分享时出现“由于不支持的分享类型,无法分享到微信“的解决办法 去腾讯开放平台申账号,审核通过后,在开放平台添加相应信息,就可以正常分享了。 十一、网狐荣耀版vs生成解决方案时出现“出现未能写入日志,求的操作无法在使用用户映射区域打开的文件上执行“错误 一、定位文件,看是不是只读。 二、删除文件试一下,看看是不是文件被占用,如果删除不了,就是被占用,可以查是哪个程序占用,不行重启服务器试一下。 三、是不是路径有问题。 十二、网狐荣耀版房卡游戏在手机客户端不出现房卡房间 最近,有个别网友找我,的架设网狐荣耀版游戏时,服务器端开了房卡房间,但是在手机端没有房间显示,更不用谈入房间了。经查,程序没有问题,相同的源码,相同的环境配置,就是不出现房卡房间,最后我也是无语了。我告诉他,你人品有问题。但是问题还是得查出原因。经过详细的分析研究,最后是他电脑CPU的问题。费了十天的时间,经历了太多的误解与磨难。真不容易。 十三、网狐荣耀版android编译时出现“未找到工程,Android 目标平台版本应该大于或等于 21” 这个是因为sdk版本设置问题造成的,设置正确相应的sdk版本,就可以了。 十四、网狐荣耀版微信登录没有反应失败的解决办法 网狐荣耀版的登录方式有了很大的变化,三种形式:账号登录、游客登陆与微信登陆。在开发与使用网狐棋牌荣耀版时账号登陆与游客登录时基本上都没有什么问题,但是在使用微信登录时会遇到点微信登录没有反应,有反应后不去等等问题。遇到这样的情况,是因为腾讯开放平台配置问题,注册开放平台,行客户端相应参数的设置就可以了。 十五、在网狐荣耀版添加房卡游戏时,经常有网友遇到房卡房间弹出到大厅登录界面 这个问题经常有网友咨询,经过调试,最后确定是开发库不配套的问题。经过更新,重新生成开发库,问题解决。 十六、网狐荣耀版斗地主第三个人入开始时弹出 网狐荣耀版斗地主第三个人入开始时弹出,这样的问题经常有网友遇到。 经过问题分析,代码查看,是开发库的问题,解决了开发库问题,就正常了。 十七、网狐荣耀版李奎劈鱼游戏,捕鱼游戏提示“非法组件的解决办法” 在使用网狐荣耀版时,捕鱼入游戏时提示非法组件,如下图,这个是因为未授权的原因,只要授权就可以了。授权的方法可以联系 十八、网狐荣耀版大厅版本更新出现“下载失败,CODE 7,是否重试?”的错误 网狐荣耀版,有一些客户反应,在大厅版本更新后,客户端下载更新出现了,“下载失败,CODE 7,是否重试?”的错误。这个是一配置的错误问题造成的,修改后台更新配置。 十九、网狐荣耀版棋牌中心服务器显示“服务启动失败”的原因 网狐荣耀版棋牌,在启动中心服务器时,显示“服务启动失败”,如下图。这是因为开发库不配套的问题产生的。更新了开发库,问题解决。 二十、网狐荣耀版手机端登录提示“网络错误:5”解决办法 这是因为服务器端授权问题、内核问题或是手机端的配置问题造成的,看内核是否为248K的内核,并检查网络模块是否为34.7K的网络模块,如果没有问题检查手机端相应位置的配置信息。配置一定要细心做好。如果还不行可以 二十一、网狐荣耀版房卡房间分享给好友,好友点击后空白,或没反应的解决办法 最近总遇到网友反应,网狐荣耀版房卡游戏,在创建房间后,邀好友等操作后。好友点击分享链接没反应或是空白,或是出错。这样的问题,在行代码修改和相应的设置后,问题解决。 二十二、网狐荣耀版启动游戏时提示“相应的游戏服务组件信息不存在,房间创建失败” 这个是因为游戏的kindid与创建的游戏的kindid不一致造成的,修改游戏的kindid为你的游戏的kindid就可以了。 二十三、网狐荣耀版出现在sys.servers中找不到服务器'rytreasuredblink'。验证指定的服务器名称是否正确 这个问题是因为数据库是附加的,脚本代码里面的创建链接服务器脚本没有执行,执行一下就好了。Q-Q:457189 二十四、网狐荣耀版系统模块编译出现fatal error c1083:无法打开包含文件“d3d9.h” :no such fil 这个是因为没有把directx sdk添加到项目引用中。加入directx sdk的引用就可以了。Q-Q:457189 二十五、网狐荣耀版苹果端ipa打包流程说明 在网狐荣耀版系统开发,游戏开发,界面cocos和lua开发等过程后,要行发布和打包。pc端与安卓端相对简单,苹果端的修改、发布与打包成了多数开发者的一个主要问题。下面就说说这个苹果打包的基本过程。 一、环境准备 macos电脑一台,安装xcodes开发工作,同时安装证书服务器与相关软件环境。 二、系统修改 xcodes打开项目工程,行开发者的配置与发布选项的配置,行游戏名称与版本号修改等,编译,发布等。这里面的游戏开发者最好是企业开发者账号,因为这样就不用上传到苹果商店了。可以随便分发。 三、导出ipa文件,上传到fir.im,蒲公英之类的网站,客户下载就行了。 Q-Q:457189 二十六、网狐荣耀版游戏服务器出现"MDM_GF_GAME 游戏命令返回 false" 网狐荣耀版游戏服务器出现"MDM_GF_GAME 游戏命令返回 false",这是因为游戏客户端数据与服务器端不匹配造成的,修改客户端后,问题解决。 二十七、网狐荣耀版棋牌游戏输赢控制设置 在游戏使用过程中,输赢控制是必不可少的,那怎么怎么行游戏控制呢?下面简单简介。 一、控制账号的注册。 二、控制客户端的生成。 三、行控制。 就这三步即可实现控制。 二十八、网狐荣耀版手机端与pc端热更新的配置 手机端的热更新是,首先设置好版本号,然后生成手机端,生成后,把生成的文件全部上传到网站更新目录里面,然后管理后台配置更新目录与版本,就可以了。pc端的更新是上传到相应目录,然后生成更新版本信息。 二十九、网狐荣耀最新版视频教程 网狐荣耀最新版视频教程,从开始的基础操作,架设,到最后的安卓修改编译,苹果修改编译等。 网狐荣耀版教程一认识网狐荣耀版 网狐荣耀版教程二环境搭建 网狐荣耀版教程三数据库的附加和导入 网狐荣耀版教程四网站管理后,台和代,理的搭建 网狐荣耀版教程五PC端系统的修改和编译 网狐荣耀版教程六服务器端的搭建 网狐荣耀版教程七PC客户端的打包 网狐荣耀版教程八子游戏的添加 网狐荣耀版教程九安卓端的签名 网狐荣耀版教程十苹果环境的搭建 网狐荣耀版教程十一苹果端ios的修改和打包 网狐荣耀版教程十二安卓手机端的修改和编译 网狐荣耀版教程十三手机端热更新的配置 在系统的使用与运营过程中,会有很多问题,这些教程只要认真学习,都会迎刃而解。当然在解决的过程中也要动脑。 实在解决不了,可以互相沟通Q-Q:457189 三十、网狐荣耀版服务器端启动出现“您的服务器组件没有得到合法授权,服务器将会以受限模式运行” 这个就是因为内核组件没有破解,然后认证没有通过。建议去网狐公司购买正版和正版授权。Q-Q:457189 三十一、网狐荣耀版棋牌教程之一开发环境搭建 一、安装JDK1.8,下载jdk1.8,然后双击安装,下一步直到安装完成,安装的时候记住安装目录,我的全部默认安装,目录为C:\Program Files\Java\Jdk1.8。安装完成后,环境变量的配置。系统变量中行JAVA_HOME、CLASSPATH、Path三个变量的配置,有的编辑,没有的新建。新建JAVA_HOME对应C:\Program Files\Java\Jdk1.8、新建CLASSPATH对应.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar、编辑Path的最后加上;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin。最后打开CMD窗口行测试是否安装成功。 二、把winrar加入环境变量,使winrar可以在命令行下直接运行。;C:\Program Files\WinRAR 三、安装cocos,这里我们使用的是cocos2d-x 3.10,3.10版本,Cocos2d-x与cocos整合升级为Cocos引擎,下载后是exe程序,双击直接安装,很简单。 四、下载自动提示补全词典,我还下载了cocos2dx-3.10-api.lua,把下载的词典放到,我的文档下面的BabeLua\Completion文件夹中,再入lua项目,输入代码时就有相应的提示了。 五、安装python-2.7.10,双击安装,下一步直到完成,在安装时选择一下目录,我安装到了c盘的python27目录。安装完后环境变量的配置。在系统变量的path最后加上;C:\Python27,pyghon安装完成。打开CMD窗口行测试。 六、安装ant 1.9.6,下载ant 1.9.6,解压,这里我们解压到C盘的ant196目录。然后配置环境变量,没有的项创建,有的项编辑。 ANT_HOME C:\ant196 path C:\ant196\bin classpath C:\ant196\lib 七、安装adt,下载ADT后解压,我们这里解压到C盘的adt-bundle-windows-x86-20140624目录。 运行eclipse,打开help,install new software,名称输入adt_plugin,adt插件的站点为:https://dl-ssl.google.com/android/eclipse/ 将“com.android.ide.eclipse.ndk_23.0.2.1259578.jar”复制到"C:\adt-bundle-windows-x86-20140624\eclipse\plugins\com.android.ide.eclipse.ndk_23.0.2.1259578.jar" 添加环境变量 ANDROID_SDK_ROOT 为:C:\adt-bundle-windows-x86-20140624\sdk; 八、安装NDK 把android-ndk-r10d-windows-x86_64复制到要安装的目录,双击android-ndk-r10d-windows-x86_64行解压。这里我们解压后的目录为c盘的android-ndk-r10d目录。 启动"C:\adt-bundle-windows-x86-20140624\eclipse\eclipse.exe" 选择菜单栏上的[Window->Perferences->Android->NDK]设置 NDK Loaction 为C:\android-ndk-r10d; 添加环境变量 NDK_ROOT 为:C:\android-ndk-r10d 在环境变量 PATH 下追加 :%NDK_ROOT%; 至此,网狐荣耀版开发环境基本搭建完成。 q-q457189 三十二、网狐荣耀版入手机客户端显示“获取服务器列表失败,是否重试?” 这个问题有原因有几个,一可能是服务器端的IP连接设置有问题;二是游戏更新有问题。 Q-Q457189 三十三、网狐荣耀版或其它安卓项目出现Application cannot be exported due to the erro 网狐荣耀版或其它安卓项目出现Application cannot be exported due to the error(s) below.错误的处理方法 此错误的意思是你的项目存在编译错误,您必须处理了全部错误才可以行导出操作。 三十四、网狐荣耀版更新工具更新文件创建失败怎么处理? 三十五、网狐荣耀版大厅里游戏一闪一闪的不去,正在检查怎么处理? 三十六、网狐荣耀版服务端启动出现“注意,您正在使用未被授权的组件,无法启动服务器,联系深圳网狐科技有限公司!”怎么处理? 三十七、网狐荣耀版开发环境怎么配置? 三十八、网狐荣耀版手机端热更新怎么配置? 三十九、网狐荣耀版入手机客户端显示“获取服务器列表失败,是否重试?”怎么处理? 四十、网狐荣耀版手机端生成时出现MakeMD5List.exe 应用程序错误的解决办法 这是因为动态链接库版本不对,更新就好了。
pcf8563_i2c1_r8_ruoge_ov2640通过给RTC驱动增加设备节点读取秒钟成功+直接读取I2C1获取秒钟值20160626_2201.7z http://blog.csdn.net/21cnbao/article/details/7919055 在Android源码树中添加userspace I2C读写工具(i2c-util) 本文使用的开发板是:杭州若格科技有限公司的全志R8。CPU:CPUARM Cortex-A8 更多芯片资料参见全志官网: http://www.allwinnertech.com/clq/r/R8.html 通过/dev/i2c-n节点,用户可以在userspace直接访问板上的i2c外设寄存器,主要是透过I2C_RDWR这个IO控制命令将i2c_msg数组传递给kernel去执行。 开发板的/dev/i2c-1总线下挂有一片I2C的RTC:pcf8563。 root@android:/dev # cd /sys/class/i2c-adapter/ root@android:/sys/class/i2c-adapter # ll lrwxrwxrwx root root 1970-01-02 08:31 i2c-0 -> ../../devices/platform/sun5i-i2c.0/i2c-0 lrwxrwxrwx root root 1970-01-02 08:31 i2c-1 -> ../../devices/platform/sun5i-i2c.1/i2c-1 lrwxrwxrwx root root 1970-01-02 08:31 i2c-2 -> ../../devices/platform/sun5i-i2c.2/i2c-2 root@android:/sys/class/i2c-adapter # cd i2c-1 root@android:/sys/class/i2c-adapter/i2c-1 # ll drwxr-xr-x root root 1970-01-02 08:31 1-0051 --w------- root root 4096 1970-01-02 08:31 delete_device lrwxrwxrwx root root 1970-01-02 08:31 device -> ../../sun5i-i2c.1 drwxr-xr-x root root 1970-01-01 08:00 i2c-dev -r--r--r-- root root 4096 1970-01-02 08:31 name --w------- root root 4096 1970-01-02 08:31 new_device drwxr-xr-x root root 1970-01-01 08:00 power lrwxrwxrwx root root 1970-01-02 08:31 subsystem -> ../../../../bus/i2c -rw-r--r-- root root 4096 1970-01-01 08:00 uevent root@android:/sys/class/i2c-adapter/i2c-1 # root@android:/sys/class/i2c-adapter/i2c-1 # cd 1-0051/ root@android:/sys/class/i2c-adapter/i2c-1/1-0051 # ll lrwxrwxrwx root root 1970-01-02 10:18 driver -> ../../../../../bus/i2c/drivers/pcf8563 -r--r--r-- root root 4096 1970-01-02 10:18 modalias -r--r--r-- root root 4096 1970-01-02 10:18 name drwxr-xr-x root root 1970-01-02 10:18 power drwxr-xr-x root root 1970-01-02 10:18 rtc lrwxrwxrwx root root 1970-01-02 10:18 subsystem -> ../../../../../bus/i2c -rw-r--r-- root root 4096 1970-01-02 10:18 uevent root@android:/sys/class/i2c-adapter/i2c-1/1-0051 # cat name pcf8563 root@android:/sys/class/i2c-adapter/i2c-1/1-0051 # 注释:1-0051 1 表示 i2c-1这条I2C1总线上挂载的设备,如果是I2C2总线上挂载的设备,路径就是2-00XX了。 0051 一般的I2C设备的从机地址都是一个字节的,因为前两位为0x00(16制的),后两位为pcf8563移位自后的I2C从机地址0x51(也是16制的) 压缩包中的PCF8563-CN.pdf,datasheet告诉我们:I2C总线从地址:读,0A3H;写,0A2H。右移一位之后正好是0x51。 下面的代码可以完成这个功能: #include #include #include #include #include #include #include #include #include #include #include /* This is the structure as used in the I2C_RDWR ioctl call */ struct i2c_rdwr_ioctl_data { struct i2c_msg __user *msgs; /* pointers to i2c_msgs */ __u32 nmsgs; /* number of i2c_msgs */ }; int i2c_read_reg(char *dev, unsigned char *buf, unsigned slave_address, unsigned reg_address, int len) { struct i2c_rdwr_ioctl_data work_queue; unsigned char w_val = reg_address; int ret; int fd = open(dev, O_RDWR); if (!fd) { printf("Error on opening the device file\n"); return 0; } work_queue.nmsgs = 2; work_queue.msgs = (struct i2c_msg*)malloc(work_queue.nmsgs *sizeof(struct i2c_msg)); if (!work_queue.msgs) { printf("Memory alloc error\n"); close(fd); return 0; } ioctl(fd, I2C_TIMEOUT, 2); ioctl(fd, I2C_RETRIES, 1); (work_queue.msgs[0]).len = 1; (work_queue.msgs[0]).addr = slave_address; (work_queue.msgs[0]).buf = &w_val; (work_queue.msgs[1]).len = len; (work_queue.msgs[1]).flags = I2C_M_RD; (work_queue.msgs[1]).addr = slave_address; (work_queue.msgs[1]).buf = buf; ret = ioctl(fd, I2C_RDWR, (unsigned long) &work_queue); if (ret < 0) { printf("Error during I2C_RDWR ioctl with error code: %d\n", ret); close(fd); free(work_queue.msgs); return 0; } else { printf("read salve:x reg:x\n", slave_address, reg_address); close(fd); free(work_queue.msgs); return len; } } int i2c_write_reg(char *dev, unsigned char *buf, unsigned slave_address, unsigned reg_address, int len) { struct i2c_rdwr_ioctl_data work_queue; unsigned char w_val = reg_address; unsigned char w_buf[len+1]; int ret; w_buf[0] = reg_address; int fd = open(dev, O_RDWR); if (!fd) { printf("Error on opening the device file\n"); return 0; } work_queue.nmsgs = 1; work_queue.msgs = (struct i2c_msg*)malloc(work_queue.nmsgs *sizeof(struct i2c_msg)); if (!work_queue.msgs) { printf("Memory alloc error\n"); close(fd); return 0; } ioctl(fd, I2C_TIMEOUT, 2); ioctl(fd, I2C_RETRIES, 1); (work_queue.msgs[0]).len = 1 + len; (work_queue.msgs[0]).addr = slave_address; (work_queue.msgs[0]).buf = w_buf; memcpy(w_buf + 1, buf, len); ret = ioctl(fd, I2C_RDWR, (unsigned long) &work_queue); if (ret < 0) { printf("Error during I2C_RDWR ioctl with error code: %d\n", ret); close(fd); free(work_queue.msgs); return 0; } else { printf("write salve:x reg:x\n", slave_address, reg_address); close(fd); free(work_queue.msgs); return len; } } int main(int argc, char **argv) { unsigned int fd; unsigned int slave_address, reg_address; unsigned r_w; unsigned w_val; unsigned char rw_val; if (argc < 5) { printf("Usage:\n%s /dev/i2c-x start_addr reg_addr rw[0|1] [write_val]\n", argv[0]); return 0; } fd = open(argv[1], O_RDWR); if (!fd) { printf("Error on opening the device file %s\n", argv[1]); return 0; } sscanf(argv[2], "%x", &slave_address); sscanf(argv[3], "%x", ®_address); sscanf(argv[4], "%d", &r_w); if (r_w == 0) { i2c_read_reg(argv[1], &rw_val, slave_address, reg_address, 1); printf("Read %s-%x reg %x, read value:%x\n", argv[1], slave_address, reg_address, rw_val); } else { if (argc < 6) { printf("Usage:\n%s /dev/i2c-x start_addr reg_addr r|w[0|1] [write_val]\n", argv[0]); return 0; } sscanf(argv[5], "%d", &w_val); if ((w_val & ~0xff) != 0) printf("Error on written value %s\n", argv[5]); rw_val = (unsigned char)w_val; i2c_write_reg(argv[1], &rw_val, slave_address, reg_address, 1); } return 0; } 在android/external/新建i2c-util目录,上述源代码存入android/external/i2c-util/i2c-util.c, R:\wyb\pcf8563_i2c1_r8_ruoge_ov2640\android\i2c-util\i2c-util.c 编写对应的Android.mk: LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE_TAGS := optional LOCAL_MODULE = i2c-util # LOCAL_SRC_FILES := $(call all-subdir-c-files) LOCAL_SRC_FILES := i2c-util.c include $(BUILD_EXECUTABLE) 编译Android后,上述工具会位于/system/bin目录。在电路板上使用它: R:\wyb\pcf8563_i2c1_r8_ruoge_ov2640\android\out\target\product\nuclear-evb\system\bin\i2c-util 如果android已经编译了,只需要执行: rootroot@rootroot-E400:~/wyb/pcf8563_i2c1_r8_ruoge_ov2640/android$ source build/envsetup.sh rootroot@rootroot-E400:~/wyb/pcf8563_i2c1_r8_ruoge_ov2640/android$ lunch 选择:18. nuclear_evb-eng (注意:不同的ubuntu电脑,序号可能不同,但是只需要选择nuclear_evb-eng编译选项前面的序号既可!!!!) rootroot@rootroot-E400:~/wyb/pcf8563_i2c1_r8_ruoge_ov2640/android$ rootroot@rootroot-E400:~/wyb/pcf8563_i2c1_r8_ruoge_ov2640/android$ cd i2c-util/ rootroot@rootroot-E400:~/wyb/pcf8563_i2c1_r8_ruoge_ov2640/android/i2c-util$ rootroot@rootroot-E400:~/wyb/pcf8563_i2c1_r8_ruoge_ov2640/android/i2c-util$ rootroot@rootroot-E400:~/wyb/pcf8563_i2c1_r8_ruoge_ov2640/android/i2c-util$ mm 详细的编译步骤: Connecting to 192.168.1.103:22... Connection established. To escape to local shell, press 'Ctrl+Alt+]'. Welcome to Ubuntu 14.04 LTS (GNU/Linux 3.13.0-24-generic x86_64) * Documentation: https://help.ubuntu.com/ Last login: Sun Jun 26 19:23:30 2016 from 192.168.1.101 rootroot@rootroot-E400:~$ cd wyb/pcf8563_i2c1_r8_ruoge_ov2640/ rootroot@rootroot-E400:~/wyb/pcf8563_i2c1_r8_ruoge_ov2640$ rootroot@rootroot-E400:~/wyb/pcf8563_i2c1_r8_ruoge_ov2640$ rootroot@rootroot-E400:~/wyb/pcf8563_i2c1_r8_ruoge_ov2640$ ll total 8606460 drwxr-xr-x 4 rootroot rootroot 4096 Jun 26 20:46 ./ drwxr-xr-x 19 rootroot rootroot 4096 Jun 25 06:50 ../ drwxrwxr-x 29 rootroot rootroot 4096 Jun 26 19:51 android/ drwxrwxr-x 8 rootroot rootroot 4096 Jun 26 16:35 lichee/ rootroot@rootroot-E400:~/wyb/pcf8563_i2c1_r8_ruoge_ov2640$ cd android/ rootroot@rootroot-E400:~/wyb/pcf8563_i2c1_r8_ruoge_ov2640/android$ rootroot@rootroot-E400:~/wyb/pcf8563_i2c1_r8_ruoge_ov2640/android$ rootroot@rootroot-E400:~/wyb/pcf8563_i2c1_r8_ruoge_ov2640/android$ source build/envsetup.sh including device/asus/grouper/vendorsetup.sh including device/asus/tilapia/vendorsetup.sh including device/generic/armv7-a-neon/vendorsetup.sh including device/generic/armv7-a/vendorsetup.sh including device/generic/mips/vendorsetup.sh including device/generic/x86/vendorsetup.sh including device/samsung/maguro/vendorsetup.sh including device/samsung/manta/vendorsetup.sh including device/samsung/toroplus/vendorsetup.sh including device/samsung/toro/vendorsetup.sh including device/softwinner/common/vendorsetup.sh including device/softwinner/crane-evb/vendorsetup.sh including device/softwinner/nuclear-256m/vendorsetup.sh including device/softwinner/nuclear-evb/vendorsetup.sh including device/softwinner/nuclear-r8m-evb/vendorsetup.sh including device/ti/panda/vendorsetup.sh including sdk/bash_completion/adb.bash rootroot@rootroot-E400:~/wyb/pcf8563_i2c1_r8_ruoge_ov2640/android$ rootroot@rootroot-E400:~/wyb/pcf8563_i2c1_r8_ruoge_ov2640/android$ rootroot@rootroot-E400:~/wyb/pcf8563_i2c1_r8_ruoge_ov2640/android$ lunch You're building on Linux Lunch menu... pick a combo: 1. full-eng 2. full_x86-eng 3. vbox_x86-eng 4. full_mips-eng 5. full_grouper-userdebug 6. full_tilapia-userdebug 7. mini_armv7a_neon-userdebug 8. mini_armv7a-userdebug 9. mini_mips-userdebug 10. mini_x86-userdebug 11. full_maguro-userdebug 12. full_manta-userdebug 13. full_toroplus-userdebug 14. full_toro-userdebug 15. crane_evb-eng 16. nuclear_256m-user 17. nuclear_256m-eng 18. nuclear_evb-eng 19. nuclear_r8m_evb-eng 20. full_panda-userdebug Which would you like? [full-eng] 18 ============================================ PLATFORM_VERSION_CODENAME=REL PLATFORM_VERSION=4.2.2 TARGET_PRODUCT=nuclear_evb TARGET_BUILD_VARIANT=eng TARGET_BUILD_TYPE=release TARGET_BUILD_APPS= TARGET_ARCH=arm TARGET_ARCH_VARIANT=armv7-a-neon HOST_ARCH=x86 HOST_OS=linux HOST_OS_EXTRA=Linux-3.13.0-24-generic-x86_64-with-Ubuntu-14.04-trusty HOST_BUILD_TYPE=release BUILD_ID=JDQ39 OUT_DIR=out ============================================ rootroot@rootroot-E400:~/wyb/pcf8563_i2c1_r8_ruoge_ov2640/android$ rootroot@rootroot-E400:~/wyb/pcf8563_i2c1_r8_ruoge_ov2640/android$ rootroot@rootroot-E400:~/wyb/pcf8563_i2c1_r8_ruoge_ov2640/android$ ll total 156 drwxrwxr-x 29 rootroot rootroot 4096 Jun 26 19:51 ./ drwxr-xr-x 4 rootroot rootroot 4096 Jun 26 20:46 ../ drwxrwxr-x 3 rootroot rootroot 4096 Jun 13 11:38 abi/ drwxrwxr-x 10 rootroot rootroot 4096 Jun 13 11:38 bionic/ drwxrwxr-x 5 rootroot rootroot 4096 Jun 13 11:38 bootable/ drwxrwxr-x 7 rootroot rootroot 4096 Jun 13 11:38 build/ drwxrwxr-x 11 rootroot rootroot 4096 Jun 13 11:38 cts/ drwxrwxr-x 18 rootroot rootroot 4096 Jun 13 11:38 dalvik/ drwxrwxr-x 18 rootroot rootroot 4096 Jun 13 11:38 development/ drwxrwxr-x 10 rootroot rootroot 4096 Jun 13 11:38 device/ drwxrwxr-x 3 rootroot rootroot 4096 Jun 13 11:38 docs/ drwxrwxr-x 159 rootroot rootroot 4096 Jun 13 11:39 external/ drwxrwxr-x 14 rootroot rootroot 4096 Jun 13 11:40 frameworks/ drwxrwxr-x 10 rootroot rootroot 4096 Jun 13 11:40 gdk/ drwxrwxr-x 10 rootroot rootroot 4096 Jun 13 11:40 hardware/ drwxr-xr-x 2 rootroot rootroot 4096 Jun 26 19:37 i2cscan/ drwxr-xr-x 2 rootroot rootroot 4096 Jun 26 19:52 i2c-util/ drwxrwxr-x 11 rootroot rootroot 4096 Jun 13 11:40 libcore/ drwxrwxr-x 4 rootroot rootroot 4096 Jun 13 11:40 libnativehelper/ -r--r--r-- 1 rootroot rootroot 87 Jun 13 11:38 Makefile drwxrwxr-x 8 rootroot rootroot 4096 Jun 13 11:40 ndk/ drwxrwxr-x 4 rootroot rootroot 4096 Jun 26 16:43 out/ drwxrwxr-x 8 rootroot rootroot 4096 Jun 13 11:40 packages/ drwxrwxr-x 5 rootroot rootroot 4096 Jun 13 11:40 pdk/ drwxrwxr-x 10 rootroot rootroot 4096 Jun 13 11:41 prebuilts/ drwxr-xr-x 2 rootroot rootroot 4096 Jun 25 13:01 read_pcf8563/ drwxrwxr-x 6 rootroot rootroot 4096 Jun 13 11:38 .repo/ drwxrwxr-x 51 rootroot rootroot 4096 Jun 13 11:41 sdk/ drwxrwxr-x 9 rootroot rootroot 4096 Jun 13 11:41 system/ drwxrwxr-x 4 rootroot rootroot 4096 Jun 13 11:41 tools/ rootroot@rootroot-E400:~/wyb/pcf8563_i2c1_r8_ruoge_ov2640/android$ rootroot@rootroot-E400:~/wyb/pcf8563_i2c1_r8_ruoge_ov2640/android$ rootroot@rootroot-E400:~/wyb/pcf8563_i2c1_r8_ruoge_ov2640/android$ cd i2c-util/ rootroot@rootroot-E400:~/wyb/pcf8563_i2c1_r8_ruoge_ov2640/android/i2c-util$ rootroot@rootroot-E400:~/wyb/pcf8563_i2c1_r8_ruoge_ov2640/android/i2c-util$ rootroot@rootroot-E400:~/wyb/pcf8563_i2c1_r8_ruoge_ov2640/android/i2c-util$ mm ============================================ PLATFORM_VERSION_CODENAME=REL PLATFORM_VERSION=4.2.2 TARGET_PRODUCT=nuclear_evb TARGET_BUILD_VARIANT=eng TARGET_BUILD_TYPE=release TARGET_BUILD_APPS= TARGET_ARCH=arm TARGET_ARCH_VARIANT=armv7-a-neon HOST_ARCH=x86 HOST_OS=linux HOST_OS_EXTRA=Linux-3.13.0-24-generic-x86_64-with-Ubuntu-14.04-trusty HOST_BUILD_TYPE=release BUILD_ID=JDQ39 OUT_DIR=out ============================================ PRODUCT_COPY_FILES frameworks/base/data/sounds/effects/ogg/Effect_Tick.ogg:system/media/audio/ui/Effect_Tick.ogg ignored. PRODUCT_COPY_FILES frameworks/base/data/sounds/effects/ogg/KeypressStandard.ogg:system/media/audio/ui/KeypressStandard.ogg ignored. PRODUCT_COPY_FILES frameworks/base/data/sounds/effects/ogg/KeypressSpacebar.ogg:system/media/audio/ui/KeypressSpacebar.ogg ignored. PRODUCT_COPY_FILES frameworks/base/data/sounds/effects/ogg/KeypressDelete.ogg:system/media/audio/ui/KeypressDelete.ogg ignored. PRODUCT_COPY_FILES frameworks/base/data/sounds/effects/ogg/KeypressReturn.ogg:system/media/audio/ui/KeypressReturn.ogg ignored. PRODUCT_COPY_FILES frameworks/base/data/sounds/effects/ogg/VideoRecord.ogg:system/media/audio/ui/VideoRecord.ogg ignored. PRODUCT_COPY_FILES frameworks/base/data/sounds/effects/ogg/camera_click.ogg:system/media/audio/ui/camera_click.ogg ignored. PRODUCT_COPY_FILES frameworks/base/data/sounds/effects/ogg/LowBattery.ogg:system/media/audio/ui/LowBattery.ogg ignored. PRODUCT_COPY_FILES frameworks/base/data/sounds/effects/ogg/Dock.ogg:system/media/audio/ui/Dock.ogg ignored. PRODUCT_COPY_FILES frameworks/base/data/sounds/effects/ogg/Undock.ogg:system/media/audio/ui/Undock.ogg ignored. PRODUCT_COPY_FILES frameworks/base/data/sounds/effects/ogg/Lock.ogg:system/media/audio/ui/Lock.ogg ignored. PRODUCT_COPY_FILES frameworks/base/data/sounds/effects/ogg/Unlock.ogg:system/media/audio/ui/Unlock.ogg ignored. PRODUCT_COPY_FILES frameworks/base/data/sounds/ringtones/ogg/Sceptrum.ogg:system/media/audio/ringtones/Sceptrum.ogg ignored. PRODUCT_COPY_FILES frameworks/base/data/sounds/effects/ogg/KeypressStandard_120.ogg:system/media/audio/ui/KeypressStandard.ogg ignored. PRODUCT_COPY_FILES frameworks/base/data/sounds/effects/ogg/KeypressSpacebar_120.ogg:system/media/audio/ui/KeypressSpacebar.ogg ignored. PRODUCT_COPY_FILES frameworks/base/data/sounds/effects/ogg/KeypressDelete_120.ogg:system/media/audio/ui/KeypressDelete.ogg ignored. PRODUCT_COPY_FILES frameworks/base/data/sounds/effects/ogg/KeypressReturn_120.ogg:system/media/audio/ui/KeypressReturn.ogg ignored. PRODUCT_COPY_FILES frameworks/base/data/sounds/notifications/ogg/Capella.ogg:system/media/audio/notifications/Capella.ogg ignored. PRODUCT_COPY_FILES frameworks/base/data/sounds/notifications/ogg/CetiAlpha.ogg:system/media/audio/notifications/CetiAlpha.ogg ignored. PRODUCT_COPY_FILES frameworks/base/data/sounds/notifications/ogg/Polaris.ogg:system/media/audio/notifications/Polaris.ogg ignored. PRODUCT_COPY_FILES frameworks/base/data/sounds/notifications/ogg/Pollux.ogg:system/media/audio/notifications/Pollux.ogg ignored. PRODUCT_COPY_FILES frameworks/base/data/sounds/notifications/ogg/Procyon.ogg:system/media/audio/notifications/Procyon.ogg ignored. PRODUCT_COPY_FILES frameworks/base/data/sounds/ringtones/ogg/Aquila.ogg:system/media/audio/ringtones/Aquila.ogg ignored. PRODUCT_COPY_FILES frameworks/base/data/sounds/ringtones/ogg/ArgoNavis.ogg:system/media/audio/ringtones/ArgoNavis.ogg ignored. PRODUCT_COPY_FILES frameworks/base/data/sounds/ringtones/ogg/Carina.ogg:system/media/audio/ringtones/Carina.ogg ignored. PRODUCT_COPY_FILES frameworks/base/data/sounds/ringtones/ogg/Centaurus.ogg:system/media/audio/ringtones/Centaurus.ogg ignored. PRODUCT_COPY_FILES frameworks/base/data/sounds/ringtones/ogg/Cygnus.ogg:system/media/audio/ringtones/Cygnus.ogg ignored. PRODUCT_COPY_FILES frameworks/base/data/sounds/ringtones/ogg/Draco.ogg:system/media/audio/ringtones/Draco.ogg ignored. PRODUCT_COPY_FILES frameworks/base/data/sounds/ringtones/ogg/Machina.ogg:system/media/audio/ringtones/Machina.ogg ignored. PRODUCT_COPY_FILES frameworks/base/data/sounds/ringtones/ogg/Orion.ogg:system/media/audio/ringtones/Orion.ogg ignored. PRODUCT_COPY_FILES frameworks/base/data/sounds/ringtones/ogg/Pegasus.ogg:system/media/audio/ringtones/Pegasus.ogg ignored. PRODUCT_COPY_FILES frameworks/base/data/sounds/ringtones/ogg/Pyxis.ogg:system/media/audio/ringtones/Pyxis.ogg ignored. PRODUCT_COPY_FILES frameworks/base/data/sounds/ringtones/ogg/Rigel.ogg:system/media/audio/ringtones/Rigel.ogg ignored. PRODUCT_COPY_FILES frameworks/base/data/sounds/ringtones/ogg/Scarabaeus.ogg:system/media/audio/ringtones/Scarabaeus.ogg ignored. PRODUCT_COPY_FILES frameworks/base/data/sounds/ringtones/ogg/Solarium.ogg:system/media/audio/ringtones/Solarium.ogg ignored. PRODUCT_COPY_FILES device/softwinner/nuclear-common/googleservice/gapps-jb-20121130-signed/system/tts/lang_pico/es-ES_zl0_sg.bin:system/tts/lang_pico/es-ES_zl0_sg.bin ignored. PRODUCT_COPY_FILES device/softwinner/nuclear-common/googleservice/gapps-jb-20121130-signed/system/tts/lang_pico/es-ES_ta.bin:system/tts/lang_pico/es-ES_ta.bin ignored. PRODUCT_COPY_FILES device/softwinner/nuclear-common/googleservice/gapps-jb-20121130-signed/system/tts/lang_pico/fr-FR_nk0_sg.bin:system/tts/lang_pico/fr-FR_nk0_sg.bin ignored. PRODUCT_COPY_FILES device/softwinner/nuclear-common/googleservice/gapps-jb-20121130-signed/system/tts/lang_pico/fr-FR_ta.bin:system/tts/lang_pico/fr-FR_ta.bin ignored. PRODUCT_COPY_FILES device/softwinner/nuclear-common/googleservice/gapps-jb-20121130-signed/system/tts/lang_pico/de-DE_gl0_sg.bin:system/tts/lang_pico/de-DE_gl0_sg.bin ignored. PRODUCT_COPY_FILES device/softwinner/nuclear-common/googleservice/gapps-jb-20121130-signed/system/tts/lang_pico/it-IT_cm0_sg.bin:system/tts/lang_pico/it-IT_cm0_sg.bin ignored. PRODUCT_COPY_FILES device/softwinner/nuclear-common/googleservice/gapps-jb-20121130-signed/system/tts/lang_pico/it-IT_ta.bin:system/tts/lang_pico/it-IT_ta.bin ignored. PRODUCT_COPY_FILES device/softwinner/nuclear-common/googleservice/gapps-jb-20121130-signed/system/tts/lang_pico/de-DE_ta.bin:system/tts/lang_pico/de-DE_ta.bin ignored. No private recovery resources for TARGET_DEVICE nuclear-evb make: Entering directory `/home/rootroot/wyb/pcf8563_i2c1_r8_ruoge_ov2640/android' target thumb C: i2c-util cd R:\wyb\pcf8563_i2c1_r8_ruoge_ov2640\android\out\target\product\nuclear-evb\system\bin C:\Users\Administrator.USER-20150913SZ>r: R:\wyb\pcf8563_i2c1_r8_ruoge_ov2640\android\out\target\product\nuclear-evb\system\bin>adb remount remount succeeded R:\wyb\pcf8563_i2c1_r8_ruoge_ov2640\android\out\target\product\nuclear-evb\system\bin> R:\wyb\pcf8563_i2c1_r8_ruoge_ov2640\android\out\target\product\nuclear-evb\system\bin>dir i2c* 驱动器 R 中的卷是 rootroot 卷的序列号是 1A1C-E71D R:\wyb\pcf8563_i2c1_r8_ruoge_ov2640\android\out\target\product\nuclear-evb\system\bin 的目录 2016/06/26 21:10 5,388 i2c-util 1 个文件 5,388 字节 0 个目录 268,337,782,784 可用字节 R:\wyb\pcf8563_i2c1_r8_ruoge_ov2640\android\out\target\product\nuclear-evb\system\bin> R:\wyb\pcf8563_i2c1_r8_ruoge_ov2640\android\out\target\product\nuclear-evb\system\bin>adb push i2c-util /data/ 29 KB/s (5388 bytes in 0.180s) R:\wyb\pcf8563_i2c1_r8_ruoge_ov2640\android\out\target\product\nuclear-evb\system\bin> 将R8的串口连接到windows电脑上。通过串口工具:比如Xshell5(有些人可能喜欢使用SecureCRT)读取R8的串口打印 (ubuntu下使用minicom,使用方法自行搜索了) 波特率选择:115200 N 8 1 等R8的android启动完成之后(LCDandroid主界面),输入:su [ 37.990060] init: process 'ril-daemon', pid 950 exited [ 38.010049] init: process 'ril-daemon' killing any children in process group su root@android:/ # root@android:/ # root@android:/ # cd /data root@android:/data # root@android:/data # ll drwxrwxr-x system system 1970-01-11 08:58 anr drwxrwx--x system system 1970-01-02 08:01 app drwx------ root root 1980-10-01 11:03 app-asec drwxrwx--x system system 1970-01-02 08:01 app-lib drwxrwx--x system system 1980-10-01 11:03 app-private drwx------ system system 1980-10-01 11:04 backup drwxrwx--x system system 1970-01-02 08:00 dalvik-cache drwxrwx--x system system 2016-06-21 10:11 data drwxr-x--- root log 1980-10-01 11:03 dontpanic drwxrwx--- drm drm 1980-10-01 11:04 drm -rw-rw-rw- root root 5388 2016-06-26 21:10 i2c-util drwxr-x--x root root 1980-10-01 11:03 local drwxrwx--- root root 1970-01-01 08:00 lost+found drwxrwx--- media_rw media_rw 1980-10-01 11:03 media drwxrwx--t system misc 1980-10-01 11:03 misc -rw------- system system 154 1970-01-02 08:02 pointercal drwx------ root root 1970-01-02 08:00 property -rwxrwxrwx root root 5392 2016-06-25 13:01 read_pcf8563 drwxrwx--x system system 1980-10-01 11:03 resource-cache drwxr-x--- root shell 1980-10-01 11:03 ssh drwxrwxr-x system system 1970-01-02 08:00 system drwx------ system system 1970-01-02 08:03 tombstones drwx--x--x system system 1980-10-01 11:03 user root@android:/data # (让i2c-util具有可执行权限:) root@android:/data # chmod 777 i2c-util root@android:/data # root@android:/data # ll i2c* -rwxrwxrwx root root 5388 2016-06-26 21:10 i2c-util root@android:/data # root@android:/data # root@android:/data # (可选执行) root@android:/data # sync root@android:/data # 注意:串口打印会打印很多log信息。上面的步骤中的状态信息已经被过滤了。 如果你的串口打印过量的log信息,属于正常现象! 如果不想要这么多的状态信息,可以考虑使用adb shell。 不过windows命令行中的adb shell不能够按TAB键自动补充,ubuntu的可以。 也许我们可以把windows的命令行特别设计一下(给它修正一下),让它也可以通过按TAB键来自动补全!^_ 读取pcf8563的第2个寄存器(秒钟值): 表 5:BCD 格式寄存器概况 标明“-”的位无效 地址 寄存器名称 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 02h 秒 VL 00~59BCD 码格式数 root@android:/data # ./i2c-util /dev/i2c-1 0x51 0x02 0 read salve:51 reg:02 Read /dev/i2c-1-51 reg 2, read value:11 root@android:/data # ./i2c-util /dev/i2c-1 0x51 0x02 0 read salve:51 reg:02 Read /dev/i2c-1-51 reg 2, read value:12 root@android:/data # ./i2c-util /dev/i2c-1 0x51 0x02 0 read salve:51 reg:02 Read /dev/i2c-1-51 reg 2, read value:12 root@android:/data # ./i2c-util /dev/i2c-1 0x51 0x02 0 read salve:51 reg:02 Read /dev/i2c-1-51 reg 2, read value:13 root@android:/data # ./i2c-util /dev/i2c-1 0x51 0x02 0 read salve:51 reg:02 Read /dev/i2c-1-51 reg 2, read value:14 root@android:/data # ./i2c-util /dev/i2c-1 0x51 0x02 0 read salve:51 reg:02 Read /dev/i2c-1-51 reg 2, read value:14 root@android:/data # ./i2c-util /dev/i2c-1 0x51 0x02 0 read salve:51 reg:02 Read /dev/i2c-1-51 reg 2, read value:15 可以知道秒钟的值是变化的,基本上是一秒钟递增一次,I2C读取成功。 如果感兴趣的话,在执行读取命令的时候通过协议分析仪或者示波器来抓取I2C1的SCL/SDA的波形,来行更加详尽的分析!^_ 方法二: 给出了一种复杂的解决办法(步骤从简,更多参考开头的方法): R:\wyb\pcf8563_i2c1_r8_ruoge_ov2640\lichee\linux-3.4\drivers\rtc\rtc-sun5i.c 给这个驱动文件增加设备节点:/dev/a20_r8_pcf8563 增加设备节点的方法参考: http://blog.csdn.net/mirkerson/article/details/8844997 android驱动学习---led实验 然后在这个驱动文件的pcf8563_probe函数处截获它的client指针(struct i2c_client *client) client2 = client; 用户可以通过在userspace直接访问设备节点:/dev/a20_r8_pcf8563(open) 然后调用ioctl:ioctl(fd, 0x00000001, 0x02); 来获取第2个寄存器:秒钟的值了。 #include #include #include #include #include #include #include #include #include #include #include int fd; int main(int argc, char **argv) { fd = open("/dev/a20_r8_pcf8563", O_RDWR); ioctl(fd, 0x00000001, 0x02); close(fd); return 0; } 执行过程(直接从内核打印秒钟值了,也可以看到秒钟值大概也是一秒钟递增一次!): root@android:/data # root@android:/data # ./read_pcf8563 [ 1397.060015] ****wyb drivers/rtc/rtc-sun5i.c:1169/r8_pcf8563_open()! open init.... [ 1397.071009] ****wyb drivers/rtc/rtc-sun5i.c:1130/r8_pcf8563_ioctl()! cmd=0x00000001 [ 1397.079076] ****wyb drivers/rtc/rtc-sun5i.c:1160/r8_pcf8563_ioctl()! cmd=0x00000001, value=0x00000046 [ 1397.088342] ****wyb drivers/rtc/rtc-sun5i.c:1177/r8_pcf8563_close()! close init root@android:/data # root@android:/data # ./read_pcf8563 [ 1398.409888] ****wyb drivers/rtc/rtc-sun5i.c:1169/r8_pcf8563_open()! open init.... [ 1398.411203] ****wyb drivers/rtc/rtc-sun5i.c:1130/r8_pcf8563_ioctl()! cmd=0x00000001 [ 1398.419273] ****wyb drivers/rtc/rtc-sun5i.c:1160/r8_pcf8563_ioctl()! cmd=0x00000001, value=0x00000047 [ 1398.428546] ****wyb drivers/rtc/rtc-sun5i.c:1177/r8_pcf8563_close()! close init root@android:/data # root@android:/data # root@android:/data # ./read_pcf8563 [ 1399.668173] ****wyb drivers/rtc/rtc-sun5i.c:1169/r8_pcf8563_open()! open init.... [ 1399.670939] ****wyb drivers/rtc/rtc-sun5i.c:1130/r8_pcf8563_ioctl()! cmd=0x00000001 [ 1399.679022] ****wyb drivers/rtc/rtc-sun5i.c:1160/r8_pcf8563_ioctl()! cmd=0x00000001, value=0x00000048 [ 1399.688299] ****wyb drivers/rtc/rtc-sun5i.c:1177/r8_pcf8563_close()! close init root@android:/data #

80,471

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧