日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

談?wù)勄度胧杰浖嫒菪缘淖⒁馐马?xiàng)!

工程師進(jìn)階筆記 ? 來源:嵌入式大雜燴 ? 2023-08-01 18:05 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群


		嵌入式項(xiàng)目中,軟件是一個(gè)不斷迭代的過程,需要考慮各種兼容性。之前我們的項(xiàng)目,因?yàn)檫@方面考慮得比較少,導(dǎo)致項(xiàng)目中后期開發(fā)起來很被動。

項(xiàng)目系統(tǒng)總體設(shè)計(jì)階段,應(yīng)盡可能地考慮到未來可以遇見的情況,覆蓋到盡可能多的業(yè)務(wù)擴(kuò)展。項(xiàng)目雖然分階段開發(fā),各個(gè)階段完成的功能都不一樣,總體設(shè)計(jì)要指向最終的需求。

數(shù)據(jù)兼容性

1、協(xié)議制定

制定的協(xié)議要滿足整個(gè)項(xiàng)目所有數(shù)據(jù)的交互。

比如:

92f3d2c6-3051-11ee-9e74-dac502259ad0.png

這里的 ID 設(shè)置為 1 個(gè)字節(jié),可能有一定的風(fēng)險(xiǎn)。后面功能加著加著,可能 1 個(gè)字節(jié)的 ID 滿足不了,就得改協(xié)議。盡管可能滿足了某個(gè)項(xiàng)目的需求,但萬一之后其它項(xiàng)目也用了這一套代碼,但是 1 個(gè)字節(jié)的 ID 滿足不了,又得改代碼。這里設(shè)置 2 字節(jié)可能會好一點(diǎn),基本上能滿足絕大部分情況的使用。

不一定為了覆蓋范圍更廣而設(shè)置 4 字節(jié),這樣可能有點(diǎn)冗余。很多情況都有一個(gè)平衡點(diǎn),需要自己權(quán)衡。

Length字段只設(shè)置了 1 個(gè)字節(jié),可能也有一定的奉獻(xiàn)。后面功能中如果有發(fā)較大的數(shù)據(jù),可能要分好多包發(fā),原本可以發(fā)得很快,被這里限制死了。到時(shí)候想要提速,就得改協(xié)議。

之前項(xiàng)目里,幾塊板間的通信都用同一套協(xié)議。但后期發(fā)現(xiàn)該協(xié)議滿足不了新需求,但為了不影響到前面的數(shù)據(jù),又搞了一套協(xié)議。導(dǎo)致項(xiàng)目里有兩套差不多一樣的協(xié)議處理代碼。

協(xié)議應(yīng)該是項(xiàng)目一開始考慮好、制定好,整個(gè)項(xiàng)目開發(fā)期間,都不應(yīng)該再做改動。

2、數(shù)據(jù)添加

后面新增的數(shù)據(jù),不應(yīng)該插入現(xiàn)有的數(shù)據(jù)中,應(yīng)該單獨(dú)增加一個(gè)數(shù)據(jù)ID。

比如:

現(xiàn)有的數(shù)據(jù)中,有一條數(shù)據(jù)叫做設(shè)備信息的數(shù)據(jù),設(shè)備信息里包含了:設(shè)備IP、設(shè)備Mac。這個(gè)數(shù)據(jù)會顯示在手機(jī)APP上。對應(yīng)的 C 語言代碼:

#defineMSG_ID_DEV_INFO0x0001

typedefstruct_dev_info
{
chardev_ip[IP_MAX_LEN];
chardev_mac[MAC_MAX_LEN];
}dev_info_t;

假如后面需要再顯示一個(gè)設(shè)備的sn,這個(gè)數(shù)據(jù)我們應(yīng)該加在哪里?

如果是項(xiàng)目前中期,這時(shí)候還是在開發(fā)階段,我們可以隨意修改。因?yàn)樵O(shè)備sn也是設(shè)備信息的一部分,可以直接在設(shè)備信息這個(gè)數(shù)據(jù)里添加會比較合理:

#defineMSG_ID_DEV_INFO0x0001

typedefstruct_dev_info
{
chardev_ip[IP_MAX_LEN];
chardev_mac[MAC_MAX_LEN];
chardev_sn[SN_MAX_LEN];
}dev_info_t;

如果是產(chǎn)品已經(jīng)在市場上流通,這時(shí)候這么加的話,軟件兼容性就不太好。因?yàn)榧偃缒愕氖謾C(jī)APP版本與設(shè)備版本不匹配,原有的設(shè)備IP及設(shè)備MAC這兩個(gè)設(shè)備信息可能都顯示不出來,因?yàn)槲覀冞@么一改,破壞了原有的數(shù)據(jù)結(jié)構(gòu),而手機(jī)APP按照原來的數(shù)據(jù)來做解析的,會解析不過。

這時(shí)候可以這么來加:

#defineMSG_ID_DEV_INFO0x0001
#defineMSG_ID_DEV_SN0x0002

typedefstruct_dev_info
{
chardev_ip[IP_MAX_LEN];
chardev_mac[MAC_MAX_LEN];
}dev_info_t;

typedefstruct_dev_sn
{
chardev_sn[SN_MAX_LEN];
}dev_sn_t;

這樣,哪怕手機(jī)APP版本與設(shè)備版本沒有對應(yīng)上,原來的數(shù)據(jù)還是能正常顯示的。當(dāng)然,最好的情況當(dāng)然是在開發(fā)階段就合理地設(shè)計(jì)好。不然,像這種情況,只能犧牲一些程序可讀性來換取程序兼容性了。這會讓后面看代碼的人覺得很奇怪,你這個(gè)sn不也是數(shù)據(jù)設(shè)備信息嗎,怎么還單獨(dú)給一個(gè)ID。后面接手這個(gè)代碼的人可能就會把這一塊代碼給改了。

溫馨提示:在沒有完全弄懂維護(hù)項(xiàng)目的代碼為什么這么實(shí)現(xiàn)的情況下,能正常在跑的程序還是別亂動得好,哪怕你覺得這是屎山代碼。否則可能會出大問題。要么等到軟件重構(gòu)時(shí)再修改,要么就繼續(xù)打補(bǔ)丁。

3、數(shù)據(jù)刪除

如果是刪除本模塊內(nèi)部自己使用的數(shù)據(jù),你想怎么刪就怎么刪。

如果是刪除與其它模塊進(jìn)行交互的數(shù)據(jù),這就不能這么隨意了。比如,請求、應(yīng)答的方式。應(yīng)答端給請求端返回的數(shù)據(jù)是不能隨意刪的,如果要刪,一定要確保請求端已經(jīng)沒有請求數(shù)據(jù)的需求,并且已經(jīng)去掉相關(guān)代碼時(shí),這時(shí)候應(yīng)答端才去刪數(shù)據(jù),否則還是留著吧。

4、數(shù)據(jù)修改

其實(shí)數(shù)據(jù)定了,為了保證軟件兼容性,應(yīng)該是要禁止修改的。

如果一定要修改,可以先增加一條新數(shù)據(jù),后面慢慢切為新數(shù)據(jù)、刪除舊數(shù)據(jù)。

接口兼容性

正在使用的接口,應(yīng)該盡量不要修改。如果要修改,一定不要影響之前的功能。

之前就有遇到類似的情況。舉個(gè)例子:

typedefenum_sys_status
{
SYS_STATUS_IDLE,
SYS_STATUS_RUNNING,
SYS_STATUS_STOP,
}sys_status_t;

staticsys_status_tg_sys_status;

sys_status_tget_sys_status(void)
{
returng_sys_status;
}

這里的系統(tǒng)狀態(tài)是要顯示在手機(jī)APP上的,不同的狀態(tài)顯示不同的圖標(biāo)。后面要新增一個(gè)狀態(tài),結(jié)果數(shù)據(jù)提供者這么改:

typedefenum_sys_status
{
SYS_STATUS_IDLE,
SYS_STATUS_NEW_STATUS,
SYS_STATUS_RUNNING,
SYS_STATUS_STOP,
}sys_status_t;

staticsys_status_tg_sys_status;

sys_status_tget_sys_status(void)
{
returng_sys_status;
}

接口提供者把新增的數(shù)據(jù)插入了中間,影響了枚舉原有的順序。結(jié)果手機(jī)APP上圖標(biāo)顯示亂了。

影響到接口的修改,要保證原有的數(shù)據(jù)不受影響。

系統(tǒng)兼容性

在軟件升級過程中,需要考慮軟件所依賴的其他系統(tǒng)組件是否發(fā)生變化,以確保升級后軟件能夠正常運(yùn)行,不會影響其他系統(tǒng)組件的正常運(yùn)行。如果其他系統(tǒng)組件發(fā)生變化,則需要進(jìn)行相關(guān)測試和文檔更新,以確保整個(gè)系統(tǒng)能夠正常運(yùn)行。

另外隨著項(xiàng)目的迭代,這一套代碼有可能運(yùn)行于不同的系統(tǒng)不同的芯片平臺。

比如,我們嵌入式Linux項(xiàng)目,有些項(xiàng)目里會用到一些第三方庫,這時(shí)候可能會編譯成動態(tài)庫的形式。要考慮升級的時(shí)候能不能升級動態(tài)庫。如果不能,就得把依賴的庫一起編譯到可執(zhí)行程序里。

另外,如果使用動態(tài)庫,之后產(chǎn)品軟硬件迭代換了一個(gè)芯片平臺的話,我們就需要重新交叉編譯一次所依賴的庫。如果為了保證這一塊的兼容性,也可以考慮把所依賴的庫與用戶代碼一起編譯。

當(dāng)然,這個(gè)根據(jù)實(shí)際情況進(jìn)行權(quán)衡取舍。如果依賴的庫很多,一起編譯到可執(zhí)行程序里,導(dǎo)致可執(zhí)行程序很大,到時(shí)候更新也不好更新。

功能兼容性

涉及到功能的添加的,盡量不要影響到之前已開發(fā)的功能。不然也會增加用戶對產(chǎn)品的學(xué)習(xí)成本。比如某些指示燈在前一個(gè)版本的快閃、慢閃代表什么意思,這個(gè)在之后就盡量不要去修改了,不然用戶又得重新理解。

性能兼容性

在軟件升級過程中,需要考慮軟件的性能是否發(fā)生變化,以確保升級后軟件的性能仍然能夠滿足用戶需求。如果軟件的性能發(fā)生變化,則需要進(jìn)行相關(guān)測試和優(yōu)化,以確保軟件能夠正常運(yùn)行,并且能夠滿足用戶的性能需求。

比如,原來正常升級需要3分鐘,某個(gè)版本之后升級變成了6分鐘,升級效率變差了。

安全兼容性

在軟件升級過程中,需要考慮軟件的安全性是否得到加強(qiáng),以確保升級后軟件的安全性能夠得到保障,不會出現(xiàn)新的安全風(fēng)險(xiǎn)。如果軟件的安全性得到加強(qiáng),則需要進(jìn)行相關(guān)測試和文檔更新,以確保軟件能夠正常運(yùn)行,并且能夠保障用戶的安全。


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

    關(guān)注

    18

    文章

    6461

    瀏覽量

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

    關(guān)注

    69

    文章

    5367

    瀏覽量

    91961
  • 嵌入式軟件
    +關(guān)注

    關(guān)注

    4

    文章

    252

    瀏覽量

    28180

原文標(biāo)題:談?wù)勄度胧杰浖嫒菪缘淖⒁馐马?xiàng)!

文章出處:【微信號:工程師進(jìn)階筆記,微信公眾號:工程師進(jìn)階筆記】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

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

    飛凌嵌入式RK3506J核心板通過OpenHarmony 5.1兼容性認(rèn)證

    飛凌嵌入式推出的FET3506J-C核心板順利完成OpenHarmony 5.1 Release版本兼容性測評,成功斬獲【OpenHarmony生態(tài)產(chǎn)品兼容性證書】
    的頭像 發(fā)表于 03-27 09:53 ?1813次閱讀
    飛凌<b class='flag-5'>嵌入式</b>RK3506J核心板通過OpenHarmony 5.1<b class='flag-5'>兼容性</b>認(rèn)證

    知識分享-嵌入式系統(tǒng)可靠模型

    嵌入式系統(tǒng)可靠設(shè)計(jì)技術(shù)及案例解析1.3嵌入式系統(tǒng)可靠模型嵌入式系統(tǒng)可靠模型分為兩種:串聯(lián)結(jié)
    的頭像 發(fā)表于 03-11 16:43 ?432次閱讀
    知識分享-<b class='flag-5'>嵌入式</b>系統(tǒng)可靠<b class='flag-5'>性</b>模型

    什么是嵌入式應(yīng)用開發(fā)?

    包括ARM7、ARM9、ARM11、PowerPC、MIPS等。這些處理器和編程語言的選擇取決于具體的硬件條件和開發(fā)需求?。 綜上所述,嵌入式應(yīng)用開發(fā)是一個(gè)綜合的技術(shù)領(lǐng)域,涉及硬件和軟件的緊密結(jié)合,廣泛應(yīng)用于各種設(shè)備和系統(tǒng)中
    發(fā)表于 01-12 16:13

    系統(tǒng)嵌入式的學(xué)習(xí)路線

    比較簡單,硬件工程師工作的含金量主要體現(xiàn)在產(chǎn)品的可靠和穩(wěn)定性設(shè)計(jì)、以及電磁兼容設(shè)計(jì),這才是硬件設(shè)計(jì)工程師的含金量所在。 一個(gè)資深的嵌入式硬件工程師年薪都在10萬~ 30萬之間。 要成為一個(gè)資深
    發(fā)表于 12-16 07:49

    嵌入式開發(fā)工具版本的選擇策略

    版本在嵌入式開發(fā)團(tuán)隊(duì)協(xié)作中,軟件工具版本的統(tǒng)一管理需要分層次、分場景處理。 一、必須強(qiáng)制統(tǒng)一軟件版本的情況 1、編譯器版本 像Keil/IAR/GCC這種帶有編譯器的工具,團(tuán)隊(duì)之間必
    發(fā)表于 11-25 06:11

    嵌入式軟件測試與專業(yè)測試工具的必要深度解析

    測試的特殊嵌入式軟件具有以下顯著特點(diǎn),使其測試過程與通用軟件存在本質(zhì)差異: ?硬件依賴強(qiáng)?:嵌入式
    發(fā)表于 09-28 17:42

    霍爾開關(guān)替代微動開關(guān)有哪些注意事項(xiàng)?

    霍爾開關(guān)替代微動開關(guān)時(shí),需從電氣性能、機(jī)械適配、環(huán)境適應(yīng)、成本與可靠等多方面綜合考量。以下是具體注意事項(xiàng)及解決方案: 一、電氣性能匹配 輸出信號類型兼容性 微動開關(guān) :通常輸出干接
    的頭像 發(fā)表于 09-23 10:57 ?1094次閱讀
    霍爾開關(guān)替代微動開關(guān)有哪些<b class='flag-5'>注意事項(xiàng)</b>?

    emWin AppWizard 開發(fā)注意事項(xiàng)有哪些?

    emWin AppWizard 開發(fā)注意事項(xiàng)
    發(fā)表于 09-04 06:18

    新一代嵌入式開發(fā)平臺 AMD嵌入式軟件和工具2025.1版現(xiàn)已推出

    搶先體驗(yàn) SHEL 流程簡化所有 AMD 嵌入式開發(fā)平臺上的軟件項(xiàng)目生成過程 Zephyr RTOS 兼容性已擴(kuò)展至第二代 AMD Versal AI Edge 系列、Kria SOM
    的頭像 發(fā)表于 08-20 09:15 ?4265次閱讀

    AMD 2025.1版嵌入式軟件和工具的新增功能

    AMD 2025.1 版嵌入式軟件和工具是面向新一代嵌入式系統(tǒng)開發(fā)而打造的綜合平臺,全面加速概念構(gòu)想到部署落地。
    的頭像 發(fā)表于 08-15 15:32 ?1473次閱讀

    【干貨速遞】嵌入式數(shù)據(jù)可靠,軟件設(shè)計(jì)的這些細(xì)節(jié)不能忽視!

    前兩期內(nèi)容分別講述了嵌入式數(shù)據(jù)可靠的元器件選型和硬件設(shè)計(jì),這一期我們來講講軟件設(shè)計(jì)。哪怕硬件設(shè)計(jì)再完善,但如果軟件沒有設(shè)計(jì)好,也達(dá)不到預(yù)期的可靠
    的頭像 發(fā)表于 07-31 11:34 ?696次閱讀
    【干貨速遞】<b class='flag-5'>嵌入式</b>數(shù)據(jù)可靠<b class='flag-5'>性</b>,<b class='flag-5'>軟件</b>設(shè)計(jì)的這些細(xì)節(jié)不能忽視!

    Linux嵌入式和單片機(jī)嵌入式的區(qū)別?

    、可定制、開放源代碼、良好的兼容性、強(qiáng)大的網(wǎng)絡(luò)支持、多任務(wù)支持、豐富的軟件生態(tài)系統(tǒng)。 架構(gòu):應(yīng)用程序運(yùn)行在用戶空間,硬件訪問和控制通常在內(nèi)核空間的驅(qū)動層中實(shí)現(xiàn)。 運(yùn)行芯片:通常稱為MPU(Micro
    發(fā)表于 06-20 09:46

    請問從哪里可以獲取CCG5 軟件開發(fā)及Layout注意事項(xiàng)?

    我們準(zhǔn)備開發(fā)一款雷電4的拓展塢 請問從哪里可以獲取CCG5 軟件開發(fā)及Layout注意事項(xiàng)
    發(fā)表于 05-30 06:21

    手機(jī)喇叭氣密檢測儀的注意事項(xiàng)

    使用手機(jī)喇叭氣密檢測儀的注意事項(xiàng)包括以下幾點(diǎn):一、使用前注意事項(xiàng)仔細(xì)閱讀手機(jī)喇叭氣密檢測儀的使用說明書,了解設(shè)備的操作方法和注意事項(xiàng)。檢
    的頭像 發(fā)表于 05-15 13:38 ?925次閱讀
    手機(jī)喇叭氣密<b class='flag-5'>性</b>檢測儀的<b class='flag-5'>注意事項(xiàng)</b>

    設(shè)置射頻網(wǎng)絡(luò)分析儀的測試條件有哪些注意事項(xiàng)

    ,避免接觸不良導(dǎo)致VSWR惡化。 三、環(huán)境干擾與測試條件1. 電磁兼容性(EMC) 注意事項(xiàng): 開放實(shí)驗(yàn)室測試時(shí),環(huán)境噪聲可能淹沒微弱信號(如噪聲系數(shù)測試需噪聲<-110dBm
    發(fā)表于 05-06 16:02
    宿松县| 蚌埠市| 高唐县| 共和县| 福州市| 栾城县| 全椒县| 莫力| 南华县| 黎川县| 扎兰屯市| 右玉县| 镇远县| 柯坪县| 吴桥县| 兴宁市| 锡林浩特市| 周宁县| 三江| 延安市| 石首市| 景德镇市| 颍上县| 云阳县| 济源市| 广德县| 习水县| 呼伦贝尔市| 枞阳县| 凌云县| 静宁县| 金堂县| 宜章县| 辉南县| 修水县| 合阳县| 昌平区| 永仁县| 开原市| 苍山县| 安福县|