色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

談談嵌入式軟件兼容性的注意事項!

工程師進階筆記 ? 來源:嵌入式大雜燴 ? 2023-08-01 18:05 ? 次閱讀

		嵌入式項目中,軟件是一個不斷迭代的過程,需要考慮各種兼容性。之前我們的項目,因為這方面考慮得比較少,導致項目中后期開發起來很被動。

項目系統總體設計階段,應盡可能地考慮到未來可以遇見的情況,覆蓋到盡可能多的業務擴展。項目雖然分階段開發,各個階段完成的功能都不一樣,總體設計要指向最終的需求。

數據兼容性

1、協議制定

制定的協議要滿足整個項目所有數據的交互。

比如:

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

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

不一定為了覆蓋范圍更廣而設置 4 字節,這樣可能有點冗余。很多情況都有一個平衡點,需要自己權衡。

Length字段只設置了 1 個字節,可能也有一定的奉獻。后面功能中如果有發較大的數據,可能要分好多包發,原本可以發得很快,被這里限制死了。到時候想要提速,就得改協議。

之前項目里,幾塊板間的通信都用同一套協議。但后期發現該協議滿足不了新需求,但為了不影響到前面的數據,又搞了一套協議。導致項目里有兩套差不多一樣的協議處理代碼。

協議應該是項目一開始考慮好、制定好,整個項目開發期間,都不應該再做改動。

2、數據添加

后面新增的數據,不應該插入現有的數據中,應該單獨增加一個數據ID。

比如:

現有的數據中,有一條數據叫做設備信息的數據,設備信息里包含了:設備IP、設備Mac。這個數據會顯示在手機APP上。對應的 C 語言代碼:

#defineMSG_ID_DEV_INFO0x0001

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

假如后面需要再顯示一個設備的sn,這個數據我們應該加在哪里?

如果是項目前中期,這時候還是在開發階段,我們可以隨意修改。因為設備sn也是設備信息的一部分,可以直接在設備信息這個數據里添加會比較合理:

#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;

如果是產品已經在市場上流通,這時候這么加的話,軟件兼容性就不太好。因為假如你的手機APP版本與設備版本不匹配,原有的設備IP及設備MAC這兩個設備信息可能都顯示不出來,因為我們這么一改,破壞了原有的數據結構,而手機APP按照原來的數據來做解析的,會解析不過。

這時候可以這么來加:

#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;

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

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

3、數據刪除

如果是刪除本模塊內部自己使用的數據,你想怎么刪就怎么刪。

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

4、數據修改

其實數據定了,為了保證軟件兼容性,應該是要禁止修改的。

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

接口兼容性

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

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

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;
}

這里的系統狀態是要顯示在手機APP上的,不同的狀態顯示不同的圖標。后面要新增一個狀態,結果數據提供者這么改:

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;
}

接口提供者把新增的數據插入了中間,影響了枚舉原有的順序。結果手機APP上圖標顯示亂了。

影響到接口的修改,要保證原有的數據不受影響。

系統兼容性

在軟件升級過程中,需要考慮軟件所依賴的其他系統組件是否發生變化,以確保升級后軟件能夠正常運行,不會影響其他系統組件的正常運行。如果其他系統組件發生變化,則需要進行相關測試和文檔更新,以確保整個系統能夠正常運行。

另外隨著項目的迭代,這一套代碼有可能運行于不同的系統不同的芯片平臺。

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

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

當然,這個根據實際情況進行權衡取舍。如果依賴的庫很多,一起編譯到可執行程序里,導致可執行程序很大,到時候更新也不好更新。

功能兼容性

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

性能兼容性

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

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

安全兼容性

在軟件升級過程中,需要考慮軟件的安全性是否得到加強,以確保升級后軟件的安全性能夠得到保障,不會出現新的安全風險。如果軟件的安全性得到加強,則需要進行相關測試和文檔更新,以確保軟件能夠正常運行,并且能夠保障用戶的安全。


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 通信
    +關注

    關注

    18

    文章

    6036

    瀏覽量

    136058
  • 軟件
    +關注

    關注

    69

    文章

    4956

    瀏覽量

    87594
  • 嵌入式軟件
    +關注

    關注

    4

    文章

    240

    瀏覽量

    26653

原文標題:談談嵌入式軟件兼容性的注意事項!

文章出處:【微信號:工程師進階筆記,微信公眾號:工程師進階筆記】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    嵌入式工控機如何使用?嵌入式工控機操作方法及注意事項

    嵌入式工控機作為現代工業自動化和控制系統中重要的硬件支持,廣泛應用于生產線監控、軌道交通、電力能源等多個領域。其穩定性、可靠以及適應惡劣環境的能力,使其成為許多行業的首選。那么,嵌入式工控機究竟如何使用呢?高能計算機將詳細介紹
    的頭像 發表于 10-18 10:02 ?349次閱讀

    脈沖充電器的使用注意事項

    脈沖充電器的使用注意事項主要包括以下幾個方面: 一、安全注意事項 用電安全 :在充電過程中,應始終保持警惕,注意用電安全,避免觸電和短路等危險情況的發生。 防火防災 :避免在易燃易爆
    的頭像 發表于 09-26 16:05 ?864次閱讀

    繞線電感定制的注意事項

    電子發燒友網站提供《繞線電感定制的注意事項.docx》資料免費下載
    發表于 09-20 11:24 ?0次下載

    人機接口電感觸摸按鈕的設計注意事項

    電子發燒友網站提供《人機接口電感觸摸按鈕的設計注意事項.pdf》資料免費下載
    發表于 08-30 09:30 ?2次下載
    人機接口電感<b class='flag-5'>式</b>觸摸按鈕的設計<b class='flag-5'>注意事項</b>

    嵌入式工控一體機的安裝方法和使用注意事項

    嵌入式工控一體機的安裝方法和使用注意事項?工控一體機系列產品中,因為使用環境的特殊,很多企業需要以嵌入式的方式,把工控一體機安裝到固定的位置,途控在多年的
    的頭像 發表于 08-04 11:12 ?1232次閱讀

    聚徽觸控-嵌入式平板工控機注意事項

    嵌入式平板工控機的應用中,需要特別注意以下幾點:
    的頭像 發表于 05-30 10:15 ?309次閱讀

    FPGA的高速接口應用注意事項

    FPGA的高速接口應用注意事項主要包括以下幾個方面: 信號完整與電磁兼容性(EMC) : 在設計FPGA高速接口時,必須充分考慮信號完整和電磁
    發表于 05-27 16:02

    FMD LINK 使用注意事項

    電子發燒友網站提供《FMD LINK 使用注意事項.pdf》資料免費下載
    發表于 05-06 10:11 ?0次下載

    瑞薩CTSU程序在向嵌入式OS操作系統移植時的注意事項

    瑞薩CTSU程序在向嵌入式OS操作系統移植時的注意事項
    的頭像 發表于 03-29 08:05 ?361次閱讀
    瑞薩CTSU程序在向<b class='flag-5'>嵌入式</b>OS操作系統移植時的<b class='flag-5'>注意事項</b>

    光模塊使用可能遇到的問題以及注意事項

    光模塊使用中常見問題及注意事項兼容性問題、溫度問題、插拔操作問題、故障診斷問題。
    的頭像 發表于 03-11 15:32 ?911次閱讀

    嵌入式軟件設計的原則分享

    嵌入式軟件開發如果具有更好的閱讀、擴展性以及維護,就需要考慮很多因素。今天給大家分享幾個嵌入式軟件
    發表于 02-25 10:54 ?697次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b>設計的原則分享

    浪涌抑制器的應用及注意事項

    浪涌抑制器的應用及注意事項?|深圳比創達電子
    的頭像 發表于 01-19 09:55 ?750次閱讀
    浪涌抑制器的應用及<b class='flag-5'>注意事項</b>?

    STM32ADC中斷的使用注意事項和優化建議

    使用中斷是提高系統性能和精確度的關鍵。本文將詳細介紹STM32ADC中斷的使用注意事項和優化建議。 注意事項: 1. 合理選擇中斷觸發方式:STM32ADC可以通過軟件觸發(軟件啟動轉
    的頭像 發表于 01-12 15:17 ?3487次閱讀

    測速電機: 常見6大注意事項

    測速電機: 常見6大注意事項!測速電機是一種用于測量物體運動速度的設備,廣泛應用于工業生產和科學研究中。測速電機常見的6大注意事項以確保安全和準確
    的頭像 發表于 01-11 10:53 ?504次閱讀
    測速電機: 常見6大<b class='flag-5'>注意事項</b>

    軟件兼容性測試報告模板

    兼容性測試 兼容性測試報告 軟件兼容性測試要考慮什么?》 1、向前兼容和向后兼容。向前
    的頭像 發表于 01-05 10:24 ?759次閱讀
    主站蜘蛛池模板: 在线观看永久免费网站| 亚洲一区高清| 老鸭窝毛片| 久久不射网| 精品四虎国产在免费观看| 国产人妻精品午夜福利免费不卡| 成人做视频免费| 拔擦拔擦8X永久华人免费播放器| 97人人添人人澡人人澡人人澡| 中国明星16xxxxhd| 中文字幕高清在线中文字幕| 亚洲视频成人| 夜色88V精品国产亚洲AV| 亚洲日韩欧美国产中文在线| 亚洲绝美精品一区二区| 亚洲AV蜜桃永久无码精品无码网 | 乳巨揉みま痴汉电车中文字幕动漫| 欧美男同gay粗大又长| 欧美顶级情欲片免费看| 欧美伦理片第7页| 区久久AAA片69亚洲| 日本高清天码一区在线播放| 日本午夜精品理论片A级APP发布| 日本AAA片爽快视频| 色丁香婷婷综合缴情综| 四房播播最新地址| 香蕉鱼视频观看在线视频下载| 迅雷哥在线观看高清| 亚洲你我色| 竹菊影视一区二区三区| 99久久伊人一区二区yy5099| a级毛片黄免费a级毛片| 高清 仑乱 一级 a| 国产亚洲欧洲日韩在线观看| 久久成人亚洲| 欧美精品一区二区三区视频 | 5G在线观看免费年龄确认| 97超碰射射射| 第一怡春院| 狠狠色噜噜狠狠狠狠米奇777| 久久久久伊人|