91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

3天內不再提示

嵌入式軟件的設計模式(下)

汽車電子技術 ? 來源:嵌入式系統(tǒng) ? 作者: 嵌入式系統(tǒng) ? 2023-01-20 11:34 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

接前文 [ 嵌入式軟件的設計模式(上) ]

思想有多遠,我們就能走多遠

4、狀態(tài)與工作流類設計模式

4.1 狀態(tài)與事件

行為隨條件變化而改變,這里狀態(tài)切換的模式也稱為狀態(tài)機。有限狀態(tài)機 (Finite State Machine,FSM) 是由3 個主要元素組成的有向圖: 狀態(tài)、轉換和動作。

狀態(tài)是系統(tǒng)或者元素的狀態(tài);轉換是從一個狀態(tài)到另一個狀態(tài)的路徑,通常通過感興趣的事件初始化,當元素處在前驅狀態(tài)中,并且收到觸發(fā)事件,它將連接前驅狀態(tài)與后續(xù)狀態(tài)。如果事件發(fā)生,然而狀態(tài)中的元素沒有對這個特定的事件做出響應,事件就“靜靜丟棄”沒有任何效果,也就是狀態(tài)機僅做肯定的陳述 (“當我在這個狀態(tài)中并且這件事發(fā)生,我才會做” ) 。

狀態(tài)機本身不關心事件如何到達,但是必須避免競爭條件。同步狀態(tài)機必須阻塞調用者 (守衛(wèi)調用模式或者臨界區(qū)模式) ,異步狀態(tài)機必須使用排隊(隊列模式)來存儲它們的事件,直到它們得到處理。如果狀態(tài)機正在執(zhí)行動作的過程中產生新事件, 狀態(tài)機會立即停止去處理事件? 答案當然是否定的。 狀態(tài)機在處理一個新事件之前,必須確保前一狀態(tài)的處理完成 。后續(xù)幾個狀態(tài)-事件模式都需要遵循這個原則,而且具體模式實現中不再贅述。

4.2 單事件接收器模式

單事件接收器狀態(tài)機 (以下簡稱 SERSM) 簡單說就是觸發(fā)狀態(tài)切換的事件接收入口只有一個,單事件接收器模式依賴于單一事件接收器在客戶與狀態(tài)機間提供接口。在內部,這個單一事件接收器必須接收事件數據類型,不僅識別哪個事件已經發(fā)生,并且識別任意伴隨事件的數據。

事件接收器模式必然有事件,事件類型event_type和事件攜帶的數據event_data,前者可以是個枚舉值,后者是一個結構體struct,為了識別不同的事件數據屬性,可以選擇union共用體更貼切。

如果是同步處理,狀態(tài)執(zhí)行比較簡單,可以直接調用event_receptor,按傳入的事件類型和事件數據執(zhí)行并切狀態(tài);異步版本則建議組合使用隊列模式,將事件按FIFO的方式入隊,事件執(zhí)行函數被動觸發(fā)從隊列中取出事件,用輪詢的機制尋找新的事件和單事件接收器再執(zhí)行,最終也是調用event_receptor。具體實現有兩種方式:

1、分支邏輯法

利用 if-else 或者 switch-case 分支邏輯,按狀態(tài)轉移圖,將每一個狀態(tài)轉移原模原樣地直譯成代碼,對于簡單的狀態(tài)機來說,這種實現方式最簡單、直接,是首選;缺點所有的狀態(tài)邏輯封裝在單一事件接收器內(一個大型 if-else 或 switch-case 結構),限制了狀態(tài)變更和擴展性。

//微信公眾號:嵌入式系統(tǒng)
//代碼只是表意,無法編譯
//enum s1 s2 s3  狀態(tài)枚舉值
//state 表示當前狀態(tài)
void event_receptor(event_type,event_data)
{
    switch(state)
    {
    case s1:
        state_handle1(event_type,event_data);
        break;
    case s2:
        state_handle2(event_type,event_data);
        break;
    case s3:
        state_handle3(event_type,event_data);
    default:
        break;
    }
}

state_handle1/state_handle2/state_handle3執(zhí)行后,按執(zhí)行情況切換狀態(tài)到新的state。下次即使同樣的事件,因為state不同,也會產生不同的效果。

2、查表法

對于狀態(tài)很多、狀態(tài)轉移比較復雜的狀態(tài)機來說,查表法比較合適,也稱表驅動法。通過二維數組來表示狀態(tài)轉移圖,能極大地提高代碼的可讀性和可維護性,擴展狀態(tài)只需增加表即可。

//微信公眾號:嵌入式系統(tǒng)
//代碼只是表意,無法編譯
typedef struct
{
    int state;   //狀態(tài) enum
    pFun state_handle; //對應狀態(tài)下的函數指針
}state_event_table_struct;

state_event_table_struct table[]={
    {s1,state_handle1},
    {s2,state_handle2},
    {s3,state_handle3}
};

void event_receptor(event_type,event_data)
{
    for(i=0;i<(sizeof(table)/sizeof(state_event_table_struct));i++)
    {
        //根據當前狀態(tài)state查表選擇對應的事件接收器,并進行狀態(tài)切換
        if(current_state==table[i].state) 
        {
            table[i].state_handle(event_type,event_data);
            //current_state內部更新
        }
    }
}

4.3 多事件接收器模式

多事件接收器有限狀態(tài)機 (MERSM) 通常僅用于同步狀態(tài)機,這是因為業(yè)務層通常關心狀態(tài)機的事件集合。在這個模式中,每個事件都有一個單一的事件接收器,每個事件接收器本身僅考慮處理單一事件以及執(zhí)行相關動作??梢岳斫鉃閱问录邮掌魇嵌鄠€事件進入一個固定的接收器處理,而多事件接收器是多個事件組分配給多個接收器處理。

前者可以比喻為多個領導給一個員工安排任務,后者是多個領導同時給多個員工安排任務。在事件處理上可以復用處理機制,假設員工employee有A/B/C三人,任務task集有t1/t2/t3三種,其處理接口有多種實現方式。

1、拆分為單事件接收器模式內再嵌套一個單事件接收器

//微信公眾號:嵌入式系統(tǒng)
//代碼只是表意,無法編譯
void employee_task_handle(employee, task)
{
    switch(employee)
    {
        case A:
            {
                switch(task)
                {
                    case t1:
      //do something
                        break;
                    case t2:
      //do something
                        break;
                    case t3:
      //do something
                        break;
                    default:
                        break;
                }
            }
            break;

        case B:
   //同上
            break;
        case C:
   //同上
            break;
        default:
            break;
    }
}

對于兩層switch-case,也可以先按task分,再嵌套按employee分類執(zhí)行。

也可以直接將employee_task_handle 函數的參數拆分,例如 employee_A_handle/ employee_B_handle /employee_C_handle 三個函數體,可調用的事件接收入口就有3個,需要調用者自行區(qū)分,選擇合適的事件接收接口,這也是多事件接收器字面意思的效果。

2、組合事件再按單事件接收器模式

employee三人與task三種,有9種組合方式,直接將有限的9種方式定為枚舉值,就是個簡單的單事件接收器模式了,只是代碼處理上,每個case內重復的代碼比較多而已。這只是適合組合類型比較少的情形,將多事件接收器模式降維度,簡化為前一節(jié)的單事件接收器模式。

3、建立二維表

這種實現方式就是下一節(jié)的狀態(tài)表模式。通過將狀態(tài)邏輯分組,降為單事件接收器模式處理。例如MTK方案的鋰電池脈沖充電管理,因為充電狀態(tài)有很多狀態(tài),每個狀態(tài)下充電是間歇性脈沖充電,充或者不充再分2個子狀態(tài),采用的正是這種方案。

本質上多事件接收器模式,可以采用單事件接收器模式或者狀態(tài)表模式實現,這樣的前提是事件參數類似,結構相同。如果不同事件傳入的參數格式差異很大,很難統(tǒng)一;例如事件1需要2個int參數,事件2需要3個char數組為參數,直接按參數類型劃分多個接口,不必強行參數封裝統(tǒng)一。不同的事件處理分不同的接收器接口,也就是多事件接收器模式的特點。拆分為多個事件接收有利于傳參,但要求使用者從多個接口中選擇正確的。

4.4 狀態(tài)表模式

狀態(tài)表模式是沒有嵌套狀態(tài)機創(chuàng)建的模式,其效果類似表驅動法,狀態(tài)表模式使用二維數組來存儲狀態(tài)轉換信息,通常用狀態(tài)--事件構建表格。狀態(tài)表模式的狀態(tài)間不存在邏輯關系,屬于并行的扁平化狀態(tài),也就是任意狀態(tài)在任意時刻的表現一致,狀態(tài)切換與當前狀態(tài)無關。

狀態(tài)表模式的執(zhí)行,直接通過當前的狀態(tài)和事件組合來索引,調用前必須先初始化狀態(tài)表。它也比其他模式更易于擴展,因為擴展只是按規(guī)則添加新元素到狀態(tài)表。畢竟嵌入式設備,狀態(tài)的類型必然是有限的,狀態(tài)表可以使用靜態(tài)方式存儲,雖然浪費但實現簡單。

//微信公眾號:嵌入式系統(tǒng)
//代碼只是表意,無法編譯
typedef void (* pfun_task_handle)(void);

pfun_task_handle employee_task_table[3][3]={
    {employeeA_task1,employeeA_task2,employeeA_task3},
    {employeeB_task1,employeeB_task2,employeeB_task3},
    {employeeC_task1,employeeC_task2,employeeC_task3},
};

//employee和task定為枚舉值
//做好函數指針非空校驗
void task_allocation(employee,task)
{
 employee_task_table[employee][task]();
}

這種模式非常適合同步狀態(tài)機切換,如果是異步場景,最好使用隊列模式組合處理。

4.5 分解與狀態(tài)模式

前面的狀態(tài)機中,元素始終正好處于某個狀態(tài)之中,而且是一個確切的狀態(tài),這樣的狀態(tài)稱為或狀態(tài)。但實際場景也存在復雜的,例如交通信號燈,它有兩個獨立的屬性:

顏色 :紅Red、黃Yellow、綠Green 三種

顯示樣式 :熄滅off 、長亮Steady、快閃Flashing quickly 、慢閃Flashing slowly 四種。

這個燈有10種(10=3x3+1)狀態(tài),因為off關閉狀態(tài),燈的顏色屬性已經沒必要參考了。這種獨立狀態(tài)乘到一起,形成一個可能巨大的狀態(tài)集合很常見,解決這類問題的方法一一與狀態(tài)。這里僅僅作閹割版介紹,狀態(tài)機的狀態(tài),并不一定只是一個屬性或枚舉值解決,也可以是多個正交屬性組合,這種狀態(tài)需要多個參數來描述,可以在單事件接收器模式上增加狀態(tài)參數。

理論與實際的差距,一直做GPS衛(wèi)星定位器,設備含RGB三顆LED,3顆燈除獨立工作指示特定狀態(tài)外,還有組合狀態(tài),例三顆共同閃亮多次后恢復先前獨立的閃亮狀態(tài),代碼維護其實很復雜,擴展性并不好。關于狀態(tài)機,如果狀態(tài)之間有關聯,存在優(yōu)先級或者組合,不管什么模式代碼都會比較難維護;只能說結合產品通用需求做個偽標準化接口??梢娎碚摵蛯嶋H還是存在較大差距的。

4.7 小結

狀態(tài)機實現的模式,每一個都有優(yōu)點和缺點,使用哪一個完全依賴于需求。

單事件接收器模式使用單一事件接收器,并且內部用大的 switch - case 語句實現狀態(tài)行為。它需要創(chuàng)建并傳遞給接收器事件相關聯的類型,最簡單易用。

多事件接收器模式為每個事件使用單獨的事件處理程序,以便事件類型不用明確指出,適合不同的參數類型匹配不同的事件接收器。

狀態(tài)表模式可以擴展到大型的狀態(tài)空間,并且提供與狀態(tài)空間大小獨立的性能,對較大狀態(tài)空間支持較好。

分解與狀態(tài)模式提供簡單的實現與狀態(tài)的方法(難通用待學習)。

5、安全性與可靠性類設計模式

安全性是指不會引起人或者設備危險的系統(tǒng),即危險的嚴重性后果,和發(fā)生的可能性;可靠性用于衡量系統(tǒng)的“可服務時間”或者“可用性”。沒有所謂的“安全軟件”,因為嵌入式系統(tǒng)是電子、機械、軟件在不同操作下的復合體 ,安全、穩(wěn)定只是特定場合的運行結果。

嵌入式系統(tǒng)的安全性和可靠性,除去硬件防護方案外,軟件上也可以采用一些防御性編程,實現系統(tǒng)的安全可靠以及異常恢復。主要從數據校驗、備份兩方面來入手。這里的解決方案其實也算是軟件開發(fā)技巧,不是嚴格意義上的設計模式。

5.1 二進制反碼模式

二進制反碼模式在檢測由于外界影響或者硬件故障內存損壞時很有用。

可能由 EMI (Electro-magnetic interference ,電磁干擾) 、熱量、硬件故障、軟件故障或者其他外部原因引發(fā)內存位損壞。這個模式將重要存儲兩份,一份以正常形式,而另一份以二進制反碼〈~ 操作符計算位反轉,逐位取反) 形式。讀取數據時,二進制反碼格式再次取反,并且與正常形式值比較。如果值完全相同則返回那個值,否則隨之處理錯誤。

該模式提供可靠的方式識別影響單一內存分配的故障,非常適合數據量小但非常重要的數據存儲,但對于非常大的數據結構,復制兩份數據浪費硬件資源。在這種情況下使用數據流校驗數據的正確性更合適。

一些非常關鍵的信息,如使用uint8_t變量表示某個狀態(tài),一般可設0和非0兩種狀態(tài),假設原本的非0為1,但因為異常被改為2,軟件是無能為力的。但如果使用二進制反碼模式,使用0x55和0xAA為兩種正常狀態(tài),其他為異常狀態(tài),這樣軟件的處理上就更加安全健壯。

5.2 數據流校驗模式

數據流校驗模式解決各種原因導致的變量損壞的問題,如環(huán)境因素 (EMI、熱量、輻射) 、硬件因素(電源波動、內存單元故障、地址線短流路) 或者是軟件故障 〈其他修改內存的軟件錯誤) ,針對大型數據集合中的數據損壞問題。

簡單說就是對數據進行校驗,計算其和、CRC、MD5或者SHA哈希值等,如果數據中間出現異常被篡改,校驗值可以發(fā)現錯誤,但是不能解決錯誤??紤]到硬件資源限制,一般用CRC16校驗。將原始數據和其CRC16值一并存儲。使用前通過校驗值確認數據是否被篡改。

5.3 魔數標記模式

如果前面兩種方式適合數據存儲,如果只是單純的內存數據塊校驗,可以簡單粗暴的增加魔數標記。例如一個大結構體,首尾增加字段,正常情況下將其賦一個特殊值,如果使用中存在內存覆蓋或者操作越界,導致首尾標記的數據出現變化,則表示內存出現嚴重問題。

//微信公眾號:嵌入式系統(tǒng)
typedef struct
{
    uint16_t magic_head;
    int32_t  importance1;
    uint8_t  importance2[5];
    uint16_t magic_tail;
} cutomer_data_struct;

//magic_head或magic_tail發(fā)生變化說明內存操作出現問題

對于動態(tài)內存申請也可以采用這種方式,期望申請N字節(jié)時多申請6個字節(jié)(舉例而已),

magic_head 申請長度 有效堆區(qū) magic_tail
0x1234 N 實際可用區(qū)域 0x1234

如果magic_head和magic_tail不是0x1234,說明動態(tài)申請的區(qū)域使用越界??梢詤⒖?a href="http://www.makelele.cn/outside?redirect=http://mp.weixin.qq.com/s?__biz=Mzg3OTQ3NDQ2Mg==&mid=2247484804&idx=1&sn=e3d40981b1cf2cceaaacb84901a2d88a&chksm=cf02a7f5f8752ee3b50f37003866440837019d3e080585b5f975dc8c9222cc8b8e044d7955a1&scene=21#wechat_redirect" target="_blank">動態(tài)內存管理及防御性編程。

有些芯片SDK代碼,對flash的寫保護,或者看門狗喂狗接口,其寫法也類似,將一個特殊的值寫給寄存器才算正常,也是基于這類考慮。魔法數在應用開發(fā)中盡量使用枚舉值來替代,但也因為魔法數的特殊性,在安全方面可以避免誤操作。

5.4 智能數據模式

軟件為了正確執(zhí)行功能都有前置條件,但是這些功能并沒有明確地檢查條件實際上是否滿足,在合適的位置使用主動防衛(wèi)的方式來檢查參數,智能數據模式即為標量數據元素編寫這種范例。

嵌入式C在函數層面,運行時對參數的范圍不會檢查,這是其固有的不安全性,需要使用者主動去對傳入的參數進行范圍檢查,對函數的返回值進行結果判斷。

智能數據模式簡化就是對數據前置條件和規(guī)則的自檢,屬于習慣 (小模式)范圍,創(chuàng)建或者啟動時對參數自檢,對傳入的參數值進行范圍檢查,以及多個參數間的組合合理性檢查,對運行的返回值進行錯誤處理。所有錯誤碼以枚舉類型展示,或者直接字符描述以使意圖理解更加清晰。

智能數據模式優(yōu)點是數據能自我保護,缺點是執(zhí)行操作的性能開銷 。一般只在針對核心功能、人機交互等,引入的錯誤容易產生嚴重后果的地方處理。

最典型最簡單的應用場景就是對傳入的指針參數進行非空判斷,這里推薦合理的使用const限定參數。

5.5 單通道模式

通道模式使用中等規(guī)?;蛘叽笮偷娜哂鄟韼椭R別何時發(fā)生運行時故障,并且可能 (依賴于怎樣實現) 在故障存在時持續(xù)提供服務。

通道是體系結構,包含執(zhí)行端到端處理的軟件(可能有硬件),也就是說通過一系列的數據處理步驟,將關鍵部分獨立化。例如數據流可以定為數據采集-處理-執(zhí)行一條龍服務,基于事件的驅動。安全性和可靠性通過在通道的關鍵點增加檢查得到增強,可能需要一些額外的硬件。由于僅有單一通道,因此該模式將在出現持續(xù)故障時,不能繼續(xù)完成功能,但是它可檢測并可能處理臨時故障。

這里不提供代碼范例,只是提供一種思路,關鍵部分單獨處理,分步執(zhí)行,不要耦合其他邏輯,對各步驟中的中間信息增加范圍校驗,識別異常并盡可能進行自我恢復處理。

5.6 雙通道模式

雙通道模式是一種通過提供多個通道提高穩(wěn)定性的主要模式,從而在架構層解決冗余問題。比如體溫計檢測與顯示,單通道到數據采集-處理-顯示,雙通道就可能是2顆傳感器各自獨立采集,再合并處理后顯示。

如果通道是相同的(叫做同構冗余通道),能夠解決隨機故障 (偶爾失效) ,但是不能解決系統(tǒng)故障 (錯誤) 。如果通道使用不同的設計或者實現,稱為異構冗余模式(也稱為多樣設計模式),能夠解決隨機和系統(tǒng)故障。

雙通道模式對單個點 (失效或者是失效與錯誤,這依賴于選擇的具體子模式) 故障提供保護。系統(tǒng)可能通過與另一個通道比較來檢測一個通道中的錯誤,然后轉換故障到安全狀態(tài),或者它可能使用其他的手段檢測一個通道的故障,并且 當故障發(fā)生時,轉換到另外一個。

這種雙備份機制,通過復制通道以解決與安全性和可靠性相關的故障,通常也需要大量的硬件復制,以致非常高硬件成本。如果通道是相同的,則所有的復制品包含相同的錯誤,因此將在相同的環(huán)境下出現錯誤。一般是實施策略是兩個通道的管理實現也不相同。兩個通道能夠同時運行,并且互相檢查,如果在臨界值上輸出不同,系統(tǒng)則轉換到故障安全狀態(tài)。另外,一個通道可以運行直到檢測到錯誤,并且開啟另外一個通道,允許故障出現時持續(xù)提供服務。不同模式的變體,有不同的硬件成本和效果。

  1. **同構冗余模式 **不同的通道使用相同的設計和實現,可以有效地解決單一點的錯誤,該模式變體有相對較高的生產成本 ,但是有相對低的設計成本 〈因為兩個通道僅需設計一次,復制一次) 。
  2. **異構冗余模式 **使用不同設計或者不同實現的雙通道來解決隨機和系統(tǒng)故障,系統(tǒng)能夠在出現故障時持續(xù)提供服務。該模式變體不僅有相對較高的生產成本,而且有相對高的設計成本(因為兩個個通道需設計兩套方案) 。硬件、軟件方案都不同,但獨立且不同的方案解決隨機和系統(tǒng)錯誤。
  3. **三模塊冗余 (TMR ) 模式 **使用相同設計的 3 個通道來解決故障,應用的理論是,如果有單一點故障,則通道中的一個將與另外兩個解約,并且丟棄異常值。系統(tǒng)可以在出現故障時持續(xù)提供服務,提供故障在單一通道內適當的隔離。該模式有很高的生產成本,因為通道必須復制 3 次。如果所有的通道有相同的設計 (很常見) ,則設計成本相對低,如果通道的設計不同,則該模式變體的成本非常高,因為每個通道必須設計 3 次。這種在航空、軍工電子學領域很常見的。
  4. **完整性檢查模式 **使用兩個同構通道,一個是主執(zhí)行通道,另一個使用低精確計算的輕量級通道,如果低精確檢查通道檢測到主通道有故障,則系統(tǒng)進入故障安全狀態(tài)。該模式有低生產成本并且中等的設計成本,因為它需要額外的設計工作,但是有較低的精確冗余,當出現單一故障時不能繼續(xù)提供服務。
  5. **監(jiān)視器-執(zhí)行器模式 **使用兩個額外同構通道,第一個就如在完整性檢查模式那樣,是一個執(zhí)行通道,這個通道提供系統(tǒng)服務;第二個通道使用一個或多個獨立的傳感器監(jiān)視執(zhí)行通道的物理結果。如果執(zhí)行通道有故障,并且執(zhí)行不正確,則監(jiān)視器通道識別它,并能夠命令系統(tǒng)進入故障安全狀態(tài)。如果監(jiān)視器通道有故障,則執(zhí)行器通道仍然執(zhí)行正確行為。

多通道模式是個系統(tǒng)工程,不能僅依靠軟件就實現,它是嵌入式設備安全和可靠性風險的最佳解決方案,但是成本也相應增加。一般的民用消費電子不會采納。但是了解這些模式,也可能從軟件方面、需求角度進行一定的優(yōu)化。例如一般車載定位器檢查汽車是否有行駛,可以依靠ACC點火,加速度傳感器信息,GPS定位信息,雖然沒有很明顯的交代這是異構三通道,但設備本身支持這些信息的采集,軟件層面上就可以組合這三種信息,合并分析得出汽車的狀態(tài)。

5.7 小結

前面的模式在應用范圍上 ,通常稱為“設計定式”而不是“設計模式”,但合理的應用可提高設備在操作環(huán)境中的安全性和可靠性。

6、總結

天下武功,唯快不破。嵌入式設備因為其特殊性,物料更換、市場先機、訂單交期、需求變更,都與軟件開發(fā)存在關聯,一般情況下,凡是軟件能勉強解決的就不算增加成本,這種思路下軟件開發(fā)就處于試驗性開發(fā)、混亂下迭代的惡性循環(huán),最終導致產品功能看起來都正常,而源碼慘不忍睹。

實際上一個產品系列,開發(fā)很少奇技淫巧,更多的是修修補補、維護迭代,原創(chuàng)性開發(fā)不多;可閱讀性和擴展性才是重點。而設計模式,就是在盡可能在局部采用特定的思路,去兼容不同的需求,讓代碼更好閱讀,讓下一個接手的人可以很容易的去支持更多奇葩需求。

PS

因為時間問題,嵌入式軟件設計模式全文顯得虎頭蛇尾,下半章未使用源碼范例具體說明,但實現的思路有描述清楚,設計模式本身就是重思想而不是套路。

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

    關注

    0

    文章

    16

    瀏覽量

    12169
  • 元素
    +關注

    關注

    0

    文章

    47

    瀏覽量

    8765
  • 系統(tǒng)
    +關注

    關注

    1

    文章

    1047

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    嵌入式軟件的設計模式有哪些?

    文章目錄前言1.設計模式之適配器模式2.設計模式之單例模式3.設計模式之命令模式前言在
    發(fā)表于 10-28 07:25

    嵌入式環(huán)境軟件設計的特點是什么

    詳見微信公眾號,二進制人生。目錄:嵌入式環(huán)境軟件設計的特點設計目標設計思路多進程解耦嵌入式環(huán)境軟件
    發(fā)表于 11-09 06:31

    什么是嵌入式軟件開發(fā)

    嵌入式軟件開發(fā)又是指什么?   隨著嵌入式軟件系統(tǒng)結構越來越復雜,嵌入式軟件的開發(fā)已成
    發(fā)表于 04-20 08:43 ?9207次閱讀

    ARM嵌入式軟件開發(fā)

    ARM嵌入式軟件開發(fā)ARM嵌入式軟件開發(fā)ARM嵌入式軟件開發(fā)
    發(fā)表于 01-15 17:29 ?65次下載

    嵌入式軟件是什么意思_嵌入式軟件的分類有哪些

    本文首先闡述了嵌入式軟件的概念,其次介紹了嵌入式軟件的特征,最后介紹了嵌入式軟件的分類。
    發(fā)表于 08-31 15:54 ?1.7w次閱讀

    嵌入式軟件的開發(fā)流程_嵌入式軟件的調試

    本文首先介紹了嵌入式軟件的發(fā)展,其次闡述了嵌入式軟件的開發(fā)流程,最后介紹了嵌入式軟件的調試。
    發(fā)表于 08-31 16:02 ?6861次閱讀

    嵌入式軟件測試參考書籍

    嵌入式軟件測試的幾本參考書籍:1、《嵌入式軟件測試》;2、《嵌入式軟件測試 方法、案例與模板詳解
    發(fā)表于 10-20 12:06 ?51次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b>測試參考書籍

    嵌入式軟件

    僅簡單說一:1、具備簡單的硬件電路設計能力,包括數字電路和模擬電路;做嵌入式軟件對硬件一樣要有一定的基礎;2、MCU設計與應用,從單片機到ARM到DSP等要具備根據客戶要求設計產品的能力;外圍端口和設備的設計使用以及驅動程序的
    發(fā)表于 10-20 16:21 ?11次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b>

    嵌入式軟件測試研究意義,嵌入式軟件測試的研究

    摘要:嵌入式系統(tǒng)在人類生活中發(fā)揮著重要的作用,包括飛行控制器這樣的控制系統(tǒng),以及洗衣機這樣的家用電器。日前,嵌入式系統(tǒng)中軟件的比重越來越大,也越來越復雜,保證嵌入式
    發(fā)表于 10-20 17:20 ?17次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b>測試研究意義,<b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b>測試的研究

    嵌入式軟件設計之設計模式

    文章目錄前言1.設計模式之適配器模式2.設計模式之單例模式3.設計模式之命令模式前言在
    發(fā)表于 10-21 11:07 ?9次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b>設計之設計<b class='flag-5'>模式</b>

    嵌入式軟件開發(fā)環(huán)境

    嵌入式軟件開發(fā)環(huán)境1 簡介嵌入式軟件定義嵌入式系統(tǒng)構成2 環(huán)境搭建2.1 Qt2.2 CLion2.3 Source Insight + v
    發(fā)表于 10-21 12:21 ?7次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b>開發(fā)環(huán)境

    嵌入式軟件開發(fā)的特點、設計流程、嵌入式軟件的結構

    ? ? ? ?嵌入式軟件開發(fā)的特點、設計流程、嵌入式軟件的結構?一:嵌入式軟件開發(fā)的特點1.?
    發(fā)表于 11-03 15:21 ?38次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b>開發(fā)的特點、設計流程、<b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b>的結構

    談談汽車嵌入式軟件

    嵌入式軟件就是嵌入在硬件中的操作系統(tǒng)和開發(fā)工具軟件,它在產業(yè)中的關聯關系體現為:芯片設計制造→嵌入式系統(tǒng)
    發(fā)表于 10-27 10:28 ?1741次閱讀

    嵌入式軟件的設計模式(上)

    一般常見的是四人幫模式即GOF的23種設計模式,是偏向于可復用的面向對象的軟件,并不能很完美的契合嵌入式軟件,因為
    的頭像 發(fā)表于 01-20 11:32 ?2496次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b>的設計<b class='flag-5'>模式</b>(上)

    嵌入式軟件最常見的架構模式

    嵌入式軟件因為硬件資源限制,可能存在驅動與應用耦合的情況,但對于大型項目,資源充裕的情況,復雜的業(yè)務邏輯、后續(xù)擴展維護的需要,必須采用分層和模塊化思維,這種思想就是架構模式。一般分7
    的頭像 發(fā)表于 06-22 10:32 ?3798次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b>最常見的架構<b class='flag-5'>模式</b>