0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

桃芯科技软件审核简介

桃芯科技 来源:桃芯科技 2025-01-24 09:24 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

说明

本文档对如何审核一个项目的软件是否符合量产要求进行阐述;审核目的为确保软件足够健全、稳定、易于量产,做出更有品质的产品;该文档不一定会讲清楚每个检测项,但会尽可能提示你如何掌控调整方向。

本文档适用于桃芯科技软件平台衍生品。

主要检测项

1软件框架检查

桃芯平台的软件包有很多种,typical、exp等类型,还有noos版本,各自有不同的特点,评估该项目是否选择了最优的类型。

关于软件包的版本选择,请参考如下意见:

普通的产品,对功耗,最大连接数等没有严格要求的,选通用的,用typical版本即可。

追求极致功耗,且连接数比较小,则选择mini包类型。

需要连接数尽可能多,则可以考虑extention包。

需要要体验sdk的一些新特性,或者比较全面的api体验,但可以接受一些bug存在,则可采用实验性质的exp版本。

若不考虑内置freertos系统,或、需要更换其它rtos,则可以以上版本对应的noos版本。

2功能符合性检查

不同的产品功能不同,检查项则不同,这里以蓝牙串口模块为例进行说明,供参考:

蓝牙模块的串口协议指令是否与规格书一致;

蓝牙模块的蓝牙协议是否与规格书一致;

其它和基本功能相关的,统统检查是否与设计目标一致。

3异常应对检查

对于不同的产品,满足基本功能是基本要求,对于一些异常情况发生时,也应该有应对措施,常见的:

EMC干扰导致的接口通讯错误,比如UART或者SPI等;

其它环境因素(比如高温低温)造成的宕机问题等;

应对异常,常见的应对措施:

EMC等导致的通讯错误,可通过增加校验来进行判断,来识别帧错误。同时,对帧接收建立超时机制,来避免两个不同帧之间发生重叠导致的判断错误。以AT指令串口蓝牙模组举例,先发送一个异常uart指令(比如缺少帧尾),间隔200ms以上再发送一个正常指令,观察模组是否可以正常接收第二个正常的指令等等。

对于其它因素造成的宕机问题,一般要用看门狗进行保护。

以上场景针对性比较强,不一定适用所有场景,请根据产品类型,制定详细的异常测试计划。

4Flash存储检查

对于桃芯的芯片,需要检查蓝牙配对使用的kv系统的存储的地址是否被合理规划,他们是否与应用程序区冲突;

如果用户自定义数据未使用kv系统,也要确定地址范围是否与应用程序空间发生重叠;

还要考虑两种自定义数据的地址范围是否与OTA备份区的空间发生重叠;

各种flash存储数据是否使用了循环存储(存满一个扇区才擦除一次的策略)来增加擦写次数,进而来提高产品寿命,按照10万次擦写寿命来看,产品平均使用寿命是多少,是否符合产品预期设计;

5任务优先级(rtos版本)检查

各任务优先级设计是否合理,主要检查:

检查蓝牙协议栈controller任务是否已经是最高优先级。(controller的task优先级应该是最高的)

检查蓝牙协议栈host任务优先级。

检查FreeRTOS timer 任务优先级。

检查用户任务的优先级安排是否合理,与蓝牙协议栈任务优先级等platform任务优先级的关系是否合理。

检查有没有其它用户任务优先级与idle task的优先级一样,影响到睡眠的。

任务优先级检查可以参考如下文档设计:3. FreeRTOS任务优先级在桃芯sdk的设置(https://daklqpbddlx.feishu.cn/wiki/Tdytw22uYi0V8okrwUicFrgBnng)

6中断优先级检查

检查各个硬件中断的优先级安排是否合理,比如重要中断是否优先级是否更高。

7线程安全检查

检查应用代码中有没有在任务和中断中共同访问一个变量或内存的情况发生,这种情况会导致共享资源竞争问题,引起低概率问题,需要在设计阶段避免这样的行为,常用的处理手段有:

对于RTOS的系统,可用信号量,队列等消除线程安全问题;

对于没有RTOS的系统,可用汇编转化为原子操作避免竞争;

检查在调用桃芯蓝牙协议栈接口时,是否通过btstack_push_user_msg的方式送到host任务执行,以避免线程安全问题,或可以直接调用线程安全接口。

8看门狗WDT检查

检查看门狗是否打开:

一般测试阶段不能打开,让其发生死机等异常来暴露问题,方便及时发现和修复;

量产阶段要打开,以确保未知问题导致宕机后无法自恢复。

检查看门狗的超时复位时间和喂狗周期设置是否合理:

检查两者时间是否过于接近,导致容易发生意外复位;

检查喂狗时间是否设置过于频繁,导致cpu时间过多被占用,影响其它任务性能;

检查复位超时时间是否设置过大,导致宕机复位不及时;

检查多程序间跳转,看门狗状态如何,如果狗一直开着,两个程序是不是都进行了喂狗操作。

9编译优化等级检查

检查优化等级是否非-O0,如果是,则需要:

检查寄存器设置是否均有volatile关键字,比如给某个寄存器设置为0,再设置为1,如果没有加volatile,则可能被编译器优化为只赋值为1这一个操作,造成硬件执行错误。

检查部分关键状态变量是否添加volatile关键字,以便于获取真实的RAM变量值,避免逻辑错误。

需要注意的是,大量不必要的添加volatile将会导致程序运行变慢。

10日志检查

日志添加/屏蔽:在调试阶段,往往会打开调试日志,在量产阶段,会关闭日志信息,提高性能,减少延时。 需要注意的是:去掉日志,会引起运行时序的变化,可能引入一些逻辑问题,所以,软件去掉日志后需进行充分测试后软件才能释放。

11蓝牙OTA升级

确认项目是否需要OTA功能,如果需要,则需要添加并测试。

检查OTA是采用备份升级策略还是非备份升级策略。

检查是仅升级APP,还是同时升级platform和APP。

检查FLASH空间结构是否被详细规划,整理一个flash分配图,主要问自己:

哪些地方存储协议栈platform.BIN

哪些存储APP,APP备份区是否足够大

是否需要二级boot

用户数据存储在哪里

检查OTA升级过程是否可以正常进行。

检查升级版本号有没有正确添加,每次发布软件是否修改了版本号。

12版本号控制

检查是否添加了版本号。

检查是否只有一个地方可以修改版本号,多个地方修改容易造成遗漏。

检查通过串口等有线接口获得的版本号是否与预设一致。

检查通过蓝牙接口获得的版本号是否与预设一致。

13RAM相关检查

堆、任务栈大小设置是否合理。

对于带RTOS的包:.S类型启动文件中堆的分配值是否为0(sdk例程默认为0),如果为0,特别注意不能使用malloc,可以使用pvPortMalloc和ll_malloc替代。

而对于非RTOS包:.S启动文件的STACK大小是否足够大。

14死循环检测

桃芯平台的异常检测 hardfault、assert、OOM回调中一般是打印调试信息,并设置死循环。在调试阶段没有问题,但是在量产代码中,这里的死循环应改为软件复位或看门狗复位。

检查程序中每一个while(1)和for(;;)死循环,是否增加了超时退出机制。

检查另外一种比较隐藏for死机:比如uint8_t类型和大于256的数据/数据类型进行比较,永远得不到满足,也会造成死循环,要特别注意。

15代码风格检查

检查是否存在随意使用extern方式引用代码,造成代码结构混乱问题,建议使用同名C文件和H文件,以及引用头文件的方式来调用其它文件的函数。

检查整体代码风格是否统一,尽量不要使用多种风格的代码,使得移植性、阅读性较差;

程序中尽量用宏代替一些关键数字标记,方便统一修改,提高维护效率。

C语言中,进行变量赋值时,需注意数字字面量的前缀表示不同进制:0x 前缀表示十六进制,0 前缀表示八进制,0b 前缀表示二进制。为避免潜在错误,应在赋值操作前检查数字字面量的前缀,确保其符合预期的进制表示,例如:

C
#define TEST_MACRO 09 // 错误,第一个字符0代表八进制,八进制不存在数字9,范围是0~7
#define TEST_MACRO 011 // 正确,第一个字符0代表八进制,八进制11代表9
#define TEST_MACRO 9 // 正确,默认10进制数9
#define TEST_MACRO 0x9 // 正确,十六进制数据
#define TEST_MACRO 0b1001 // 正确,二进制,换算成十进制为9

16低级错误检查

检查所有switch case 是否有丢失 break而造成逻辑隐患或错误的问题。

检查是否直接判断一些没有赋值的局部变量造成逻辑异常的问题。

检查是否有指针没有赋值则直接调用的情况,指针用之前需要判断非空,是否直接分配堆后立即判断非空。

检查逻辑上是否可能使用已被释放的指针,造成hardfault等问题;

检查是否存在同一个中断硬件在多个地方注册回调的情况;

检查free掉一个指针后是否在其后面添加了设置该指针为NULL的操作,这往往是必要的。

检查逻辑上是否存在内存泄露的风险,例如:malloc一块内存后,用完未free,或逻辑缺陷导致无法free,随着代码运行,内存申请越来越多,最终导致泄露。尤其内存泄露要很久时间才会发生时,不易察觉,所以,应尽量在设计阶段避免。

17时钟校准

检查使用内部RC低频时钟时,低功耗是否开启了时钟校准。

18词语小介绍

检查使用数组时,有没有做最大值判断,避免数组越界使用。

检查使用指针时,有没有做最大值判断,避免指针空间越界使用。

检查蓝牙回调事件中回调参数的使用是否添加const关键:这些参数只能读,不能写和修改,意外修改会造成未知异常。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    462

    文章

    53534

    浏览量

    459126
  • 蓝牙
    +关注

    关注

    119

    文章

    6221

    浏览量

    177544
  • 软件
    +关注

    关注

    69

    文章

    5297

    浏览量

    90881
  • emc
    emc
    +关注

    关注

    174

    文章

    4323

    浏览量

    190349

原文标题:《软件设计指南》之一-桃芯软件审核简介

文章出处:【微信号:INGCHIPS_OFFICIAL,微信公众号:桃芯科技】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    发布元服务提交审核

    ;gt; 版本信息”下待发布的版本。 点击右上角的“提交审核”。 在弹出的窗口中确认版本号无误后,点击“确认”。 如果软件包中支持的设备类型范围大于配置支持设备时选择的设备范围,并且软件包支持PC
    发表于 12-04 14:23

    用proteus做一个心,寻求思路

    最近学校开设了Proteus电路仿真课程,我想用二极管做一个心的表白设计,现在想寻求思路。我自己能想到的就是用二极管设计一个心形,然后利用单片机实行流水灯。各位大神有什么高见吗? ^_^
    发表于 10-25 20:23

    合同智能审核软件-提高审查效率和准确性

    合同管理是企业营业中的重要部分,而文件审查时间占到合同文件管理的百分之七十左右。这意味着如果使用软件将合同审查自动化,企业的合同管理效率将大幅度提高。同时在实际的合同智能审核软件应用中,也要保证自动
    发表于 09-05 17:22

    STM32CubeMX软件简介

    简介STM32CubeMX软件简介STM32CubeMX是ST公司推出的一种自动创建单片机工程及初始化代码的工具,适用于旗下所有STM32系列产品。此软件可以作为eclipse插件形式
    发表于 02-24 06:38

    采集软件简介

    采集软件简介 数据采集软件的用途是采集数据、执行预处理(如特征提取和/或前端滤波),以及将数据存储到硬盘。分析软件是独立的,可在实时(与采
    发表于 03-31 10:06 13次下载

    量子技术简介

    量子技术简介 作为国内平板电视巨头的长虹,去年以来,针对平板电视普遍遭遇“缺”的困局,长虹整合内
    发表于 05-24 17:24 1382次阅读

    C语言教程之猴子吃

    C语言教程之猴子吃,很好的C语言资料,快来学习吧。
    发表于 04-22 09:51 0次下载

    西门子软件DriveMonitor 使用简介.pdf

    西门子软件DriveMonitor 使用简介.pdf
    发表于 05-23 11:08 13次下载

    SYS BIOS简介:如何软件中断?

    SYS BIOS简介-软件中断
    的头像 发表于 08-15 01:39 4132次阅读

    科技正在走向自主创打造国内第一颗拥有自主协议的蓝牙5.0芯片的道路上

    P技术是所有关键技术和SoC产品的基础,是摆脱外部制约和自主发展的基础,科技拥有国内首个完全自主的蓝牙5协议栈,这包括了蓝牙5.0的底层协议LINK Controller IP(软件+硬件)技术
    的头像 发表于 11-09 08:54 8981次阅读

    EDA软件公司愿景科创板IPO终止

    2020年12月31日,上海证券交易所科创板上市审核中心发布关于终止对北京愿景软件技术股份有限公司(下称“愿景”)首次公开发行股票并在科创板上市
    的头像 发表于 01-06 09:24 2829次阅读

    科技车规级低功耗SoC芯片获得AEC-Q100的测试认证

    ING91870CQ是科技发布的一款车规级低功耗SoC芯片。该芯片历经9个月的可靠性测试,最终获得AEC-Q100的测试认证。
    的头像 发表于 09-15 10:18 4972次阅读

    STM32WL软件简介

    电子发烧友网站提供《STM32WL软件简介.pdf》资料免费下载
    发表于 09-19 14:51 1次下载
    STM32WL<b class='flag-5'>软件</b><b class='flag-5'>简介</b>

    科技推出的低功耗蓝牙应用方案支持Apple Find My功能

    2023年11月,科技的ING9XX系列BLE芯片成功通过苹果授权的第三方机构进行的各项合规性验证,该系列芯片已经全面兼容Find My network accessory的功能要求,可为第三方硬件产品提供高效快速寻找丢失物品的低功耗蓝牙应用方案。
    的头像 发表于 04-19 10:11 2089次阅读
    <b class='flag-5'>桃</b><b class='flag-5'>芯</b>科技推出的低功耗蓝牙应用方案支持Apple Find My功能

    旺微电子通过国际一流供应链体系审核

    2025年3月初,旺微电子成功通过全球顶级Tier1企业的供应商导入审核,标志着公司在车规芯片领域正式迈入国际一流供应链体系。
    的头像 发表于 03-10 10:06 988次阅读