深夜美女视频一区二区_91sao在线看片水片_亚洲日韩国语_精品中文字幕久久边人妻_高潮喷水香蕉视频色_白洁国产剧情Av手机在线_国产精品情侣呻吟_天空影院播放免费完整版视频_少妇高潮惨叫喷水在线观看_公交车大龟廷进我身体里

Hi,您好,歡迎來(lái)到西安盛圖軟件科技有限公司!

盛圖科技|嵌入式軟件的設(shè)計(jì)范疇

發(fā)布時(shí)間:2023-07-17 13:35:14

嵌入式軟件對(duì)于大多數(shù)程序員來(lái)說(shuō)不再是一個(gè)陌生的字眼;但是,面對(duì)復(fù)雜的軟件系統(tǒng)卻令一些初學(xué)者望而卻步,顯得高深莫測(cè)。

由于嵌人式軟件不只是涉及字處理、數(shù)據(jù)表格、媒體播放、網(wǎng)絡(luò)應(yīng)用、聊天互動(dòng)等常規(guī)的應(yīng)用程序,它還涉及各種應(yīng)用產(chǎn)品所必需的中間件,底層核心平臺(tái)的開(kāi)發(fā),底層操作系統(tǒng)的核心組件,各種外部設(shè)備驅(qū)動(dòng),整個(gè)應(yīng)用產(chǎn)品的系統(tǒng)配置和引導(dǎo)程序,以及產(chǎn)品管理、調(diào)試、升級(jí)等各個(gè)方面。因此,嵌人式軟件是一個(gè)龐大的體系。與此同時(shí),嵌人式軟件還要求具有高度的穩(wěn)定性和實(shí)時(shí)性。

粗略說(shuō)來(lái),嵌入式產(chǎn)品作為一個(gè)完整、獨(dú)立的設(shè)備產(chǎn)品,它所需開(kāi)發(fā)的主要軟件組件包括嵌入式操作系統(tǒng)和應(yīng)用程序這兩大核心部分。前一部分提供應(yīng)用軟件運(yùn)行的平臺(tái),后一部分解決各種各樣的實(shí)際應(yīng)用問(wèn)題,比如,播放一部電影或者聽(tīng)一首 MP3,閱讀新聞,瀏覽照片等等

操作系統(tǒng)平臺(tái)軟件以及應(yīng)用程序軟件都是可以看得見(jiàn)、摸得著的部分,也就是說(shuō),是為眾多軟件設(shè)計(jì)者所熟知的部分。除此之外,嵌人式軟件的設(shè)計(jì)還包括對(duì)產(chǎn)品系統(tǒng)的管理程序,常常稱(chēng)這一部分程序?yàn)楣碳绦?firmware)。它們駐留于產(chǎn)品的存儲(chǔ)設(shè)備中平常不為程序員和產(chǎn)品用戶(hù)所感知。作為一個(gè)完整產(chǎn)品的固件程序,它與人們常說(shuō)的某個(gè)外部設(shè)備如USB設(shè)備的固件程序,或者音視頻編解碼的固件程序不同。后者主要是內(nèi)嵌在某個(gè)設(shè)備之中,或者裝人到系統(tǒng)內(nèi)存里,目的是擴(kuò)充使用硬件的部分或全部功能。而作為一個(gè)產(chǎn)品的固件程序,其功能類(lèi)似于個(gè)人電腦里的BIOS它需要管理整個(gè)產(chǎn)品系統(tǒng)保存系統(tǒng)配置數(shù)據(jù)做系統(tǒng)必要的初始化工作,引導(dǎo)操作系統(tǒng),更新整個(gè)系統(tǒng)的軟件,以及當(dāng)系統(tǒng)出現(xiàn)嚴(yán)重錯(cuò)誤時(shí)進(jìn)行診斷與系統(tǒng)恢復(fù)。

綜上所述,嵌人式軟件大體分為3類(lèi):一是操作系統(tǒng)平臺(tái)軟件,二是應(yīng)用軟件,三是產(chǎn)品化軟件。產(chǎn)品化軟件是對(duì)前兩類(lèi)實(shí)體的包裝,是對(duì)整個(gè)產(chǎn)品的管理,包括引導(dǎo)、以及必要的調(diào)試、下載和升級(jí)等輔助功能。

為什么要設(shè)計(jì)嵌入式平臺(tái)軟件?對(duì)于應(yīng)用軟件開(kāi)發(fā)的工程師來(lái)說(shuō),平常很少關(guān)心平臺(tái)軟件的事情。為什么在嵌入式系統(tǒng)的設(shè)計(jì)中要提平臺(tái)軟件呢?由于嵌入式產(chǎn)品硬件的不通用性,即各個(gè)廠家所設(shè)計(jì)的 SOC硬件互不兼容因此就沒(méi)有一個(gè)完全通用的軟件產(chǎn)品是針對(duì)特定某一個(gè)硬件環(huán)境設(shè)計(jì)的。這方面與 PC機(jī)的體系架構(gòu)和軟件體系架構(gòu)完全不同。

PC機(jī)的硬件體系目前只有幾大陣容,最大的PC機(jī)提供商Intel,使用了大家熟知的x86體系,采用標(biāo)準(zhǔn)的 PCI總線,南橋北橋結(jié)構(gòu);另一硬件體系的提供商AMD,也使用了幾乎與x86類(lèi)似的CPU指令系統(tǒng)只是在內(nèi)存管理方式上去除了老式繁雜的段頁(yè)模式。PC 機(jī)硬件體系結(jié)構(gòu)的相對(duì)單一,給系統(tǒng)軟件的實(shí)現(xiàn)帶來(lái)了極大的便利和兼容的可能。軟件方面,微軟的Windows操作系統(tǒng)平臺(tái)占據(jù)了主流,各個(gè)PC硬件廠商所提供的軟件支持都會(huì)兼容 Windows平臺(tái)。除此之外,Linux也被廣泛用于PC硬件平臺(tái)。由于它們的底層硬件體系很相似,所以系統(tǒng)軟件都相似;對(duì)于不同的PC設(shè)備,只要增加支持不同硬件所需的驅(qū)動(dòng)軟件即可。與此同時(shí),在PC平臺(tái)下,廣大程序員也只需關(guān)心操作系統(tǒng)平臺(tái)之上的應(yīng)用程序的開(kāi)發(fā),例如數(shù)據(jù)庫(kù)播放軟件財(cái)務(wù)軟件聊天軟件、繪圖軟件和網(wǎng)頁(yè)制作軟件等。

但是在嵌人式軟件領(lǐng)域中,這個(gè)情形發(fā)生了顯著的變化。嵌人式硬件設(shè)備商往往為了解決某些專(zhuān)用問(wèn)題而設(shè)計(jì)出專(zhuān)用的 SoC 芯片。首先,這些 SoC 芯片采用了不同體系結(jié)構(gòu)的RISCCPU,比較著名的有 MIPSARM,PowerPC等,它們從指令集上就完全不同。其次每個(gè)SoC芯片定義了完全不同的地址分布和引腳功能,并且片內(nèi)集成的外圍設(shè)備也互不相同因此,為某一個(gè)硬件芯片組所編寫(xiě)的與硬件相關(guān)的軟件,在另一個(gè)芯片組系統(tǒng)里完全不能使用。換句話說(shuō),一個(gè)開(kāi)發(fā)團(tuán)隊(duì)的軟件工程師需要針對(duì)不同的硬件平臺(tái)開(kāi)發(fā)或移植不同的固件程序操作系統(tǒng)程序和應(yīng)用程序。

由此看來(lái),嵌人式軟件設(shè)計(jì)的范疇非常廣泛,這對(duì)于嵌人式軟件設(shè)計(jì)程序員來(lái)說(shuō)是一個(gè)非常嚴(yán)峻的挑戰(zhàn)。因?yàn)橐粋€(gè)團(tuán)隊(duì)要負(fù)責(zé)某電子產(chǎn)品嵌人式軟件設(shè)計(jì)的方方面面,最終要向市場(chǎng)或向用戶(hù)遞交一個(gè)完整的該電子產(chǎn)品所涉及的軟件系統(tǒng)。

f176c5a11fbfa4d511bcf45edae5ce5.png

應(yīng)用軟件的開(kāi)發(fā)與在 PC機(jī)系統(tǒng)里開(kāi)發(fā)的各種財(cái)務(wù)、郵件和通信程序非常類(lèi)似,也可以使用圖形化控件可視化工具、腳本工具和面向?qū)ο笳Z(yǔ)言等來(lái)設(shè)計(jì),但兩者還有很多差別首先,運(yùn)行的平臺(tái)不一樣,指令系統(tǒng)不一樣,因此,必須使用交叉編譯工具進(jìn)行編譯。在嵌入式設(shè)備里運(yùn)行的所有庫(kù)文件和各種依賴(lài)文件必須全部是針對(duì)這個(gè)平臺(tái)的二進(jìn)制格式文件。其次,嵌入式平臺(tái)提供的調(diào)用接口庫(kù)不如 PC機(jī)平臺(tái)中的完備,有些模塊可能沒(méi)有實(shí)現(xiàn)有些函數(shù)調(diào)用也可能沒(méi)有實(shí)現(xiàn);有些功能類(lèi)似的函數(shù)調(diào)用,名字可能不同,所使用的參數(shù)也可能不同。那么針對(duì)這些類(lèi)似的情況,就必須了解這些平臺(tái)所提供的具體功能;在設(shè)計(jì)應(yīng)用時(shí)對(duì)于平臺(tái)沒(méi)有實(shí)現(xiàn)的功能,就必須通過(guò)其他方法來(lái)實(shí)現(xiàn),或者自己在程序中將這些功能實(shí)現(xiàn)。在設(shè)計(jì)嵌人式應(yīng)用軟件時(shí)還要考慮跨平臺(tái)的需求,以增強(qiáng)所開(kāi)發(fā)軟件的通用性。由于各種操作系統(tǒng)的差異和各個(gè)硬件平臺(tái)的不同,必要時(shí)可能需要對(duì)一些系統(tǒng)調(diào)用進(jìn)行封裝,以實(shí)現(xiàn)跨平臺(tái)的外部接口的一致性。

例如,某公司開(kāi)發(fā)了一個(gè)瀏覽器,為了在不同操作系統(tǒng)平臺(tái)上推廣,或者在不同硬件平臺(tái)和不同圖形界面上推廣,則該瀏覽器在實(shí)現(xiàn)時(shí)須將那些調(diào)用操作系統(tǒng)、調(diào)用圖形輸出的接口抽象出來(lái),以提供單一的外部接口。比如定義創(chuàng)建線程的函數(shù) create_brws_thread(),createbrws_semaphore(),init_brws_graphics(), create_brws_device_context( ), create_brwsevent_queue(),brws_rect_fill(),brws_line_to(),brwsdraw_text(),等等除了使用統(tǒng)一的接口外,還可以使用編譯宏來(lái)包含不同平臺(tái)或不同硬件系統(tǒng)下的特定代碼。例如:

#ifdef WINCEPLAT

// code for WinCE platform

#elif defined(LINUX PLAT)

// code for Linux platform

# endif

最常見(jiàn)的產(chǎn)品固件程序就是 Boot-loader。Boot-loader 的基本功能是在設(shè)備電源上電的最初過(guò)程中,對(duì)硬件進(jìn)行必要的設(shè)置,以使整個(gè)硬件平臺(tái)工作于可知的預(yù)定狀態(tài),比如,在產(chǎn)品設(shè)備上電時(shí),中斷控制寄存器的中斷請(qǐng)求位或中斷允許位可能存在隨機(jī)的不確定值,各個(gè)外部設(shè)備的寄存器值也可能處于隨機(jī)狀態(tài),這些不確定值可能導(dǎo)致不期望的中斷產(chǎn)生,或者影響系統(tǒng)的正常運(yùn)行,這些情況都需要對(duì)硬件設(shè)備進(jìn)行初始設(shè)置。Boot-loader 隨后的工作是初始化內(nèi)存,開(kāi)辟系統(tǒng)正常工作的存儲(chǔ)空間,設(shè)置調(diào)用函數(shù)時(shí)所需用的棧,禁止中斷,必要時(shí),開(kāi)啟cache,使能MMU然后將操作系統(tǒng)從指定的ROM區(qū)域搬運(yùn)到系統(tǒng)內(nèi)存中并開(kāi)始運(yùn)行它。除了Boot-loader的這些基本功能之外固件程序還有許多擴(kuò)展功能。比如下載功能調(diào)試功能與用戶(hù)交互的功能和編程Flash的功能,等等。為此Boot-loader 里面需要實(shí)現(xiàn)一些額外的驅(qū)動(dòng),例如,用于下載的串口驅(qū)動(dòng),網(wǎng)絡(luò)驅(qū)動(dòng),USB驅(qū)動(dòng),用于調(diào)試的串口驅(qū)動(dòng),以及用于編程Flash的驅(qū)動(dòng)。為了支持這些設(shè)備,除了驅(qū)動(dòng)之外還需要一些協(xié)議的實(shí)現(xiàn)如UDP協(xié)議以及對(duì)文件系統(tǒng)的簡(jiǎn)要支持。

另外,Boot-loader還需要管理一些額外的有關(guān)系統(tǒng)配置的信息,比如操作系統(tǒng)存放的位置,電源電量的數(shù)值,或其他與設(shè)備相關(guān)的用戶(hù)設(shè)置等。這些數(shù)據(jù)可能存放在固件程序的某個(gè)數(shù)據(jù)區(qū)域,以便在系統(tǒng)引導(dǎo)時(shí)能夠正確加載到操作系統(tǒng),對(duì)設(shè)備進(jìn)行正確的配置。


上一篇:7-10年后計(jì)算機(jī)專(zhuān)業(yè)是否還會(huì)火熱?
下一篇:干貨分享|為什么有這么多編程語(yǔ)言?

歡迎登錄盛圖科技

歡迎注冊(cè)盛圖科技

已有賬號(hào),立即登錄