一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

桃芯科技軟件審核簡介

桃芯科技 ? 來源:桃芯科技 ? 2025-01-24 09:24 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

說明

本文檔對(duì)如何審核一個(gè)項(xiàng)目的軟件是否符合量產(chǎn)要求進(jìn)行闡述;審核目的為確保軟件足夠健全、穩(wěn)定、易于量產(chǎn),做出更有品質(zhì)的產(chǎn)品;該文檔不一定會(huì)講清楚每個(gè)檢測(cè)項(xiàng),但會(huì)盡可能提示你如何掌控調(diào)整方向。

本文檔適用于桃芯科技軟件平臺(tái)衍生品。

主要檢測(cè)項(xiàng)

1軟件框架檢查

桃芯平臺(tái)的軟件包有很多種,typical、exp等類型,還有noos版本,各自有不同的特點(diǎn),評(píng)估該項(xiàng)目是否選擇了最優(yōu)的類型。

關(guān)于軟件包的版本選擇,請(qǐng)參考如下意見:

普通的產(chǎn)品,對(duì)功耗,最大連接數(shù)等沒有嚴(yán)格要求的,選通用的,用typical版本即可。

追求極致功耗,且連接數(shù)比較小,則選擇mini包類型。

需要連接數(shù)盡可能多,則可以考慮extention包。

需要要體驗(yàn)sdk的一些新特性,或者比較全面的api體驗(yàn),但可以接受一些bug存在,則可采用實(shí)驗(yàn)性質(zhì)的exp版本。

若不考慮內(nèi)置freertos系統(tǒng),或、需要更換其它rtos,則可以以上版本對(duì)應(yīng)的noos版本。

2功能符合性檢查

不同的產(chǎn)品功能不同,檢查項(xiàng)則不同,這里以藍(lán)牙串口模塊為例進(jìn)行說明,供參考:

藍(lán)牙模塊的串口協(xié)議指令是否與規(guī)格書一致;

藍(lán)牙模塊的藍(lán)牙協(xié)議是否與規(guī)格書一致;

其它和基本功能相關(guān)的,統(tǒng)統(tǒng)檢查是否與設(shè)計(jì)目標(biāo)一致。

3異常應(yīng)對(duì)檢查

對(duì)于不同的產(chǎn)品,滿足基本功能是基本要求,對(duì)于一些異常情況發(fā)生時(shí),也應(yīng)該有應(yīng)對(duì)措施,常見的:

EMC干擾導(dǎo)致的接口通訊錯(cuò)誤,比如UART或者SPI等;

其它環(huán)境因素(比如高溫低溫)造成的宕機(jī)問題等;

應(yīng)對(duì)異常,常見的應(yīng)對(duì)措施:

EMC等導(dǎo)致的通訊錯(cuò)誤,可通過增加校驗(yàn)來進(jìn)行判斷,來識(shí)別幀錯(cuò)誤。同時(shí),對(duì)幀接收建立超時(shí)機(jī)制,來避免兩個(gè)不同幀之間發(fā)生重疊導(dǎo)致的判斷錯(cuò)誤。以AT指令串口藍(lán)牙模組舉例,先發(fā)送一個(gè)異常uart指令(比如缺少幀尾),間隔200ms以上再發(fā)送一個(gè)正常指令,觀察模組是否可以正常接收第二個(gè)正常的指令等等。

對(duì)于其它因素造成的宕機(jī)問題,一般要用看門狗進(jìn)行保護(hù)。

以上場(chǎng)景針對(duì)性比較強(qiáng),不一定適用所有場(chǎng)景,請(qǐng)根據(jù)產(chǎn)品類型,制定詳細(xì)的異常測(cè)試計(jì)劃。

4Flash存儲(chǔ)檢查

對(duì)于桃芯的芯片,需要檢查藍(lán)牙配對(duì)使用的kv系統(tǒng)的存儲(chǔ)的地址是否被合理規(guī)劃,他們是否與應(yīng)用程序區(qū)沖突;

如果用戶自定義數(shù)據(jù)未使用kv系統(tǒng),也要確定地址范圍是否與應(yīng)用程序空間發(fā)生重疊;

還要考慮兩種自定義數(shù)據(jù)的地址范圍是否與OTA備份區(qū)的空間發(fā)生重疊;

各種flash存儲(chǔ)數(shù)據(jù)是否使用了循環(huán)存儲(chǔ)(存滿一個(gè)扇區(qū)才擦除一次的策略)來增加擦寫次數(shù),進(jìn)而來提高產(chǎn)品壽命,按照10萬次擦寫壽命來看,產(chǎn)品平均使用壽命是多少,是否符合產(chǎn)品預(yù)期設(shè)計(jì);

5任務(wù)優(yōu)先級(jí)(rtos版本)檢查

各任務(wù)優(yōu)先級(jí)設(shè)計(jì)是否合理,主要檢查:

檢查藍(lán)牙協(xié)議棧controller任務(wù)是否已經(jīng)是最高優(yōu)先級(jí)。(controller的task優(yōu)先級(jí)應(yīng)該是最高的)

檢查藍(lán)牙協(xié)議棧host任務(wù)優(yōu)先級(jí)。

檢查FreeRTOS timer 任務(wù)優(yōu)先級(jí)。

檢查用戶任務(wù)的優(yōu)先級(jí)安排是否合理,與藍(lán)牙協(xié)議棧任務(wù)優(yōu)先級(jí)等platform任務(wù)優(yōu)先級(jí)的關(guān)系是否合理。

檢查有沒有其它用戶任務(wù)優(yōu)先級(jí)與idle task的優(yōu)先級(jí)一樣,影響到睡眠的。

任務(wù)優(yōu)先級(jí)檢查可以參考如下文檔設(shè)計(jì):3. FreeRTOS任務(wù)優(yōu)先級(jí)在桃芯sdk的設(shè)置(https://daklqpbddlx.feishu.cn/wiki/Tdytw22uYi0V8okrwUicFrgBnng)

6中斷優(yōu)先級(jí)檢查

檢查各個(gè)硬件中斷的優(yōu)先級(jí)安排是否合理,比如重要中斷是否優(yōu)先級(jí)是否更高。

7線程安全檢查

檢查應(yīng)用代碼中有沒有在任務(wù)和中斷中共同訪問一個(gè)變量或內(nèi)存的情況發(fā)生,這種情況會(huì)導(dǎo)致共享資源競爭問題,引起低概率問題,需要在設(shè)計(jì)階段避免這樣的行為,常用的處理手段有:

對(duì)于RTOS的系統(tǒng),可用信號(hào)量,隊(duì)列等消除線程安全問題;

對(duì)于沒有RTOS的系統(tǒng),可用匯編轉(zhuǎn)化為原子操作避免競爭;

檢查在調(diào)用桃芯藍(lán)牙協(xié)議棧接口時(shí),是否通過btstack_push_user_msg的方式送到host任務(wù)執(zhí)行,以避免線程安全問題,或可以直接調(diào)用線程安全接口。

8看門狗WDT檢查

檢查看門狗是否打開:

一般測(cè)試階段不能打開,讓其發(fā)生死機(jī)等異常來暴露問題,方便及時(shí)發(fā)現(xiàn)和修復(fù);

量產(chǎn)階段要打開,以確保未知問題導(dǎo)致宕機(jī)后無法自恢復(fù)。

檢查看門狗的超時(shí)復(fù)位時(shí)間和喂狗周期設(shè)置是否合理:

檢查兩者時(shí)間是否過于接近,導(dǎo)致容易發(fā)生意外復(fù)位;

檢查喂狗時(shí)間是否設(shè)置過于頻繁,導(dǎo)致cpu時(shí)間過多被占用,影響其它任務(wù)性能;

檢查復(fù)位超時(shí)時(shí)間是否設(shè)置過大,導(dǎo)致宕機(jī)復(fù)位不及時(shí);

檢查多程序間跳轉(zhuǎn),看門狗狀態(tài)如何,如果狗一直開著,兩個(gè)程序是不是都進(jìn)行了喂狗操作。

9編譯優(yōu)化等級(jí)檢查

檢查優(yōu)化等級(jí)是否非-O0,如果是,則需要:

檢查寄存器設(shè)置是否均有volatile關(guān)鍵字,比如給某個(gè)寄存器設(shè)置為0,再設(shè)置為1,如果沒有加volatile,則可能被編譯器優(yōu)化為只賦值為1這一個(gè)操作,造成硬件執(zhí)行錯(cuò)誤。

檢查部分關(guān)鍵狀態(tài)變量是否添加volatile關(guān)鍵字,以便于獲取真實(shí)的RAM變量值,避免邏輯錯(cuò)誤。

需要注意的是,大量不必要的添加volatile將會(huì)導(dǎo)致程序運(yùn)行變慢。

10日志檢查

日志添加/屏蔽:在調(diào)試階段,往往會(huì)打開調(diào)試日志,在量產(chǎn)階段,會(huì)關(guān)閉日志信息,提高性能,減少延時(shí)。 需要注意的是:去掉日志,會(huì)引起運(yùn)行時(shí)序的變化,可能引入一些邏輯問題,所以,軟件去掉日志后需進(jìn)行充分測(cè)試后軟件才能釋放。

11藍(lán)牙OTA升級(jí)

確認(rèn)項(xiàng)目是否需要OTA功能,如果需要,則需要添加并測(cè)試。

檢查OTA是采用備份升級(jí)策略還是非備份升級(jí)策略。

檢查是僅升級(jí)APP,還是同時(shí)升級(jí)platform和APP。

檢查FLASH空間結(jié)構(gòu)是否被詳細(xì)規(guī)劃,整理一個(gè)flash分配圖,主要問自己:

哪些地方存儲(chǔ)協(xié)議棧platform.BIN

哪些存儲(chǔ)APP,APP備份區(qū)是否足夠大

是否需要二級(jí)boot

用戶數(shù)據(jù)存儲(chǔ)在哪里

檢查OTA升級(jí)過程是否可以正常進(jìn)行。

檢查升級(jí)版本號(hào)有沒有正確添加,每次發(fā)布軟件是否修改了版本號(hào)。

12版本號(hào)控制

檢查是否添加了版本號(hào)。

檢查是否只有一個(gè)地方可以修改版本號(hào),多個(gè)地方修改容易造成遺漏。

檢查通過串口等有線接口獲得的版本號(hào)是否與預(yù)設(shè)一致。

檢查通過藍(lán)牙接口獲得的版本號(hào)是否與預(yù)設(shè)一致。

13RAM相關(guān)檢查

堆、任務(wù)棧大小設(shè)置是否合理。

對(duì)于帶RTOS的包:.S類型啟動(dòng)文件中堆的分配值是否為0(sdk例程默認(rèn)為0),如果為0,特別注意不能使用malloc,可以使用pvPortMalloc和ll_malloc替代。

而對(duì)于非RTOS包:.S啟動(dòng)文件的STACK大小是否足夠大。

14死循環(huán)檢測(cè)

桃芯平臺(tái)的異常檢測(cè) hardfault、assert、OOM回調(diào)中一般是打印調(diào)試信息,并設(shè)置死循環(huán)。在調(diào)試階段沒有問題,但是在量產(chǎn)代碼中,這里的死循環(huán)應(yīng)改為軟件復(fù)位或看門狗復(fù)位。

檢查程序中每一個(gè)while(1)和for(;;)死循環(huán),是否增加了超時(shí)退出機(jī)制。

檢查另外一種比較隱藏for死機(jī):比如uint8_t類型和大于256的數(shù)據(jù)/數(shù)據(jù)類型進(jìn)行比較,永遠(yuǎn)得不到滿足,也會(huì)造成死循環(huán),要特別注意。

15代碼風(fēng)格檢查

檢查是否存在隨意使用extern方式引用代碼,造成代碼結(jié)構(gòu)混亂問題,建議使用同名C文件和H文件,以及引用頭文件的方式來調(diào)用其它文件的函數(shù)。

檢查整體代碼風(fēng)格是否統(tǒng)一,盡量不要使用多種風(fēng)格的代碼,使得移植性、閱讀性較差;

程序中盡量用宏代替一些關(guān)鍵數(shù)字標(biāo)記,方便統(tǒng)一修改,提高維護(hù)效率。

C語言中,進(jìn)行變量賦值時(shí),需注意數(shù)字字面量的前綴表示不同進(jìn)制:0x 前綴表示十六進(jìn)制,0 前綴表示八進(jìn)制,0b 前綴表示二進(jìn)制。為避免潛在錯(cuò)誤,應(yīng)在賦值操作前檢查數(shù)字字面量的前綴,確保其符合預(yù)期的進(jìn)制表示,例如:

C
#define TEST_MACRO 09 // 錯(cuò)誤,第一個(gè)字符0代表八進(jìn)制,八進(jìn)制不存在數(shù)字9,范圍是0~7
#define TEST_MACRO 011 // 正確,第一個(gè)字符0代表八進(jìn)制,八進(jìn)制11代表9
#define TEST_MACRO 9 // 正確,默認(rèn)10進(jìn)制數(shù)9
#define TEST_MACRO 0x9 // 正確,十六進(jìn)制數(shù)據(jù)
#define TEST_MACRO 0b1001 // 正確,二進(jìn)制,換算成十進(jìn)制為9

16低級(jí)錯(cuò)誤檢查

檢查所有switch case 是否有丟失 break而造成邏輯隱患或錯(cuò)誤的問題。

檢查是否直接判斷一些沒有賦值的局部變量造成邏輯異常的問題。

檢查是否有指針沒有賦值則直接調(diào)用的情況,指針用之前需要判斷非空,是否直接分配堆后立即判斷非空。

檢查邏輯上是否可能使用已被釋放的指針,造成hardfault等問題;

檢查是否存在同一個(gè)中斷硬件在多個(gè)地方注冊(cè)回調(diào)的情況;

檢查free掉一個(gè)指針后是否在其后面添加了設(shè)置該指針為NULL的操作,這往往是必要的。

檢查邏輯上是否存在內(nèi)存泄露的風(fēng)險(xiǎn),例如:malloc一塊內(nèi)存后,用完未free,或邏輯缺陷導(dǎo)致無法free,隨著代碼運(yùn)行,內(nèi)存申請(qǐng)?jiān)絹碓蕉?,最終導(dǎo)致泄露。尤其內(nèi)存泄露要很久時(shí)間才會(huì)發(fā)生時(shí),不易察覺,所以,應(yīng)盡量在設(shè)計(jì)階段避免。

17時(shí)鐘校準(zhǔn)

檢查使用內(nèi)部RC低頻時(shí)鐘時(shí),低功耗是否開啟了時(shí)鐘校準(zhǔn)。

18詞語小介紹

檢查使用數(shù)組時(shí),有沒有做最大值判斷,避免數(shù)組越界使用。

檢查使用指針時(shí),有沒有做最大值判斷,避免指針空間越界使用。

檢查藍(lán)牙回調(diào)事件中回調(diào)參數(shù)的使用是否添加const關(guān)鍵:這些參數(shù)只能讀,不能寫和修改,意外修改會(huì)造成未知異常。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 芯片
    +關(guān)注

    關(guān)注

    460

    文章

    52520

    瀏覽量

    440940
  • 藍(lán)牙
    +關(guān)注

    關(guān)注

    116

    文章

    6078

    瀏覽量

    174025
  • 軟件
    +關(guān)注

    關(guān)注

    69

    文章

    5154

    瀏覽量

    89221
  • emc
    emc
    +關(guān)注

    關(guān)注

    172

    文章

    4168

    瀏覽量

    186990

原文標(biāo)題:《軟件設(shè)計(jì)指南》之一-桃芯軟件審核簡介

文章出處:【微信號(hào):INGCHIPS_OFFICIAL,微信公眾號(hào):桃芯科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    用proteus做一個(gè)心,尋求思路

    最近學(xué)校開設(shè)了Proteus電路仿真課程,我想用二極管做一個(gè)心的表白設(shè)計(jì),現(xiàn)在想尋求思路。我自己能想到的就是用二極管設(shè)計(jì)一個(gè)心形,然后利用單片機(jī)實(shí)行流水燈。各位大神有什么高見嗎? ^_^
    發(fā)表于 10-25 20:23

    合同智能審核軟件-提高審查效率和準(zhǔn)確性

    合同管理是企業(yè)營業(yè)中的重要部分,而文件審查時(shí)間占到合同文件管理的百分之七十左右。這意味著如果使用軟件將合同審查自動(dòng)化,企業(yè)的合同管理效率將大幅度提高。同時(shí)在實(shí)際的合同智能審核軟件應(yīng)用中,也要保證自動(dòng)
    發(fā)表于 09-05 17:22

    STM32CubeMX軟件簡介

    簡介STM32CubeMX軟件簡介STM32CubeMX是ST公司推出的一種自動(dòng)創(chuàng)建單片機(jī)工程及初始化代碼的工具,適用于旗下所有STM32系列產(chǎn)品。此軟件可以作為eclipse插件形式
    發(fā)表于 02-24 06:38

    采集軟件簡介

    采集軟件簡介 數(shù)據(jù)采集軟件的用途是采集數(shù)據(jù)、執(zhí)行預(yù)處理(如特征提取和/或前端濾波),以及將數(shù)據(jù)存儲(chǔ)到硬盤。分析軟件是獨(dú)立的,可在實(shí)時(shí)(與采
    發(fā)表于 03-31 10:06 ?13次下載

    量子技術(shù)簡介

    量子技術(shù)簡介 作為國內(nèi)平板電視巨頭的長虹,去年以來,針對(duì)平板電視普遍遭遇“缺”的困局,長虹整合內(nèi)
    發(fā)表于 05-24 17:24 ?1314次閱讀

    LEBVIEW編程語言與軟件簡介集合

    LEBVIEW編程語言與軟件簡介集合,喜歡的朋友可以下載來學(xué)習(xí)。
    發(fā)表于 01-12 11:27 ?8次下載

    C語言教程之猴子吃

    C語言教程之猴子吃,很好的C語言資料,快來學(xué)習(xí)吧。
    發(fā)表于 04-22 09:51 ?0次下載

    西門子軟件DriveMonitor 使用簡介.pdf

    西門子軟件DriveMonitor 使用簡介.pdf
    發(fā)表于 05-23 11:08 ?13次下載

    SYS BIOS簡介:如何軟件中斷?

    SYS BIOS簡介-軟件中斷
    的頭像 發(fā)表于 08-15 01:39 ?3876次閱讀

    科技正在走向自主創(chuàng)打造國內(nèi)第一顆擁有自主協(xié)議的藍(lán)牙5.0芯片的道路上

    P技術(shù)是所有關(guān)鍵技術(shù)和SoC產(chǎn)品的基礎(chǔ),是擺脫外部制約和自主發(fā)展的基礎(chǔ),科技擁有國內(nèi)首個(gè)完全自主的藍(lán)牙5協(xié)議棧,這包括了藍(lán)牙5.0的底層協(xié)議LINK Controller IP(軟件+硬件)技術(shù)
    的頭像 發(fā)表于 11-09 08:54 ?8617次閱讀

    EDA軟件公司愿景科創(chuàng)板IPO終止

    2020年12月31日,上海證券交易所科創(chuàng)板上市審核中心發(fā)布關(guān)于終止對(duì)北京愿景軟件技術(shù)股份有限公司(下稱“愿景”)首次公開發(fā)行股票并在科創(chuàng)板上市
    的頭像 發(fā)表于 01-06 09:24 ?2672次閱讀

    科技車規(guī)級(jí)低功耗SoC芯片獲得AEC-Q100的測(cè)試認(rèn)證

    ING91870CQ是科技發(fā)布的一款車規(guī)級(jí)低功耗SoC芯片。該芯片歷經(jīng)9個(gè)月的可靠性測(cè)試,最終獲得AEC-Q100的測(cè)試認(rèn)證。
    的頭像 發(fā)表于 09-15 10:18 ?4552次閱讀

    STM32WL軟件簡介

    電子發(fā)燒友網(wǎng)站提供《STM32WL軟件簡介.pdf》資料免費(fèi)下載
    發(fā)表于 09-19 14:51 ?1次下載
    STM32WL<b class='flag-5'>軟件</b><b class='flag-5'>簡介</b>

    科技推出的低功耗藍(lán)牙應(yīng)用方案支持Apple Find My功能

    2023年11月,科技的ING9XX系列BLE芯片成功通過蘋果授權(quán)的第三方機(jī)構(gòu)進(jìn)行的各項(xiàng)合規(guī)性驗(yàn)證,該系列芯片已經(jīng)全面兼容Find My network accessory的功能要求,可為第三方硬件產(chǎn)品提供高效快速尋找丟失物品的低功耗藍(lán)牙應(yīng)用方案。
    的頭像 發(fā)表于 04-19 10:11 ?1600次閱讀
    <b class='flag-5'>桃</b><b class='flag-5'>芯</b>科技推出的低功耗藍(lán)牙應(yīng)用方案支持Apple Find My功能

    旺微電子通過國際一流供應(yīng)鏈體系審核

    2025年3月初,旺微電子成功通過全球頂級(jí)Tier1企業(yè)的供應(yīng)商導(dǎo)入審核,標(biāo)志著公司在車規(guī)芯片領(lǐng)域正式邁入國際一流供應(yīng)鏈體系。
    的頭像 發(fā)表于 03-10 10:06 ?557次閱讀