现在安卓大行其道,不是高通,就是MTK,甚至于很多人不知道还有德州仪器这个平台了,关于如何在德州仪器Omap37xx平台上调试SE4500,网络上除了针对SE4500的几个pdf文档介绍之外,没有任何资料可供参考,相信本文对你很有帮助,不必感谢。本文出自C.S.D.N原创(转载标明来源)。
     
一、SE4500因为工作在3.3V,德州仪器的Omap37xx工作在1.8V,所以之间必须要进行电平转换,建议使用德州仪器的TXB0104/08进行转换(看好了是TXB0104/08不是TXS0104/08,两者都是QFN封装,价钱应该是一样的,但是支持的最高转换频率是不一样的),因为SE4500属于图像采集,所以要求频率超过24Mbps,所以必须使用TXB系列的电平转换芯片。

二、SE4500在不上电时,会将I2C总线的电平拉低,严格意义上讲,摩托罗拉的SE4500应该是兼容I2C协议,不是标准I2C协议,标准I2C协议要求总线上不工作的器件应该是高阻状态,而不是把I2C总线电平拉低,导致总线上的其他设备无法正常工作。

三、PCB layout的时候,camera信号线最好走等长线,这样图像采集的信号干扰少,会好很多。

四、CAM_Open,CAM_Close莫名其妙被调用多次,导致CAM domain在系统休眠时无法进入休眠
以下部分注册表取自TI平台SE4500驱动的注册表部分:[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\CAM]
"Dll"="cam_SE4500.dll"
"Prefix"="CAM"
"Index"=dword:1
"Order"=dword:200
"BufferSize"=dword:80000
"BufferCount"=dword:4
"IClass"="{A32942B7-920C-486b-B0E6-92A702A99B35}" ; CE_DRIVER_POWER_MANAGEABLE_GENERIC_GUID
"PowerFlags"=dword:00000103         ; send pre/post device state changes
      摩托罗拉给的注册表配置基本上是这个样子,通过在CAM_Init、CAM_Open、CAM_Close函数开头部分添加打印信息。      我们发现,在驱动加载时候,按理说,应该只有CAM_Init被device.exe调用,后面的CAM_Open和CAM_Close只有程序调用了 CreateFile("CAM1:",**)和CloseHandle以后才会分别调用CAM_Open和CAM_Close。      Log信息显示,驱动加载的时候,CAM_Init被调用一次,CAM_Open被连续调用了两次,CAM_Close被调用了一次,导致 refCount在调用CAM_Close的时候不为零,所以导致Camera的clock无法关闭,因为只有refCount等于零时才会关掉FCLK 和ICLK。      为什么会出现上面这种情况呢,我们经过分析,发现是注册表中IClass后面的值有问题,原来摩托罗拉(现在是斑马,Zebra Technologies)在配置这个参数的时候,是没有考虑整个EVM3530平台是否进入休眠的,只关心SDL软解功能是否能够正常工作。     我们修改了Iclass的值如下: "IClass"=multi_sz:"{0AE2066F-89A2-4D70-8FC2-29AEFA68413C}=%b","{CB998A05-122C-4166-846A-933E4D7E3C86}=%b"
      经过测试,此时在驱动加载时,只有CAM_Init被调用了。通过修改Drvr_intf.cpp和hw_intf.cpp源代码,我们在摩托罗拉提供的 驱动代码基础上解决了驱动在加载时就给SE4500上电的问题,此时如果应用程序不使用4500的话,它有20多mA的电流消耗,除非在应用程序中配置为AudoIdle,所以我们这样做,在驱动加载时不上电,只有在SDL调用CAM_Open的时候再给SE4500上电,调用CAM_Close时再给断电。      但这时有个问题,就是系统进入休眠时会切断控制SE4500上电的三极管的控制脚的电压,除非你的系统没有真正进入休眠(CORE或者PER domain没有关闭,这样当然不会切断1.8V电压,你的LDO肯定不会关掉), 所以SE4500的3.3V在休眠时就会断电,之前启动应用程序后给里面通过I2C发送的配置参数都会丢失,一唤醒系统,再进休眠,此时SE4500又有20多mA的电流消耗,所以,我们在驱动中动态调用pin Mux,就是如果应用程序打开了SE4500,再进入休眠的话,我们动态设置pin Mux为OFF_INPUT_PULL_UP,也就是OFF MODE使能,INPUT使能,上拉使能(Omap3平台的内部上拉下拉只在引脚作为输入功能时有效,故我们设置为输入,而非输出)。      注意:SE4500使用了"Index"=dword:1,所以SDL中一定是使用CreateFile("CAM1:",***)这样的方式打开的,为了不至于冲突,系统的Camera的Index不能使用1,可以使用除1以外的其他可用值。
五、SE4500驱动和系统自带Camera驱动同时加载时(两个都使用Camera总线,但是分时复用,理论上不会冲突)。系统Camera能使用,能预览能拍照,但是SE4500能出光,不能解码了,这是怎么回事?
      经过测试,我们发现是在camera驱动加载时,注册了IRQ_CAM0中断,导致SE4500的SDL软解库中无法注册该中断,所以后面就只能出光不能解码,发现该问题,我们修改了camera驱动的实现,让其只有camera打开时,才注册该中断,通过一个互斥机制,camera打开时会检测SE4500是否在工作,如果在工作,就提示ISP被占用,打开失败,反之亦然。该问题迎刃而解。

摩托罗拉SE4500 德州仪器TI Omap37xx/AM3715/DM3730/AM3530 wince6.0/Windows Mobile 6.5平台 二维软解调试记录及相关解释的更多相关文章

  1. 摩托罗拉SE4500 三星 S3C6410 Wince6.0平台软解码调试记录以及驱动相关问题解释

    虽然S3C6410出来很多年了,甚至于已经停产了,出货的几乎都有依赖于库存,SE4500也出来很多年了,但是网上依旧不会有调试资料帮助你,一切源于自私.希望本文能帮到你,不必感谢.本文来自C.S.D. ...

  2. 【转载】如何在德州仪器网站查找和下载PCB封装

    德州仪器的网站做得相当不错,查找IC资料和下载IC封装样样给力.那么如何在TI网站上能够快速查找到自已需要的PCB封装呢?下面我来告诉你. 1.       在浏览器中输入网址http://weben ...

  3. 主流芯片解决方案Ambarella的高清网络摄像机、德州仪器和控制海思

    (本文由四川艾普作为数码科技有限公司 苏斌.范清华 收集) 高清网络视频监控发展到今天.正的高清时代.诸多有实力的高清摄像机厂家的产品线也逐渐完好起来,高清网络视频监控的配套产品有更加丰富和成熟.与此 ...

  4. 【DSP开发】德州仪器达芬奇五年之路七宗罪,嵌入式处理器架构之争决战2012

    芯片是产业链上游重要的一个环节,一颗小小的芯片具有极高的技术含量和价值,半导体行业每年都会有一个各大厂商营业额的排名,除去2009年,常年盘踞在前三名位置的分别是英特尔,三星半导体和德州仪器,英特尔凭 ...

  5. 【DSP开发】回马枪要你命 德州仪器发布最强ARM芯片Keystone II

    之前许多传闻称德州仪器将会彻底放弃OMAP系列ARM处理器,从此离开手持设备的江湖.如果你信以为真,那可就太小看德州仪器这个老狐狸了--要知道德州仪器诞生的比Intel都还早几年.三小时前,德州仪器宣 ...

  6. 摩托罗拉SE955 One Discrete Length,Two Discrete Lengths,Length Within Range 相关解释

    motorola scanner datasheet相关解释(下面通过Simple Serial Interface(SSI)进行设置,非扫描官方datasheet的设置条码): One Discre ...

  7. TI(德州仪器) TMS320C674x逆向分析之一

    一.声明 作者并不懂嵌入式开发,整个逆向流程都是根据自身逆向经验,一步一步摸索出来,有什么错误请批评指正,或者有更好的方法请不吝赐教.个人写作水平有限,文中会尽量把过程写清楚,有问题或是写的不清楚的地 ...

  8. TI(德州仪器) TMS320C674x逆向分析之二

    TI官网文档: http://www.ti.com/product/tms320c6745/technicaldocuments 里面资料非常详细,可以对着里面一个个看,用的比较多的两个文档: TMS ...

  9. TI推出SimpleLink低能耗蓝牙CC2541

    TI推出SimpleLink低能耗蓝牙CC2541 日前,德州仪器 (TI) 宣布推出 SimpleLink™ 低能耗蓝牙 (Bluetooth®Low Energy) CC2541-Q1, 这是一款 ...

随机推荐

  1. 夺命雷公狗---DEDECMS----30dedecms数据dede_archives主表进行查询l操作

    在plus目录下编写一个test2.php的文件,取出dede_archives的所有信息 <?php //编写test2.php这个文件,主要是为了实现可以取出dede_archives表的所 ...

  2. 解决filezilla中无法显示中文的文件名

    设定字符集时选择自定义字符集, 然后输入字符集为 GBK

  3. html5,表格

    <table border="1"><caption>表格的实例</caption><tr><td>单元格</td ...

  4. 【兄弟连ThinkPHP】1、介绍和安装

    琢磨了好几天的ThinkPHP了,兄弟连的视频真心不错,下面是记得一些要点,只做备忘,有兴趣的朋友请去百度兄弟连. ## ThinkPHP 3 介绍及安装#讲师:赵桐正微博:http://weibo. ...

  5. 七、Java基础---------JDK安装与配置

    配置环境变量名词说明 path:通过path系统去寻找可执行的java文件. JAVA_HOME:JDK的安装目录 classpath:加载目录 为什么需要配置path,什么时候需要classpath ...

  6. 【DP】斜率优化

    斜率优化 入门题:PKU3709 很多人貌似都是做这道题来K斜率优化的,所以看了资料以后还是开始入手吧. 然而还是得跪求大神的程序啊 ORZ ORZ…… 其实理解斜率优化就是会列斜率不等式,还要理解剔 ...

  7. MKCOL not allowed

    通过TortoiseSvn操作GitHub的时候出现下图提示: 原因:尝试在根目录创建新的文件夹(文件),貌似是不被允许的行为 解决:只能在trunk 或者 branches下再新建文件夹(文件)

  8. 创建与删除SQL约束或字段约束

    1)禁止所有表约束的SQLselect 'alter table '+name+' nocheck constraint all' from sysobjects where type='U'2)删除 ...

  9. Asp.Net MVC 模型验证详解-实现客户端、服务端双重验证

    概要 在asp.net webform开发中经常会对用户提交输入的信息进行校验,一般为了安全起见大家都会在客户端进行Javascript(利于交互).服务端双重校验(安全).书写校验代码是一个繁琐的过 ...

  10. 160905、c3p0详细配置

    官方文档 : http://www.mchange.com/projects/c3p0/index.html <c3p0-config> <default-config> &l ...