这是若干年前一个项目,最近有时间整理一下。回忆起来,印象最深刻的就是重度使用示波器辅助分析,进行优化。

项目背景是在原有项目3G+项目基础上,增加一颗2G+ Modem,使支持DSDA功能。

在介绍DSDA之前,稍微区分一下DSDS和DSDA:

DSDS,即Dual SIM Dual Standby,双卡双待,但是属于单通。一个SIM处于工作状态,另一张是无法正常工作的,两张SIM分享时隙。

DSDA,即Dual SIM Dual Active,双卡双通。即使一张卡处于工作状态,另一张卡仍然可以正常工作。只不过由于一般手机不会存在两套通话系统,所以通话仍然是一张。但是一张通话,另一张数据业务是不受影响的。

本质上来说,DSDS是一套硬件,划分时隙模拟两套Modem;DSDA是实际存在的两套Modem。

架构分析

Modem A提供语音和数据业务;Modem B仅提供语音业务。

Mode A基于USB 2.0协议变种,使用适合芯片间互联协议HSIC方式连接

基于USB通讯设备类(CDC)子协议的ACM和NCM,ACM主要用于处理控制信息,如AT Command;NCM主要用于处理数据业务。在ACM tty设备基础上,基于3GPP MUX协议gsmtty,虚拟出/dev/gsmtty0~63供各种服务使用。

Modem B采用UART+SPI接口的方式连接。Modem的bootloader仅支持两种连接方式,USB或者UART,但是由于AP的限制,无法提供USB接口,所以只能采用UART启动。

但是由于UART速率问题,严重影响Firmware的下载速度。所以添加SPI接口,以加速进程,并在后续通信中使用SPI接口。

下面是Kernel和Hardware关系特写:

案例分析

在介绍了背景之后,着重介绍使用示波器和Firmware下载log进行优化的过程。

初始状态时Modem A下载大概3s,而Modem B只使用UART需要10m左右。

在进行分析之前,了解一下整个Modem B下载流程:使用UART接口下载PSI+EBL;基于SPI接口下载FW+NVM。由于PSI只能以115200速度下载,所以将整个下载流程分为三个阶段:UART-PSI、UART-EBL、SPI

搞明白整个下载流程组成及其特点,使用下载log查看优化结果,使用示波器分析传输细节,快速迭代(每次开机都会下载),下面是分析流程:

UART 115200+SPI 5M with confirm packet

这种情况整个流程耗费时间为:49.41=5.66+7.93+35.82。

多亏高阶示波器,支持四通道,高分辨率,抓取更长时间波形。可以看到开始下载的总体波形,还可以截取一段详细分析每一帧的周期。

不但可以从宏观上优化整个下载流程,还可以进入每一帧细节找到问题点。

用示波器分析发现SPI下载在4-5之间浪费了不少时间。check代码发现这时下载流程存在一个confirm packet,这是为了确保下载完整性的措施。但是在这时候可以适当忽略。

UART 921600+SPI 5M without confirm packet

在将UART速率提高到921600,并且忽略confirm packet之后,耗费时间变成:35.87=5.23+7.27+23.37

将忽略confirm packet的波形和未忽略对比可以发现,每一帧节省了11.33-7.198=4.132ms。进SPI下载就节省了12.45=35.82-23.37秒。

由上图可知1~2之间的等待时间过长,需要优化。

优化SRDY延时

在对SRDY进行优化后,发觉1~2缩短了接近2ms。

修复EBL速率bug

计算后发现EBL使用115200和921600并没有明显提升,原来是EBL的一个bug。并没有时间按照设置进行配置UART。在修改了EBL速率配置问题后,得到了明显提升。

对比下面两次下载,发现EBL下载明显得到改善:5.99(s)=7.32-1.33。

优化psi大小

由于psi速率最慢,因此去掉不必要模块,优化代码空间尤其重要。优化了5.4-3.74=1.66(s)。

SPI 12.5MHz

在使用了SPI 12.5MHz速率之后,SPI下载部分节省了7.34(s),致使整个下载流程下降到13.5s。这已经大概在接受范围之内了。

SPI 25MHz

再将SPI速度提高极限之后,整个下载流程下降到11.3s。

使能I/D-Cache功能

在将之前措施(修复EBL 921600速率、裁剪PSI、极速SPI 25MHz、I/D-Cache)都使用之后,整个下载流程达到9.6s。

这个结果已经基本能满足使用需求了。

重度使用示波器进行优化分析——一个DSDA项目回顾相关推荐

  1. 一个完整的LED灯具散热优化分析计算方案

    附赠仿真学习包,包含结构.流体.电磁.热仿真等多学科视频教程,点击领取: ​​​​​​仿真秀粉丝专属礼包 作者:CAE白堤,仿真秀科普作者 一.问题描述: 如下,一个LED射灯,总功率12W,主要结构 ...

  2. 双目标帕累托优化_结构力学中的优化分析(3) —— 结构优化分析

    引言 上文中,我们主要介绍了优化分析的基本类型. 蒙特遇见卡罗:结构力学中的优化分析(1) -- 优化方法基本概念​zhuanlan.zhihu.com 蒙特遇见卡罗:结构力学中的优化分析(2) -- ...

  3. oracle 语法分析表,Oracle 语句优化分析说明

    Oracle 语句优化分析说明 更新时间:2009年09月17日 21:52:20   作者: Oracle 语句优化技巧,大家可以参考使用,使你的oracle运行效率更高更好. 1. ORACLE ...

  4. MySQL第10天:MySQL索引优化分析之索引介绍

    MySQL索引优化分析之索引简介 1.索引是什么? 2.索引优势.劣势 3.索引分类.基本语法 4.索引结构 5.哪些情况需要创建索引? 6.哪些情况不需要创建索引? ---------------- ...

  5. mysql如何建立索引workbench_如何对MySQL索引进行优化分析

    为什么你写的sql查询慢?为什么你建的索引常失效?通过本章内容,你将学会MySQL性能下降的原因,索引的简介,索引创建的原则,explain命令的使用,以及explain输出字段的意义.助你了解索引, ...

  6. 基于Linux C的socketEthereal程序和Package分析 (一个)

     执行测试平台:CentOS 6.5发行版,内核版本号3.11 1. Linux抓包源程序 在OSI七层模型中.网卡工作在物理层和数据链路层的MAC子层. 进行网络通信时.源主机通过socket( ...

  7. C/C++快速读写磁盘数据的方法-块读取/异步/优化分析算法/内存文件映射的原理和使用

    快速读写磁盘数据的方法: 1.块读取:一下子将数据读取到内存的(无论是文本还是二进制),而不是一行行的读取. 2.异步的IO,创建多线程,或者使用重叠IO,IO复用,异步的事件回调通知机制(可以用事件 ...

  8. linux 内核连接跟踪,Linux内核连接跟踪锁的优化分析(1)

    Linux内核连接跟踪锁的优化分析(1) 作者:gfree.wind@gmail.com 博客:linuxfocus.blog.chinaunix.net 微博:weibo.com/glinuxer ...

  9. workbench拓扑优化教程_workbenchds拓扑优化分析.ppt

    workbenchds拓扑优化分析 形状优化基础 指定Shape Optimization 将执行形状或拓扑优化 Shape Optimization是一个优化问题,其结构能量在减少结构体积的基础上的 ...

最新文章

  1. Linux文本搜索工具grep
  2. 谷歌系自动驾驶公司再获4千万美元融资,核心产品是仿真软件
  3. 定制安装操作系统(二)
  4. 程序员编程10大原则,请牢牢记住!
  5. 华为鸿蒙麒麟玉兔_华为P50除了麒麟9000,还预装鸿蒙系统,比iPhone12值得买
  6. C语言和我的世界指令哪个难,我的世界难度有什么区别 难度选择指令介绍
  7. rest风格的get加密字符串怎么接收_RESTful Api的设计与风格,你该学一下咯
  8. pytorch中的nn.LSTM模块参数详解
  9. 通过elasticsearch对日志进行搜索热词统计
  10. 2021东华杯misc详解
  11. 四位一体数码管介绍、扫描原理、应用电路和共阳共阴码段编写成都电路板设计
  12. 丢掉上半年全球新能源汽车销冠的特斯拉,烦恼不止比亚迪
  13. FPGA实现和ET1100通信verilog源码。 ethercat从站方案
  14. 软件分类和软件测试工作流程
  15. 实测办公场景下,国产远程控制软件的表现力如何?(技术解析)
  16. 使用数组实现购物车的应用
  17. 湿寒阳虚体质如何艾灸
  18. xp安全模式下如何修复计算机,电脑怎么进入安全模式,教您xp系统进入安全模式的方法...
  19. #CF div2 1670D Very Suspicious题解(思维+贪心)
  20. Font Awesome 字体的以及 图标的使用总结

热门文章

  1. 硬盘容量越大 计算机整体性能越好,是不是硬盘空间越大,内存越高,电脑性能就越好?...
  2. android 人脸解锁 锁屏动画,人脸保护锁(人脸识别锁屏)
  3. Nginx禁止访问某个目录或某个后缀文件
  4. python用tsne降维_tsne降维可视化
  5. el-table 表格 业务标配模板;
  6. echarts鼠标悬停轴线是虚线,改成实线
  7. 英语学习参考十五大网站
  8. laravel5中model命名与数据库命名解说
  9. 【C++】CRTP:奇异递归模板模式
  10. 【Unity入门】4.FBX模型和资源打包