今天终于体会到关键地方为什么用汇编的好处了。

本文讲述了作者在工作中遇到的CPU负载过高问题,特别是在处理AVIN功能时,由于大量的memcpy调用导致CPU利用率居高不下。通过深入分析,作者发现了解包和内存搬运是主要瓶颈。为解决这个问题,作者尝试使用汇编实现了一个优化的内存复制函数,替代标准的memcpy。这一改变显著降低了CPU负载,将系统整体负载降至30%以下,验证了在关键地方使用汇编以提高效率的理论。
摘要由CSDN通过智能技术生成

   视频这块的工作都快一年多了。发现在自己还是那么多菜。继续努力。言归正传。

         由于我们用的是三星的s5p6443芯片(其实就是阉割版的6440或者s5p6410),没有camera的接口,但我们公司的做的gps设备基本都需要AVIN功能,主要用来做倒车镜功能来用。所以我一们一直采用s5p6443+fpga+tvp5150的架构来做avin的功能。其实,基本工作原理就是,tvp5150将标准的模拟信号(NTSC/PAL/SECAM制式)转换为YCBCR数字信号后,送给fpga,fpga再将其转为RGB565的数据,然后再将数据打包,以sd协议,发给s5p6443。

         由于cpu收到的数据是,打过包的数据,也就是有包头的。就像tcp/ip的数据,在网络上传输是有20个字节ip包头。呵呵。所以我们,avin的驱动,就需要在接受到数据后,将其解包,然后奇偶场数据合并成一帧,在再经过post放缩到合适的大小在送到framebuffer来显示。   

        这种架构,有一个很大的问题就是,cpuloading太高,对小的屏,基本还能接受,但是大屏就不行了。在我们4.3寸的屏上,avin的loading就将近55%。

       最近老大们,一直让我们的avin的驱动,要把loading给将下来。这可头疼死我们了。

首先,为了降cpu的loading,我先分别测试了一下,avin整个功能模块上,各个模块所耗费的cpuloading。最后发现,整个cpuloading的主要耗费在数据解包和内存数据搬运中,特别是内存数据搬运。因为一阵数据&

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值