技术牛人--给力的一周

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

    最近有两个项目都挺着急的,尤其是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已经识别到了可用帧。最后一块石头终于落地了,所有能算得上困难的问题都解决了……心里一个舒畅,给同学打电话想聚众三国杀来着,居然不够人……哎,回家又是无聊,就在实验室里继续修改那个把视频显示到电视上的程序,不长时间就修改好了,在电视里可以实时的看到采集的视频图像。

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

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

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

相关文章
好家伙!30% 国外程序员每天“摸鱼”四五个小时,国内似乎更严重
2020 年全球爆发新冠疫情后,很多国家和地区的企业支出远程办公,除了一些必须在现场办公的岗位之外,很多岗位的员工都可以居家办公。
|
7月前
|
移动开发 前端开发 JavaScript
花无涯带你走进黑客世界16 前端攻城狮资源
Web前端开发是从网页制作演变而来的,在互联网的演化进程中,网页制作是Web 1.0时代的产物,那时网站的主要内容都是静态的,用户使用网站的行为也以浏览为主。
|
9月前
|
JavaScript 前端开发 程序员
珍藏多年的神网站都捐了,你需要的我都有,有了这些网站工作生活不用愁(二)
珍藏多年的神网站都捐了,你需要的我都有,有了这些网站工作生活不用愁(二)
131 0
|
10月前
|
数据采集 JSON 算法
贡献!程序员大学四年珍藏的26个宝藏网站,全部拿出来了
哔哩哔哩 对于程序员来说,B站不可只是一个看番、鬼畜、舞蹈等等的一个网站,B站上所拥有的学习资源是非常非常非常丰富的,基本上你可以在这里找到任何你想要的资源(不是你想的资源,狗头),哈哈。
|
设计模式 算法 网络协议
别再问我推荐什么书籍和网课,这次把私藏很久的资料都贡献了(上),建议收藏!
别再问我推荐什么书籍和网课,这次把私藏很久的资料都贡献了(上),建议收藏!
585 0
|
架构师 Cloud Native 开发者
MVP一周精选 20200509:那些技术人的挣扎与求索
小长假归来,相信大家又是所向披靡的满血开发者了。本周我们继续为您带来前转转首席架构师孙玄的5月分享——如何构建普适的企业级微服务架构,还有完备的职场人生修炼秘籍哦!
MVP一周精选 20200509:那些技术人的挣扎与求索
|
新零售 Java 程序员
8月2日云栖精选夜读 | 20小时攻克“疫苗溯源码”,在改变世界这事上有群程序猿很skr!
有群很skr的程序猿,用他们的小宇宙在疫苗的这片混沌里,点起一道亮光。
7083 0
|
程序员
20小时攻克“疫苗溯源码”,在改变世界这事上有群程序猿很skr!
有群很skr的程序猿,用他们的小宇宙在疫苗的这片混沌里,点起一道亮光。
2202 0
|
Web App开发 JavaScript 前端开发
【招聘启事】阿里巴巴招前端开发啦!周四晚7点前端大牛直播,还有内推机会!
本周四(7月19日)晚7点,云栖君邀请了两位阿里前端专家,从新人前端和进阶专家的角度帮助大家梳理:一个专业的前端,在职业生涯规划上会经历哪些坑; 需要从技能、心理上做哪些准备; 本场讲座将在钉钉群内进行直播,并且完全免费哦!
8465 0