RTOS成功取代Linux成为天猫精灵OS的关键 -- AliOS Things 维测专题

背景在2018年下半年,天猫精灵系统团队开始研发新一代方糖系列智能音箱,当时业内主流的音箱产品如百度小米等均采用Linux来做智能音箱,Linux系统优势无需多说——开源稳定,三方库完备,芯片厂商硬件支持完备,是快速研发进入市场的首选。但随着智能音箱大战的进一步升级,价格战愈演愈烈,成本就成为了智能音箱快速普及占领市场的关键因素之一,如何降低智能音箱BOM成本就成为了很重要的考量因素。这时使用RTOS替换Linux进入了我们的视野,因为RTOS在Footprint(RAM/Flash占用)方面优势巨
摘要由CSDN通过智能技术生成

背景

在2018年下半年,天猫精灵系统团队开始研发新一代方糖系列智能音箱,当时业内主流的音箱产品如百度小米等均采用Linux来做智能音箱,Linux系统优势无需多说——开源稳定,三方库完备,芯片厂商硬件支持完备,是快速研发进入市场的首选。但随着智能音箱大战的进一步升级,价格战愈演愈烈,成本就成为了智能音箱快速普及占领市场的关键因素之一,如何降低智能音箱BOM成本就成为了很重要的考量因素。

这时使用RTOS替换Linux进入了我们的视野,因为RTOS在Footprint(RAM/Flash占用)方面优势巨大,两者对比:

image.png

从上图可以看到,一方面使用RTOS可以保持同样的功能,采用更小规格的硬件,降低硬件成本。据统计,单独内存这块的BOM成本,就可以节省5块RMB/台,对拥有千万台量级出货量的天猫精灵音箱产品来说,节省的总成本还是非常可观的!

另一方面,我们也可以保持硬件成本不变,用腾出来的75%的RAM空间、87.5%的Flash空间,开发新的功能。

因此,RTOS成为了天猫精灵方糖系列智能音箱的设备端OS。接着问题又来了,同样是RTOS,业内也有很多RTOS并存,主流的有FreeRTOS、RT-Thread,并且天猫精灵团队已经基于FreeRTOS 研发出了音箱demo,但是后来为什么又切换到了AliOS Things?一是AliOS Things 是我们自己的RTOS;其次(也是最重要的),事实证明,在RTOS替换Linux的研发过程中,解决产品稳定性问题的时间占据了研发周期的绝大多数,AliOS Things拥有的众多维测手段,是天猫精灵RTOS版音箱产品从demo走向顺利量产的关键保证,而这些是其他RTOS根本无法比拟的。AliOS Things 维测特性也成为了IOT RTOS领域具有差异化价值的重要体现。

维测概述

维测是什么

维测即对系统异常和错误处理。代码中出现bug,常导致系统异常崩溃无法正常运行。维测组件将异常和错误现场展现出来,指导问题定位,快速找出问题原因。

维测能解决什么问题

简单的说,维测的价值在于可以缩短bug定位时间。如果一个bug出现导致系统异常后,用户可以不用连仿真器、不用加打印、不用打开gdb单步调试的情况下,可以快速找到bug原因,或者帮助用户指出可能的异常点,进而修复节省开发时间。

举例说明:

  1. 代码中访问了非法内存(比如:在不可写的地址处写了数据,如访问了0地址)导致系统奔溃,维测可以记录访问非法内存时的pc值,告诉用户挂在了哪一行;
  2. 代码跑飞了(pc=0),维测记录了函数调用的栈,并根据栈向上回溯可以找到A->B->C的函数调用过程;
  3. 用户内存申请时malloc 失败,维测可以记录用户此时申请了多少内存导致了内存池不够、此时还有多少字节内存可以供申请、用户是在哪个任务中申请的内存、从系统启动开始内存的申请情况等信息,帮助用户查看是否有组件申请了过大内存但没有释放等内存泄漏的情况;
  4. 已经有明显的踩内存现象,但是无法具体定位踩内存根因,只知道一段内存被非法改写,复现现象不一致,定位相当耗时。维测可以提供接口,设置该段内存的属性为不可访问,从而制造memory访问异常,结合异常现场打印,快速定位踩内存的元凶;
  5. 在一次长达数小时的压测中(如天猫精灵语音唤醒72小时压测)出现了系统内存缓慢释放后内存耗尽,问题长时间压测才复现,维测可以在bug首次出现但系统还在正常运行的时候(如内存已经发生泄漏但是系统仍在正常运行),主动触发异常告警,提醒用户系统存在隐患,并打印出异常现场信息供分析,不用等待长时间系统崩溃后才复现问题。

.......

还有很多问题可以通过维测能力来帮助定位,更高级的维测功能也在持续开发中。

下面,我们详细介绍AliOS Things的常见的维测点,具体包括:

  1. 异常接管
  2. 调用栈解析
  3. 硬件watchpoint
  4. 内存维测
  5. 系统打断机制
  6. 伙伴任务
  7. 常用维测命令
  8. AliOS Things维测大图

维测点剖析

1. 异常接管

原理

AliOS Things的死机维测入口即是系统异常后的接管,OS接管系统产生的任何异常和用户主动触发的异常,将异常时系统快照详细输出,OS接管系统的整体框架如下图:
图片1.png

系统快照

系统快照就是 AliOS Things维测模块提供的异常现场信息(设备端log)

  !!!!!!!!!! Exception  !!!!!!!!!!          
crash time   : 1970-01-01 08:01:46       
current task : ucli_cmd_exc_task   //记录异常任务名称、时间、类型等
========== coreID: 0  ==========      
Exception Type: Undefined Instruction    
uspace smartbox exception         
========== Regs info  ==========  //记录通用寄存器现场
 PC      0x80000618
 LR      0x80000618
 SP      0x80EF8AF0
 CPSR    0x400D0010
 R0      0x0000001C
 R1      0
  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值