嵌入式技術(shù)知識體系問答(找工作筆試面試可能有用)
掃描二維碼
隨時隨地手機(jī)看文章
嵌入式物聯(lián)網(wǎng)技術(shù)微信交流群
由于微信拉群有限制超過100人就不允許掃碼進(jìn)群了,如果有朋友想進(jìn)來的話,請加我私人微信:morixinguan,備注加群,我會拉你進(jìn)群,認(rèn)識更多的小伙伴,實(shí)現(xiàn)資源共享。
1、什么是嵌入式系統(tǒng)?
嵌入式系統(tǒng)是以應(yīng)用為中心,以計算機(jī)技術(shù)為基礎(chǔ),軟、硬件可裁剪,適應(yīng)應(yīng)用系統(tǒng)對功能、可靠性、成本、體積及功耗嚴(yán)格要求的專用計算機(jī)系統(tǒng),除了大型機(jī)、服務(wù)器、工作站、PC?!坝绍浖⒂布餐瑯?gòu)成的專用系統(tǒng)”。特點(diǎn):“嵌入”、“計算機(jī)”、“專用”。
2、現(xiàn)在主要的嵌入式OS/操作系統(tǒng)有哪些?
uC/OS-II是一種基于優(yōu)先級的可搶先的硬實(shí)時內(nèi)核。應(yīng)用廣泛,專門為嵌入式設(shè)備設(shè)計,支持多種CPU,可運(yùn)行在8位到64位的各種系統(tǒng)上。2.51版本之后,就通過了美國FAA認(rèn)證,可以運(yùn)行在諸如航天器等對安全要求極為苛刻的系統(tǒng)之上(可用在生命攸關(guān)項目中)。商用要支付版權(quán)費(fèi),可以得到源代碼。
vxworks 是這幾種實(shí)時系統(tǒng)中性能最好的一個也是比較貴的,主要用于商業(yè)領(lǐng)域和科研領(lǐng)域。飛到火星去的探測器上安裝的就是這個系統(tǒng)。實(shí)時性好。
實(shí)時性比較好。對文件系統(tǒng),網(wǎng)絡(luò)協(xié)議棧的支持也比較不錯,帶的圖形顯示。nuclues 內(nèi)核很小。
ThreadX是優(yōu)秀的硬實(shí)時操作系統(tǒng),具有規(guī)模小、實(shí)時性強(qiáng)、可靠性高、易于使用等特點(diǎn)。并且支持大量的處理器和SoC,包括ARM、PowerPC、SH 4、MIPS、ADI DSP、TI DPS、Nios II等,廣泛應(yīng)用于消費(fèi)電子、汽車電子、工業(yè)自動化、網(wǎng)絡(luò)解決方案、軍事與航空航天等領(lǐng)域中2005年7月4日,美國宇航局成功實(shí)施“深度撞擊”號宇宙飛船對坦普爾1號彗星的準(zhǔn)確撞擊,此事件成為全球關(guān)注的焦點(diǎn)。其中,“深度撞擊”號宇宙飛船中關(guān)鍵的任務(wù)由著名的hreadX實(shí)時操作系統(tǒng)完成。2005年8月12日,美國宇航局發(fā)射的火星探測器MRO, 其關(guān)鍵任務(wù)仍由ThreadX實(shí)時操作系統(tǒng)擔(dān)當(dāng)。
FreeRTOS免費(fèi)的開源實(shí)時操作系統(tǒng) ,短小精悍 。
ECOS由RedHat推出的小型實(shí)時系統(tǒng)(Real Time Operating System),最低編譯核心可小至10K的級別, 采用C++編寫 。此系統(tǒng)和嵌入式Linux系統(tǒng)的差異是他將操作系統(tǒng)做成靜態(tài)連接的方式。
來自中國的開源實(shí)時操作系統(tǒng),是一款 高效、穩(wěn)定的實(shí)時操作系統(tǒng)內(nèi)核,支持的特性包括:全搶占的實(shí)時多任務(wù)內(nèi)核、小巧而與底層具體實(shí)現(xiàn)無關(guān)的文件系統(tǒng)、輕型的TCP/IP協(xié) 議棧、命令即C語言的shell命令行、輕型的多窗口。目前在國內(nèi)已經(jīng)有十多家企業(yè)在使用,從數(shù)據(jù)采集、數(shù)據(jù)監(jiān)控到機(jī)械控制,證明其是一款穩(wěn)定并可用于產(chǎn)品的嵌入式實(shí)時系統(tǒng)。
NUT/OS是一個RTOS,開源免費(fèi),支持標(biāo)準(zhǔn)C庫,支持網(wǎng)絡(luò)
采用微內(nèi)核架構(gòu)的類Unix實(shí)時操作系統(tǒng),遵從POSIX規(guī)范,主要用于嵌入式領(lǐng)域,是業(yè)界公認(rèn)的X86平臺上最好的嵌入式實(shí)時系統(tǒng)之一,其應(yīng)用極廣,包含車載音樂和媒體功能、核電站和美國陸軍無人駕駛Crusher坦克的控制系統(tǒng),RIM公司的BlackBerry PlayBook平板電腦等。
在嵌入系統(tǒng)上占有重要地位,主要用于PDA,實(shí)時性比較差。支持多線程,支持j2me,支持.net framwork mobile。和winxp等系統(tǒng)同宗,開發(fā)使用EVC、VS,容易被開發(fā)者接受。后續(xù)有Windows mobile6、Windows Phone 7等版本推出。
實(shí)時多處理器系統(tǒng)(Real Time Executive for Multiprocessor Systems),最早用于美國國防系統(tǒng),早期的名稱為實(shí)時導(dǎo)彈系統(tǒng)(Real Time Executive for Missile Systems),目前無論是航空航天、軍工,還是民用領(lǐng)域都有著極為廣泛的應(yīng)用。
一個年輕的RTOS系統(tǒng),采用微內(nèi)核架構(gòu),支持POSIX標(biāo)準(zhǔn),目標(biāo)標(biāo)準(zhǔn)化嵌入式系統(tǒng)。擴(kuò)展性強(qiáng),適用于8位到32位系統(tǒng)。http://nuttx.sourceforge.net/
3、嵌入式系統(tǒng)由什么組成?
嵌入式系統(tǒng)的組成:硬件層、中間層、系統(tǒng)軟件層和應(yīng)用軟件層
(1)硬件層:嵌入式微處理器、存儲器、通用設(shè)備接口和I/O 接口。
嵌入式核心模塊=微處理器+電源電路+時鐘電路+存儲器
Cache:位于主存和嵌入式微處理器內(nèi)核之間,存放的是最近一段時間微
處理器使用最多的程序代碼和數(shù)據(jù)。它的主要目標(biāo)是減小存儲器給 微處理器內(nèi)核造成的存儲器訪問瓶頸,使處理速度更快。
(2)中間層(也稱為硬件抽象層HAL 或者板級支持包BSP):它將系統(tǒng)上層軟件和底層硬件分離開來,使系統(tǒng)上層軟件開發(fā)人員無需關(guān)系底層硬件的具體情況,根據(jù)BSP 層提供的接口開發(fā)即可。
BSP 有兩個特點(diǎn):硬件相關(guān)性和操作系統(tǒng)相關(guān)性。設(shè)計一個完整的BSP 需要完成兩部分工作:
A、嵌入式系統(tǒng)的硬件初始化和BSP 功能。
片級初始化:純硬件的初始化過程,把嵌入式微處理器從上電的默認(rèn)狀態(tài)逐步設(shè)置成系統(tǒng)所要求的工作狀態(tài)。
板級初始化:包含軟硬件兩部分在內(nèi)的初始化過程,為隨后的系統(tǒng)初始化和應(yīng)用程序建立硬件和軟件的運(yùn)行環(huán)境。
系統(tǒng)級初始化:以軟件為主的初始化過程,進(jìn)行操作系統(tǒng)的初始化。
B、設(shè)計硬件相關(guān)的設(shè)備驅(qū)動。
(3)系統(tǒng)軟件層:
由RTOS、文件系統(tǒng)、GUI、網(wǎng)絡(luò)系統(tǒng)及通用組件模塊組成。
RTOS 是嵌入式應(yīng)用軟件的基礎(chǔ)和開發(fā)平臺。
(4)應(yīng)用軟件:由基于實(shí)時系統(tǒng)開發(fā)的應(yīng)用程序組成。
4、嵌入式微處理器體系結(jié)構(gòu)有什么?
(1)馮諾依曼結(jié)構(gòu):
程序和數(shù)據(jù)共用一個存儲空間,程序指令存儲地址和數(shù)據(jù)存儲地址指向同一個存
儲器的不同物理位置,采用單一的地址及數(shù)據(jù)總線,程序和數(shù)據(jù)的寬度 相同。例如:8086、ARM7、MIPS…
(2)哈佛結(jié)構(gòu):
程序和數(shù)據(jù)是兩個相互獨(dú)立的存儲器,每個存儲器獨(dú)立編址、獨(dú)立訪問,是一種將程序存儲和數(shù)據(jù)存儲分開的存儲器結(jié)構(gòu)。例如:AVR、ARM9、ARM10…
(3)CISC 與RISC 的特點(diǎn)比較。
計算機(jī)執(zhí)行程序所需要的時間P 可以用下面公式計算:
P=I×CPI×T
I:高級語言程序編譯后在機(jī)器上運(yùn)行的指令數(shù)。
CPI:為執(zhí)行每條指令所需要的平均周期數(shù)。
T:每個機(jī)器周期的時間。
(4)流水線的思想:
在CPU 中把一條指令的串行執(zhí)行過程變?yōu)槿舾芍噶畹淖舆^程在CPU 中重疊執(zhí)行。
(5)流水線的指標(biāo):
吞吐率:單位時間里流水線處理機(jī)流出的結(jié)果數(shù)。如果流水線的子過程所用時間不一樣長,則吞吐率應(yīng)為最長子過程的倒數(shù)。
建立時間:流水線開始工作到達(dá)最大吞吐率的時間。若m 個子過程所用時間一樣,均為t,則建立時間T=mt。
(6)信息存儲的字節(jié)順序
A、存儲器單位:字節(jié)(8 位)
B、字長決定了微處理器的尋址能力,即虛擬地址空間的大小。
C、32 位微處理器的虛擬地址空間位232,即4GB。
D、小端字節(jié)順序:低字節(jié)在內(nèi)存低地址處,高字節(jié)在內(nèi)存高地址處。
E、大端字節(jié)順序:高字節(jié)在內(nèi)存低地址處,低字節(jié)在內(nèi)存高地址處。
F、網(wǎng)絡(luò)設(shè)備的存儲順序問題取決于OSI 模型底層中的數(shù)據(jù)鏈路層。
5、到底是學(xué)習(xí)哪種內(nèi)核:ARM7、CORTEX-M3、CORTEX-M4、ARM9、CORTEX-A8還是CORTEX-A9?
首先說明基于ARM7內(nèi)核的芯片現(xiàn)在已經(jīng)很少了,大部分公司都陸續(xù)停產(chǎn)了。而且價格沒有優(yōu)勢,主頻也不高,只能跑UCOS或者Uclinux系統(tǒng)。CORTEX-M3內(nèi)核的芯片是目前用量比較大的32位ARM芯片,主頻約70MHz到120MHz之間,比如STM32F103、LPC1768等型號。CORTEX-M4內(nèi)核的芯片支持DSP指令功能,主頻100MHz到200MHz之間,比如STM32F4等型號。這兩種內(nèi)核的芯片可以基于庫函數(shù)進(jìn)行編寫程序,或者基于寄存器直接編寫程序,可以跑輕量級的操作系統(tǒng),比如UCOS等。
ARM9內(nèi)核的芯片,是目前市場上運(yùn)行嵌入式操作系統(tǒng)(linux、wince)主流的32位ARM芯片,主頻約180MHz到500MHz之間。
CORTEX-A8和CORTEX-A9內(nèi)核的芯片,可以運(yùn)行多種嵌入式操作系統(tǒng)(linux、wince、android)。Cortex-A8處理器的速率可以在600MHz到超過1GHz的范圍內(nèi)調(diào)節(jié),能夠滿足那些需要工作在300mW以下的功耗優(yōu)化的移動設(shè)備的要求。Cortex-A9處理器的速率可以到1GHz以上,支持多核。
如果是初學(xué)者,學(xué)習(xí)庫函數(shù)編程的或者寄存器編程的,建議學(xué)習(xí)CORTEX-M3內(nèi)核的芯片;如果是學(xué)習(xí)linux的嵌入式軟件編程,建議學(xué)習(xí)ARM9內(nèi)核的芯片;如果是學(xué)習(xí)Android的嵌入式軟件編程,建議學(xué)習(xí)CORTEX-A8和CORTEX-A9內(nèi)核的芯片。
6、ARM芯片如何選擇型號?
ST公司:基于CORTEX-M3內(nèi)核的芯片STM32F103、基于CORTEX-M4內(nèi)核的芯片STM32F4,是目前最流行的CORTEX-M3內(nèi)核的芯片。
NXP公司:基于CORTEX-M3內(nèi)核的芯片LPC1768、LPC1788、基于CORTEX-M0+內(nèi)核的芯片LPC800系列,ARM9內(nèi)核的芯片LPC3250,在設(shè)計中的認(rèn)可率都比較高。
ATMEL公司:一直采用ARM核心技術(shù),最高也只采用到ARM9技術(shù),旨在打造穩(wěn)定的工業(yè)級芯片,不追求性能上的卓越,但求性能更加的可靠的工業(yè)級芯片。能克服各種惡劣的環(huán)境,及各種干擾,功耗低,讓工業(yè)控制能更加穩(wěn)定有條不紊的進(jìn)行。現(xiàn)在的ARM9內(nèi)核芯片有AT91SAM9260、AT91SAM9263、AT91SAM9G45等
德州儀器TI:一直致力于研究處理速度更快,功能更加強(qiáng)大的芯片。更是采用ARM最新技術(shù)Cortex A8來提升芯片的性能。使得一些芯片的處理速度與X86架構(gòu)的MCU不分伯仲。但是最近OMAP系列芯片據(jù)說被裁了,可能會退出市場。這讓選擇TI芯片的人心里有點(diǎn)害怕!而且,TI的芯片更新速度太快,讓選擇他們芯片的廠家也無所適從。現(xiàn)在的 CORTEX-A8內(nèi)核芯片有AM3358、AM3359等。
SAMSUNG半導(dǎo)體:SAMSUNG生產(chǎn)ARM內(nèi)核芯片的超高性價比是無人能敵的。正因為這點(diǎn), 其芯片也得到很多廠家的親睞。例如S3C2440性價比極高,一般消費(fèi)電子產(chǎn)品中應(yīng)用較多,不適于在嚴(yán)苛的工控環(huán)境中使用?,F(xiàn)在的ARM9內(nèi)核芯片有S3C2440、CORTEX-A8內(nèi)核芯片S5PV210等。
最近老是看到不少個人和廠家宣傳:使用三星的2440或者三星公司的其他型號設(shè)計為工控產(chǎn)品,而且我聽到不少廠家說芯片的工作溫度都做過老化試驗,低溫可以到零下40度。這個低溫的實(shí)驗條件只是工業(yè)級的一個強(qiáng)制性溫度試驗條件,并不是在這個低溫下正常工作就是工控級芯片。工控級的應(yīng)用真正難以實(shí)現(xiàn)的是在各種惡劣電磁環(huán)境下的穩(wěn)定工作,可惜大部分芯片都不能實(shí)現(xiàn)這種要求。穩(wěn)定性是工控級應(yīng)用的第一要素,這也就是為何ATMEL的芯片很多型號一賣就是十幾年,他們的芯片做的就是穩(wěn)定。比如AT91RM9200、AT91SAM9260、AT91SAM9G45等.
7、學(xué)習(xí)ARM主要學(xué)習(xí)啥?
在硬件上主要學(xué)習(xí)ARM內(nèi)核芯片的電路設(shè)計及其附加外圍電路(USB、SDIO、CAN、485、SPI、PCI等)設(shè)計以及高速數(shù)字信號處理、信號完整性設(shè)計、電磁兼容設(shè)計,說白了就是學(xué)習(xí)如何設(shè)計出高穩(wěn)定的ARM系統(tǒng)電路。ARM內(nèi)核(CORTEX-M3、CORTEX-M4、ARM9、CORTEX-A8、CORTEX-A9等)的芯片,主頻越來越高,實(shí)現(xiàn)穩(wěn)定性的設(shè)計難度越來越大。
軟件上主要學(xué)學(xué)習(xí)基于操作系統(tǒng)的應(yīng)用層程序的編程和基于操作系統(tǒng)的驅(qū)動程序編程或者基于庫函數(shù)的裸機(jī)程序編程等等。CORTEX-M3、CORTEX-M4內(nèi)核的芯片,可以運(yùn)行裸機(jī)程序或者輕量級的UCOS系統(tǒng),軟件上主要學(xué)習(xí)裸機(jī)程序的編程;ARM9、CORTEX-A8、CORTEX-A9內(nèi)核的芯片,可以運(yùn)行l(wèi)inux操作系統(tǒng)、android操作系統(tǒng)、wince操作系統(tǒng)等,學(xué)習(xí)基于操作系統(tǒng)的應(yīng)用程序編程。
8、是先學(xué)習(xí)基于操作系統(tǒng)的應(yīng)用層程序的編程,還是先學(xué)習(xí)基于操作系統(tǒng)的驅(qū)動程序的編程?
基于操作系統(tǒng)的應(yīng)用層程序的編程是嵌入式軟件設(shè)計的基礎(chǔ),它基本上可以不需要熟悉底層硬件就可以完成程序設(shè)計,所以學(xué)習(xí)嵌入式linux應(yīng)用程序編程買開發(fā)板時,只要可以運(yùn)行l(wèi)inux系統(tǒng)的開發(fā)板都可以。?;诓僮飨到y(tǒng)的驅(qū)動程序的編程設(shè)計,要求設(shè)計人員不僅要熟悉操作系統(tǒng),還要熟悉底層硬件,最好有過基于寄存器的程序編寫經(jīng)歷,對設(shè)計人員的要求比較高。
現(xiàn)在的驅(qū)動程序的編程設(shè)計,芯片原廠大部分已經(jīng)提供了。在芯片原廠做驅(qū)動程序設(shè)計的人員,水平會高得多,不過中國的芯片廠很少,大家暫時沒多少機(jī)會。從產(chǎn)品的設(shè)計角度看,驅(qū)動程序的設(shè)計難度已經(jīng)降低。
所以建議:先學(xué)習(xí)基于操作系統(tǒng)的應(yīng)用層程序的編程,有了一定的編程經(jīng)驗后再去學(xué)習(xí)基于操作系統(tǒng)的驅(qū)動程序的編程設(shè)計。
9、ARM處理器7種運(yùn)行模式是什么?
A、用戶模式(User):正常程序執(zhí)行模式,用于應(yīng)用程序。
D、快速中斷模式(FIQ):快速中斷處理,用于高速數(shù)據(jù)傳輸和通道處理。
C、外部中斷模式(IRQ):用于通用的中斷處理。
D、管理模式(SVE):供操作系統(tǒng)使用的一種保護(hù)模式。
E、數(shù)據(jù)訪問中止模式(Abort):用于虛擬存儲及存儲保護(hù)。
F、未定義指令中止模式(Undefined):當(dāng)未定義指令執(zhí)行時進(jìn)入該模式。
G、系統(tǒng)模式(System):用于運(yùn)行特權(quán)級的操作系統(tǒng)任務(wù)。
除了用戶模式之外的其他6種處理器模式稱為特權(quán)模式,在這些模式下,程序可以訪問所有的系統(tǒng)資源,也可以任意地進(jìn)行處理器模式切換,其中,除了系統(tǒng)模式外,其他的5種特權(quán)模式又稱為異常模式。
處理器模式可以通過軟件控制進(jìn)行切換,也可以通過外部中斷或異常處理過程進(jìn)行切換。大多數(shù)的用戶程序運(yùn)行在用戶模式下,這時,應(yīng)用程序不能訪問一些受操作系統(tǒng)保護(hù)的系統(tǒng)資源,應(yīng)用程序也不能直接進(jìn)行處理器模式切換。當(dāng)需要進(jìn)行處理器模式切換時,應(yīng)用程序可以產(chǎn)生異常處理,在異常處理中進(jìn)行處理器模式的切換。這種體系結(jié)構(gòu)可以使操作系統(tǒng)控制整個系統(tǒng)的資源。
當(dāng)應(yīng)用程序發(fā)生異常中斷時,處理器進(jìn)入相應(yīng)的異常模式。在每一種異常模式種都有一組寄存器,供相應(yīng)的異常處理程序使用,這樣就可以保證進(jìn)入異常模式時,用戶模式下的寄存器不被破壞。
系統(tǒng)模式并不是通過異常過程進(jìn)入的,它和用戶模式具有完全一樣的寄存器,但是系統(tǒng)模式屬于特權(quán)模式,可以訪問所有的系統(tǒng)資源,也可以直接進(jìn)行處理器模式切換,它主要供操作系統(tǒng)任務(wù)使用。
嵌入式、Android學(xué)習(xí)請看韋東山老師視頻
商務(wù)合作
最近悄悄的在合作機(jī)會板塊-商務(wù)合作更新了企業(yè)信息,這是我和同學(xué)合作創(chuàng)立的一家公司,專注于物聯(lián)網(wǎng)嵌入式研發(fā),名字叫深圳市云之手科技,詳情可點(diǎn)擊合作機(jī)會的商務(wù)合作了解,也希望未來我們能夠和圈友一起合作共贏。
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點(diǎn),不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!