SD卡IO

作者: jerett | 来源:发表于2015-08-26 23:44 被阅读0次

这一年在做公司的项目,从软件工程师华丽便身为嵌入式工程师=0=。项目有个需求需要将编码好的h264数据和aac数据合成mp4写到SD卡中。
使用mpv2很快的搞定了,但是仔细看,发现合成的SD卡每隔一段时间就会卡一次。一开始以为是时间戳问题,dump了所有数据的时间戳,感觉一切OK啊。再仔细看,卡一下是丢了几帧,但是将h264数据通过网络直播出去却不回卡顿,于是察觉是写SD卡数据问题。但是总觉的不合理,因为买的是告诉SD卡,几十M的读写速度啊!
后来将编码的数据按照时间戳排好放到缓冲区里面,一个线程专门写数据,也就是采用了生产者-消费者模型,彻底解决了卡顿的问题。

吐槽:嵌入式果然出处是坑啊,这种bug完全就是经验问题嘛

过了一段时间,我们牛逼的测试组竟然发现写完MP4立刻拔出SD卡,MP4是损坏的!必须等待几秒到几十秒后,拔出SD卡,MP4才没有问题。当时我就想到了内核I/O缓冲区没有写到SD卡中,拔出SD卡导致数据丢失,然后通过特别暴力的方法mount -o remount解决这个问题。后来寻找更优雅的解决方案,发现可以使用sync内核调用,将内核I/O写到磁盘。记得在看UNIX环境高级编程的时候,讲到了sync、fsync这些函数,当时作为上层开发人员一笑而至:谁会用这些鸟函数啊。没想到确栽在这里了。

吐槽:任何细小的只是都是有用的。

相关文章

  • SD卡IO

    这一年在做公司的项目,从软件工程师华丽便身为嵌入式工程师=0=。项目有个需求需要将编码好的h264数据和aac数据...

  • Android10文件读写适配

    android10,读写sd卡文件时报错,java.io.FileNotFoundException: /stor...

  • Android文件File

    一、SD的使用SD卡文件权限 sdk卡的读写权限 二、SD的使用SD卡挂载状态判断 三、SD的使用SD卡根目录文件...

  • 深入理解SD卡:协议

    Overview 深入理解SD卡系列文章将介绍SD卡,涉及SD卡的协议及驱动代码。我们学习SD卡目的是为了理解SD...

  • S5PV210 SD卡启动

    1. SD卡介绍 SD卡是带有控制器和封装的NANDFLASH,各种型号SD卡的接口都是通用的。 SD卡支持SD协...

  • Android 6.0获取外置SD卡的路径

    6.0外置SD卡路径 5.1 6.0通用获取内置外事SD卡 5.1外置SD卡大小 6.0外置SD卡大小

  • Mac下制作树莓派系统盘

    步骤: 插入sd卡 卸载sd卡 确认设备号 烧写系统 卸载sd卡 准备工作: 一张不小于 7G 的 sd 卡系统镜...

  • 树莓派系统安装方法

    SD卡初始化 先取下树莓派上的SD卡,若SD卡不是FAT32格式,则将SD卡初始化 下载镜像文件 下载镜像系统文件...

  • 抛弃SD卡,使用U盘启动树梅派3

    树莓派3之前的版本其系统一般是安装在SD卡上,但是SD卡比较脆弱,如果频繁的读写数据,会导致SD卡损坏。SD卡的读...

  • 运动控制器26:STM32如何读写一张SD卡

    如何描述一张物理SD卡 描述SD卡的结构体 我们用4个结构体来完整描述一张物理的SD卡 所有的SD卡操作命令 初始...

网友评论

      本文标题:SD卡IO

      本文链接:https://www.haomeiwen.com/subject/jhuhcttx.html