原创 给力的一周

2011-6-20 08:19 5649 10 28 分类: 消费电子

    最近有两个项目都挺着急的,尤其是LINUX下OMAP3530接MT9P031的摄像头驱动弄了很长时间。本来是让新来的兄弟负责驱动来着,无奈兄弟没有接触过硬件,也没有linux下视频驱动开发的经验,捣鼓了一个多月还没理清驱动注册的流程,而且也没有什么思绪--的确,这个对一个刚毕业的学生来说的确难度比较大……想着这个项目对今年的计划非常重要,而项目还没赢利,我每月还要拿那么多银子,心里就待不住了。只有硬赶鸭子上树了,不管怎么着,今年的几个项目必须得做出来。上个月设计完一个新板子就马上转移精力到这个驱动开发上了。


    开始看到一堆堆代码,一层层的看着就头大的不行。后来在网上查了些驱动架构的资料,又找了些SENSOR的驱动还有一些杂七杂八的材料就泡了起来。到现在现学驱动架构的话时间上来不急了,于是先找了一些OMAP3530相关的摄像头驱动,模拟的、数字的,各个LINUX内核版本下的驱动找了好几个。然后就是总结这些驱动的异同,这些异同一出来,相同的部分参考移植,不同的部分参考修改……只要这些异同不会整理错,直觉告诉我——能成……


    计划实施的还算比较顺利,经过一周多时间这些异同都圈出来了,于是开始组装调试自己的驱动。驱动的调试还是挺麻烦的,以前用仿真器习惯了,现在调LINUX下的驱动,真是有力使不出啊。有时候一个小小的疏忽导致LINUX内核都跑不起来,串口什么打印信息也没有,只能使出硬件调试的野路子——在内核编译结果中查打印信息所在的内存地址,连上仿真器,直接去内存里面抓ASC码,抓寄存器……呵呵,相信很多做过N年LINUX开发的都没有见过这么干的……没有办法,虽然土,但也还有效果。


    设备注册上了……


    I2C检测到了MT9P031传感器型号(起初两块样板都有焊接问题,无法进行I2C通讯)……


    OMAP3530 ISP输出时钟有了……


    MT9P031设置通过了……


    MT9P031锁相环配置通过了,所有输出与预期一致……


    感觉每天都会有进展,心里总会不停的激动,似乎总能感觉到自己渴望的东西离自己越来越近,似乎就要能听到它的呼吸。


    上周末的时候截取到了疑似图像帧,当前景亮度明显变化的时候可以看到帧内数据有规律的变化。于是断定,它不远了……


    这周自己写了一个把MT9P031的BAYER格式图像数据转存bmp文件的应用程序,还写了一个将BAYER格式图像直接显示到电视机的程序。结果前两天都出一些奇怪的图。后来跟老师讨论这个奇怪现象的时候,老师发现了我应用程序里的一个移位的语法错误,修改后bmp文件赫然出现了清晰的图像……这就像不再是听它呼吸,而是看到了它清秀可人的面庞!虽然表面淡定,可心里还是那啥……


    不过,还有一个问题,也是最后一个关键问题。当时虽然得到了图像,但LINUX并无法得知有可用帧准备好。当时获取图像是以非阻塞模式打开的摄像头,所以是硬把帧缓冲地址取出来做的处理。LINUX无法得知可用帧,怀疑要么没进帧中断,要么帧中断有问题而没有对帧缓冲作操作处理。


    周五下午在茫茫码海里找到了那个帧中断,在里面加上了打印信息,从串口打印信息里可以推断,帧中断的确发生了,而且发生频率和自己配置的帧率一致。范围进一步缩小了,肯定是中断里没有通知操作系统……周五晚上有约,就没有进一步确认问题,但能肯定问题发生在什么地方了。


    周六没什么事,心里放不下那么问题,就去加了下班。对比了一些其他版本内核的帧中断处理和我用的内核版本程序,发现我使用的代码里帧中断只处理了PAL或NTSC间行扫描类型的奇场,而一判断是逐行扫描的类型就直接退出了。不知道是这个版本本身就有的问题,还是给我们提供代码的开发板商修改过……于是在其中加入了逐行扫描的处理。


    然后从串口打印信息里面可以推断出LINUX已经识别到了可用帧。最后一块石头终于落地了,所有能算得上困难的问题都解决了……心里一个舒畅,给同学打电话想聚众三国杀来着,居然不够人……哎,回家又是无聊,就在实验室里继续修改那个把视频显示到电视上的程序,不长时间就修改好了,在电视里可以实时的看到采集的视频图像。


    所有的主要问题都搞定了,悲剧的是居然找不到人一起吃饭,只能晚上一个人去吃小火锅。


    另外,这个过程中我还负责着另一个产品的样机生产和传感器控制逻辑编写,这周控制逻辑也写完了。


    总的来看,这周相当给力!有我欠着人家饭的兄弟姐妹,以及觉得我该请吃饭的街坊邻居,下周抓紧联系啊……

PARTNER CONTENT

文章评论18条评论)

登录后参与讨论

用户1262048 2013-6-27 16:06

lz热爱开发的精神真让人感动,水平也让人羡慕~

用户1575440 2011-8-3 13:14

逻辑性很强哟

用户1015376 2011-8-3 13:02

ti的东西的确不好做,呵呵,如果lz以前做过ti的东东,后续会简单很多,最早我们研究ti的DM270 ccd输入 3A引擎,那才叫痛苦。 辛苦!

xucun915_925777961 2011-7-15 16:26

不错^_^

用户1507469 2011-7-14 00:06

底层不好做啊

wtcheng_600655433 2011-7-6 15:33

工程师的真实生活写照.

417092198_177933282 2011-7-4 09:20

楼主目前是在北京么?如果在北京,就可以当面去见一下了

用户1321739 2011-7-2 09:10

写驱动,这个工作我好喜欢啊,眼看着设备一点点动起来的感觉真好,谢谢楼主的经验分享,呱唧呱唧

用户1580664 2011-6-29 11:20

顶呀,看的人鸭梨很大!

用户1200793 2011-6-28 17:28

请客吧,楼主!
相关推荐阅读
张进东 2016-05-15 23:53
航程第一站抵达
我们惊帆科技第一次融资的所有资金已经到位,这对我们来说是一个里程碑式的节点,我们到达了航程中的第一个港口,目前物资补充结束,而且航船已经进行了修缮和扩建,船员也正在增加中。再进行一些必要的调整和补...
张进东 2016-03-26 09:28
E乱情迷(上)
第一次做电路板是读高中的时候,从每周20块钱的生活费里省下一半来买元器件和材料。那样纠结着做出了自己的第一块电路板。敷铜板,透明胶带,三氯化铁,松香,焊条,现在想来还带着那么一种让人难以释怀的亲热...
张进东 2016-03-21 11:16
永不停息的红舞步(二)-4
    2014年10月2日,是我和老婆第一个结婚纪念日,我们决定拿出5000元钱来启动这个项目,做一些学习板送给生活条件差些的在校生。后来我把想法发到博客里,得到40多位工程师和一些老板的支...
张进东 2016-03-21 11:12
永不停息的红舞步(二)-2
    2012年6月,我和两个同学在北京天通苑附近注册了一个公司,办公地点在主要做图像处理方面的项目开发,为规模较大而研发力量不足的公司提供方案或成品电路板。前面之所以说“清华的恩师”,是因为除...
张进东 2016-03-21 11:09
永不停息的红舞步(二)-1
    时光如白驹过隙,转眼就是六年。上次更新这篇文章还是在2010年初。之前提到我从2009年进入清华大学的实验室,协助实验室的老师实现研究成果的产品化。我是实验室里唯一做硬件的,主要负责硬件设...
张进东 2016-03-18 00:50
永不停息的红舞步(二)-3
我很庆幸,2014年,我遇到了仿佛冥冥中注定的“取经人”,开始了让自己甘愿为它付出一切的事业,也就是我们现在在做的智能健康监测。回顾以前,一直到现在,我想可以结合我做的事情介绍一下我对电子这个行业...
EE直播间
更多
我要评论
18
10
关闭 站长推荐上一条 /3 下一条