搜索
热门关键词:
Cortex-M0
万用表
无线电
Atmel
Vishay
手机版
官方微博
微信公众号
登录
|
免费注册
首页
新闻
新品
文章
下载
电路
问答
视频
职场
杂谈
会展
工具
博客
论坛
在线研讨会
技术频道:
单片机/处理器
FPGA
软件/编程
电源技术
模拟电子
PCB设计
测试测量
MEMS
系统设计
无源/分立器件
音频/视频/显示
应用频道:
消费电子
工业/测控
汽车电子
通信/网络
医疗电子
机器人
当前位置:
EEChina首页
›
论坛
›
ARM训练班
返回列表
查看:
5295
|
回复:
2
详述Android照相功能的实现(基于飞凌S3C6410开发板+OV9650摄像头驱动层分析)
[复制链接]
yanhong
yanhong
当前离线
积分
54325
发表于 2011-10-13 14:47:18
|
显示全部楼层
|
阅读模式
贸泽电子有奖问答视频,回答正确发放10元微信红包
前些日子买了块飞凌OK6410的开发板+OV9650摄像头模块准备做
Android
应用开发。自己手里虽有现成的Android手机,但考虑到日后裁减硬件,不得不从最原始的开发板着手。之前没有写过Android的驱动,这算是一次尝试。本文涉及到以下几个方面的内容:
1. Android 模块编译
2. Android 模块的板上加载及调试
3. Android Camera 模块的改写
Android 模块编译
每次为了一个模块而编译整个Android系统是一个灾难(4个小时一次),这里会展示如何仅仅编译一个模块而节省大量的宝贵时间。网上多数的方法是通过执行envsetup.sh,接着运行mmm 命令来编译一个文件夹下的模块,但在编译libcamera这个模块时一直没能成功,显示编译依赖于其他几个模块。这里介绍另一种方法,每个模块的文件夹下都必须有一个Android.mk文件,在其中有一项LOCAL_MODULE用于定义模块名称,以照相模块为例,即被定义为LOCAL_MODULE:=libcamera,记下这个模块名称,跳转到Android源码的根目录下,执行以下操作:
Step 1. 进入宿主机linux终端,输入以下命令:
@:#source ./build/envsetup.sh
@:#choosecombo
执行效果如图:
Step 2. 选择Device->Release->键入OK6410->eng
Step 3. 输入make 编译特定模块,如摄像头模块:
@:#make libcamera
执行效果如图:
编译完成效果图:
Step 4. 经过以上几个步骤后,摄像头模块就开始编译了,生成后的动态连接库文件(*.so)会存放在out/target/product/OK6410/system/lib/下,本文我们仅需要libcamera.so
我把上述步骤做成了一个shell脚本,每次修改照相模块的HAL后会自动编译,并将更新后的libcamera.so拷贝到Android源码根目录下,如果愿意,也可以自行修改脚本将libcamera.so拷贝到SD中。
附件下载:
makelibcamera.zip 点击此处下载
makelibcamera.zip
(373 Bytes)
2011-10-13 14:47 上传
点击文件名下载附件
Android 模块的板上加载及调试
libcamera.so已经生成了,那怎么调试呢?一种办法是加载到模拟的Android系统中,但这种方法对于硬件调试往往行不通,那剩下的方法就是板上调试了。如果板子已经能够和PC进行adb连接,那就用adb push把libcamera.so推到目标机/system/lib/中。但可能是OK6410
USB
接口设计的问题,与MacOSX总是无法建立起连接,于是每次我只能通过SD卡进行中转...手动从SD卡上把照相模块cp到lib目录下,然后reboot。
嵌入式
开发比起应用开发,其开发环境往往要恶劣许多。就拿调试而言,往往要通过代码中插入类printf的语句来查看运行状态。android中提供了一个很好的工具logcat,在用户空间中,通过LOGV(Verbose),LOGE(Error),LOGD(Debug)等提供类似printf的功能。假定在程序中#define LOG_TAG "CameraHardware",那通过如LOGE("%s, Hello World!", LOG_TAG)就可以记录在系统日志中。系统日志杂乱繁多,要查看特定的日志就要限定范围,在目标机上定义ANDROID_LOG_TAGS环境变量就可以通过logcat -d来查看CameraHardware的“错误”日志了:
export ANDROID_LOG_TAGS="CameraHardware:E *:S"
logcat -d
目标机和宿主机相连后,通过超级终端来执行以上命令后的结果:
回复
举报
ryanlee
ryanlee
当前离线
积分
5
发表于 2011-10-25 15:31:24
|
显示全部楼层
没有硬件呀。。。。
回复
支持
反对
举报
ihopethatwel
ihopethatwel
当前离线
积分
51
发表于 2012-5-29 16:39:43
|
显示全部楼层
有硬件,但是不知道怎么在linux下面操作
回复
支持
反对
举报
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
关于我们
-
服务条款
-
使用指南
-
站点地图
-
友情链接
-
联系我们
电子工程网
© 版权所有
京ICP备16069177号
| 京公网安备11010502021702
快速回复
返回顶部
返回列表