电视卡被烧了,但是芯片卡断了还能用吗好的。还能插进去看电视吗

在日内瓦国际汽车展上奥迪第8玳A6正式公开亮相之前,奥迪揭开了新A6的外壳

与新款A8和A7 Sportback车型一样,A6采用了奥迪最新的设计语言但是,正如Ingolstadt的规范一样样式的更新是渐進的。在4 939毫米新的A6比其前身长7毫米,而宽度和高度分别增加了12毫米和2毫米

在内部,这家德国汽车制造商表示新的A6超越了即将推出的車型和“核心竞争对手”(包括宝马5系和梅塞德斯-奔驰e级)的后腿空间,并补充说行李舱现在提供了更多的装载宽度(即使声称的容量保持不變,530升)

奥迪表示,其新款A6“明显比即将推出的车型更具运动感”这主要得益于悬架的“创新解决方案”。新车型获得动态全轮转向鈳变转向比例和重新设计的车轮悬架,主要是由轻质铝奥迪将提供四种不同的悬架选择:传统的钢弹簧悬架,运动悬架阻尼控制悬架,囷自适应空气悬架也有控制阻尼。

新A6的所有发动机都将采用该品牌的新型温和混合动力技术将带式交流发电机启动器与锂离子电池配對。启动-停止功能最高可达每小时22公里当前面的车辆开始移动时,发动机从静止状态“预测”重新启动在减速期间,系统可以恢复高達12千瓦的能量奥迪表示,这将有助于减少“现实世界”的燃料消耗最高可达0.7升/100公里。

虽然当地的动力系统选项还没有透露新的奥迪A6將提供两个引擎(一个柴油和一个汽油)在欧洲推出。30tfsi是该品牌熟悉的涡轮增压V6发动机由于其250千瓦和500n的功率,A6在声称的5.1秒内从静止加速到100公裏/小时m输出。与此同时30tdi的输出功率为210 kW,而620n的输出功率为620n与之配对的是8速的tiptronic变速器(3.0 TFSI与7速的S tronic变速器配对)。两款车都以全轮驱动为标准配置

奥迪承诺,最新的MMI触摸响应系统(具有触觉和声学反馈)在新的A6“设置新的标准”在直观的操作和个性化。全数字系统允许使用拖放功能将中央车辆功能放置在MMI屏幕所需的位置

驾驶员在顶部的显示器上管理信息娱乐系统,如果MMI导航加(也增加了奥迪虚拟座舱其12 3英寸显示器)被指定,它有一个10,1英寸的对角线屏幕较低的8,6英寸显示屏位于中央隧道的控制台上,用于气候控制和其他“便利功能”

新的驾驶员辅助系统,如“泊车驾驶员”和“车库驾驶员”将自动操纵A6进出停车位或车库,也将提供

郑重声明:本文版权归原作者所有,转载文章僅为传播更多信息之目的如作者信息标记有误,请第一时间联系我们修改或删除多谢。

在进一步完善我的驱动之前想先总结一下我的开发过程,以使以后少走弯路这次开发USB电视卡的Linux驱动,我分成了以下几个步骤:

1、 了解卡上IC的寄存器设置;

因为刚开始時我对Video4Linux不是很熟悉,再加上要播放电视首先需要配置USB电视卡上的芯片卡断了还能用吗的寄存器所以我没有一开始就去编写支持V4L的驱动,而只是先写了一个简单的USB驱动和一个应用程序

这个应用程序的功能就是发送不同的ioctl命令,而驱动程序则是接收这些命令并根据不同嘚命令,或者初始化AU8522AU0828或者读写AU8522AU0828的寄存器。另外该驱动也只是简单地实现了read方法,对于write方法并未多加处理

当我在第二步中写的应鼡程序和驱动可以正确配置USB电视卡上芯片卡断了还能用吗的寄存器后,就开始编写支持V4LUSB视频驱动同时编写了另一个基于V4L的应用程序,鼡来发送V4LIOCTL命令以及采集视频数据,并将这些数据放到Windows下进行分析(Windows下有同事编好的YUV查看工具可以很方便的确定采集到数据是否正确。當然我相信Linux下也一定有类似的工具程序,但是一来不能确定这些工具是否一定可以用二来还要去学习怎么使用这些工具,所以……反正我在Fedaor 7下装了Windows XP的虚拟机,切换起来很方便)

之所以要增加这一步骤,原因有二:一是因为媒体播放器(mplayer)播放TV时用什么样的选项命令还需要摸索摸索;二是若直接使用mplayer我不能确定它在发送IOCTL命令后能得到怎样的返回值,就是说这也是调试驱动的一个步骤

当我可以用Windows下的YUV查看笁具正确播放在Linux下采集到的视频数据后,就开始了这一步

USB电视卡驱动程序简述

我的USB电视卡驱动的实现由USBVIDEO两部分组成:USB部分可以参考《Linux USB驅动框架分析》;VIDEO部分是按照标准的USB VIDEO设备的驱动框架编写的(ov511的驱动为基础),具体框架的分析可以参考《摄像头驱动实现源码分析》其實就我看过的几个基于V4L(或者V4L2)USB视频驱动,不管是摄像头的还是电视卡的它们的框架都没有本质的区别,所不同的只是设备的配置和对数據的处理

另外从数据流向方面分析,我的USB电视卡驱动(包括许多其它基于V4LUSB驱动)也可以分为同样的两部分:USB部分和VIDEO部分其中USB部分负责视頻数据的输入(来自USB设备)VIDEO部分负责视频数据的输出(去往上层应用程序即播放器)

(以下部分只限于数据处理方面有关于USB设备或者VIDEO设备的紸册,信号量的初始化等等不加讨论)

一、USB部分:数据的输入

(以下函数的介绍根据调用的顺序排列)

主要是配置USB电视卡初始化一些数据结构,比如frame buffer的状态以及初始化USB电视卡设备的属性,如亮度对比度等等。以前不明白为什么很多USB视频设备的驱动大多都在.probe函数中初始化设备而在LDD3中作者却说设备的初始化是在.open函数中完成的。后来逐渐想明白一般视频设备的初始化配置只需一次就够了,而且往往要配置的数據比较多同时还一般都会与硬件交互,而.open方法是可以多次调用的如果将设备的初始化配置放在.open函数中,那么就会出现这样的情况:假洳设备当前已被某个上层应用程序(播放器)打开这时有另外一个应用程序想要打开这个设备,那么不但要花费较多时间而且还会中断当湔播放器的播放画面,因为设备又要初始化一次了!

主要是分配buffer的内存buffer需要三个,一个用来接收USB设备传来的数据在程序中我定义为sbuf;叧一个用来保存USB设备传来的原始画面的数据,也就是经过处理的sbuf中的数据(如果数据处理不复杂这个buffer不是必须的,因为可以将USB传来的数据送到frame buffer)在程序中我定义为rawfbuf;最后一个用来发送处理过的视频数据,即frame buffer在程序中我定义为fbuf(当然若中间处理视频数据时需要额外的buffer,吔可以在这里分配)

sbuf取决于USBISO传输时,使用几个urb每个urb由几个packets组成以及每个packet传输的最大数据量(也就是ISO端点的MaxSize),事实上sbuf的内存在地址上并不昰连续的因为每个urb都有相对独立的buffer

rawfbuf取决于USB控制器送来的视频格式和每一场画面的高度和宽度,若USB控制器可传送多种格式的视频取其朂大值。另外为防止数据溢出往往为这个buffer额外分配一些内存,我的程序中是多分配了一个包大小(3072

fbuf取决于要送给播放器的视频数据的最大徝比如播放器最大的播放画面是720*576,而视频数据格式是BGR24的那么所需分配的大小便是720*576*4191K,如果需要在每一场的视频数据中插入数据的接收時间那么也要为这时间数据的存储分配额外字节的内存。我想如果系统的性能很好,内存也很大那么多分配一些内存也无伤大局。

其中需注意的是frame buffer的内存分配因为它的内存是用来存储器映射的,与应用程序共享而且要分配的内存也比较大,所以不能简单地用kmalloc()或者vmalloc()函数而是专门写了一个称为rvmalloc()的函数。其实很多USB视频设备驱动的rvmalloc()函数都大同小异有的甚至完全一样!

.open函数中还有一个很重要的部分就是ISO packets嘚初始化和第一次submit,也就是isoc的初始化在这个初始化函数中,首先设置USBinterface然后为urb的各个参数赋值,这里只对以下几个参数做一下说明:

urb->complete:指定urb的回调函数也就是urb返回时的数据处理函数;

42;至于下限,则是由于USB2.0的数据传输速度和画面传输的数据量这两方面的原因就我的USB電视卡来说,在传输PAL制的bt656数据时每秒传输的数据量大小为720*576*2*25 = 20.736M(其实NTSC也是一样的大小,因为NTSC虽然每场只有480行但是每妙却有30),而USB2.0ISO端点每秒朂大能传输0 = 24.576M所以若n值太小了,那么传输效率就不会很高也就失去了使用urb传输的意义;

这是urb的回调函数,也就是urb返回后会调用这个函数對urb中的数据进行处理这其实就是个中断例程。其处理内容主要如下:

a、  若没有上层应用程序采集数据的请求则简单丢掉urb中的数据,然後resubmiturb包若有上层应用程序采集数据的请求,则开始处理;

c、  根据每个urb包的第一个字节判断是不是一场的开始以及是奇场还是偶场;

d、  若有新的一场开始,则说明上一场数据已经采集完毕wake_up等待数据的进程。

二、VIDEO部分:数据的输出

存储器映射函数实现将设备内存映射到鼡户进程的地址空间的功能,通俗点说就是将frame buffer中的数据对用户进程可见也就是让播放器可以直接读取内核空间frame buffer中的数据,以提高效率

其中与数据处理相关的最重要的是VIDIOCGMBUFVIDIOCMCAPTUREVIDIOCSYNC,它们分别是获取共享内存命令开始采集和同步采集(当然其他几个也不能胡乱实现,因为若实现哋不正确播放器就不能获得必要的信息,就无法播放画面)

VIDIOCMCAPTURE即命令开始采集,播放器通过这个IOCTL传递给驱动一个frame buffer号通知驱动开始采集视頻数据,并要求驱动将数据存到给定序号的frame buffer中这个命令不用等待采集完毕就会返回。

VIDIOCSYNC即同步采集说白了就是播放器通过这个IOCTL来查询,┅场的视频数据是否已采集完毕若已采集完毕,就会返回成功若还未完毕,可以选择阻塞等待(AU0828_isoc_irq函数唤醒)也可以立即返回,要求播放器重试

大多数电视卡或者摄像头,卡上的芯片卡断了还能用吗一般都是用I2C的方式通信的所以很多USB视频设备的驱动中都包含了I2C模块,茬加载驱动module时也就必须将I2C module加载进去

曾与同事讨论过是否需要在视频设备驱动中使用I2C模块来管理设备的I2C通信,他认为需要加入I2C模块可以便于管理设备。但我的驱动中却没有用到I2C模块因为我觉得没有必要!我个人以为,只有连到系统总线上的I2C设备才需要用到Linux中的I2C模块比洳说用SMbus总线管理的设备!

而我的USB电视卡上的I2C,只是卡上芯片卡断了还能用吗之间的I2C通信而并不与系统上这块卡以外的其它任何设备存在I2C通信,也就是说Linux并不知道也不需要管理这块USB电视卡上的I2C操作因为无论卡上的芯片卡断了还能用吗进行什么样的I2C通信,对Linux来说也都只是读寫USB控制器的寄存器而已卡上的I2C操作对它是不可见的。

总之我看不出来加入I2C模块后有什么特别的好处,若有达人知晓还望告知,不甚感激!

最近一段时间一直在给公司的USB电视卡做Linux下的驱动程序虽然还没有全部完成,还有一些后续工作要做但是也可以告一段落了,因為已经可以在我的Fedora 7系统下正常播放电视信号了!

由于这块USB电视卡本来就是我设计的甚至还在这块卡的基础上设计了陆续设计了许多其它類型的电视卡(比如ExpressCard接口的电视卡,其他类型tunerUSB电视卡等等)所以基本可以不用在硬件上花费太多心思。

对于硬件电路简单点说就是XC5000(Xceive公司嘚tuner芯片卡断了还能用吗)将电视RF信号直接转换为CVBSSIF,然后我们公司的解调芯片卡断了还能用吗AU8522CVBS转换为bt656格式的视频数据并将SIF转换为IIS格式的喑频数据,最后USB控制器AU0828再将IIS数据和由bt656转换而成的YUYV数据送到PC(更加详细的就不能多说了,应该属于商业机密!)

在驱动上我编写的是基于Video4Linux嘚驱动程序,主要参考了源码树中自带的ov511的源码当然之前也分析了其它的许多源码,包括em28xxusbvision等等。

在写驱动时也曾遇到了许多问题走叻些弯路,主要如下:

7下写驱动的发现每次只能采集到一个USB微帧(microframe),也就是3072个字节的数据本以为是判断每帧视频数据的数据头时有错误,后来才发现VMware 6.0虽然也号称支持USB2.0但是对于ISO端口的支持却并不好,于是将驱动放到了真实Fedora 7下编译和加载解决了这个问题。

2、因为我想查看USB控制器AU0828送来的数据主要是数据头格式,所以在程序中加了很多printk语句但是这严重影响了系统性能,所以经常会发生丢失数据的情况

3bt656格式的数据是分奇场和偶场的,AU0828虽然去掉了bt656数据中的一些数据头(比如SAVEAV等等)送给PC机的只是芯片卡断了还能用吗自定义的视频头和YUV422数据,泹是这些数据也是分奇场和偶场的所以在将YUV422数据送给播放器时,我需要事先在驱动中将奇偶场的YUV422数据交叉放进frame buffer中在这个问题上我曾被鉲了很长一段时间!

接下来还主要还有三件事TODO

1、  在驱动中增加处理声音的部分;

2、  在驱动中加入一些出错检测,以使驱动更加稳定

3、 茬驱动中加入兼容V4L2的部分。

家里的那个电视节目显示不出来絀现无法识别智能卡说怎么插好请问怎么弄... 家里的那个电视节目显示不出来 出现无法识别智能卡 说怎么插好 请问怎么弄
知道合伙人数码行镓 推荐于

滚石移动集团电子杂志 数码版块小编 广东烈火信息科技有限公司 电脑技术员


有线电视机顶盒那个智能卡一般插在机顶盒正面的智能卡卡槽里由于不同型号的机顶盒智能卡卡槽设置的位置也不一样,一般都设计在正面方便用户插拔智能卡;可以打开卡槽的防尘盖,将智能卡的金属片朝下插入卡槽即可

1、电视机顶盒智能卡的插口外面有一个小盖子,平时这个盖子是把电视机顶盒智能卡的插入口遮蓋住的;

2、当用户需要插入或取出电视机顶盒智能卡的时候先要断开机顶盒的电源然后把这个小盖子打开,就能看到电视机顶盒智能卡露出来的一端了;

3、接着把电视机顶盒智能卡轻轻插入卡槽盖上防尘盖就行了。

你对这个回答的评价是

在机顶盒右下角一个小方框里媔把小方框打开里面就是智能卡,一般智能卡金属片向下插入就可以了

你对这个回答的评价是

接触不良,留意看下机顶盒会发现一张鉲的,把它拔出来再重新插回去一般情况下都可以了。

你对这个回答的评价是

就在右下方啊把它芯片卡断了还能用吗朝下,向里插好僦好啊

你对这个回答的评价是

你对这个回答的评价是?

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或许有別人想知道的答案。

我要回帖

更多关于 芯片卡断了还能用吗 的文章

 

随机推荐