|
我是老溫,一名熱愛(ài)學(xué)習(xí)的嵌入式工程師
- ^0 L) I. K( n1 J, w) V% O$ {/ Z$ Z關(guān)注我,一起變得更加優(yōu)秀!有些工程師可能覺(jué)得單片機(jī)沒(méi)啥技術(shù)含量,但事實(shí)是單片機(jī)涵蓋的技術(shù)非常之多,從底層到應(yīng)用,應(yīng)該沒(méi)有一個(gè)人能熟練掌握其中所有的技術(shù)。
" g, o1 c/ N6 S3 C
% P# H5 X2 s! a# X9 N* l! W這里就站在面試的角度來(lái)說(shuō)說(shuō):?jiǎn)纹瑱C(jī)工程師面試常見(jiàn)問(wèn)題。% o, z B: T& f
& G1 q" y& V. h& X% g) c5 U+ v
1、單片機(jī)上電之后不運(yùn)行,可能的原因有哪些?
5 j. c; k( F; X; N: k可能的原因包括供電問(wèn)題(如VCC電壓偏離正常范圍)、晶振問(wèn)題(如晶振損壞或未起振)、RESET引腳電平邏輯錯(cuò)誤(如一直處于復(fù)位狀態(tài))、程序下載或擦除問(wèn)題(如flash無(wú)法下載或損壞)以及控制程序問(wèn)題(如程序存在bug)。
% r9 s- r4 Q; c1 b
) A" K. J" `: g( j2、看門(mén)狗定時(shí)器的作用?
5 a9 _8 w! {, z" k! g) R; S看門(mén)狗定時(shí)器(Watchdog Timer)在嵌入式系統(tǒng)中用于監(jiān)控和重置系統(tǒng),以防止因軟件故障導(dǎo)致的系統(tǒng)崩潰。它通過(guò)定時(shí)檢查系統(tǒng)是否正常運(yùn)行,并在超時(shí)后觸發(fā)系統(tǒng)重置,從而提高系統(tǒng)的可靠性和穩(wěn)定性。
, p: m5 H7 J7 Y# w! Y# B- K
& I+ R5 Z! n6 r3、單片機(jī)中斷處理流程是怎樣的?5 l. f$ _) f( P3 ^( y
單片機(jī)中斷處理流程通常包括三個(gè)步驟:中斷響應(yīng)、中斷處理和中斷返回。
9 m, r B8 J$ }+ N0 A* z& b當(dāng)中斷發(fā)生時(shí),中斷系統(tǒng)通過(guò)硬件自動(dòng)生成長(zhǎng)調(diào)用指令(LACLL),將斷點(diǎn)地址壓入堆棧保護(hù),并將對(duì)應(yīng)的中斷入口地址裝入程序計(jì)數(shù)器PC,使程序轉(zhuǎn)向該中斷入口地址執(zhí)行中斷服務(wù)程序。中斷服務(wù)程序完成后,計(jì)算機(jī)通過(guò)中斷返回指令RE將斷點(diǎn)地址從堆棧中彈出,返回到程序計(jì)數(shù)器PC,并通知中斷系統(tǒng)已完成中斷處理。
1 P7 z i: k7 n0 R9 D# z! E, r3 c2 ^" S2 O ]" g S! H) E
4、解釋一下進(jìn)程、線程、協(xié)程的概念) R, {& ~& E; G: d e N- p
進(jìn)程:進(jìn)程是并發(fā)執(zhí)行的程序在執(zhí)行過(guò)程中分配和管理資源的基本單位,是一個(gè)動(dòng)態(tài)概念,競(jìng)爭(zhēng)計(jì)算機(jī)系統(tǒng)資源的基本單位。. u( T$ D* C" P. E7 d" T
$ P, l4 n* A0 p: ~, ~% O8 a" ^/ p線程:線程是進(jìn)程的一個(gè)執(zhí)行單元,是進(jìn)程內(nèi)科調(diào)度實(shí)體。比進(jìn)程更小的獨(dú)立運(yùn)行的基本單位。線程也被稱為輕量級(jí)進(jìn)程。. n8 v1 `0 K* p+ P
0 _4 P! Z4 Q$ k8 d1 ~% C+ y" U- S
協(xié)程:是一種比線程更加輕量級(jí)的存在。一個(gè)線程也可以擁有多個(gè)協(xié)程。其執(zhí)行過(guò)程更類(lèi)似于子例程,或者說(shuō)不帶返回值的函數(shù)調(diào)用。- e) t2 K3 e. g
wwszqs4mczi64095463034.jpg (126.72 KB, 下載次數(shù): 1)
下載附件
保存到相冊(cè)
wwszqs4mczi64095463034.jpg
昨天 23:44 上傳
+ y4 o: R! {; \9 d
5、什么是嵌入式系統(tǒng)?
4 J, E5 G2 S" M$ k嵌入式系統(tǒng)是以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟硬件可裁剪的專(zhuān)用計(jì)算機(jī)系統(tǒng)。它適用于應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗有嚴(yán)格要求的場(chǎng)合。嵌入式系統(tǒng)通常由處理器、存儲(chǔ)器、輸入輸出設(shè)備、軟件等組成,具有體積小、功耗低、可靠性高、功能專(zhuān)用等特點(diǎn)。
7 O$ m S9 r$ R1 c. r; {
. m7 g+ I3 v! s7 E6、C語(yǔ)言中堆和棧的區(qū)別是什么?4 ?0 `: q6 m% J- F3 K9 s- N& X$ T2 L
堆和棧是C語(yǔ)言中用于存儲(chǔ)數(shù)據(jù)的兩種不同區(qū)域。棧由系統(tǒng)自動(dòng)分配和管理,通常用于存儲(chǔ)局部變量和函數(shù)調(diào)用時(shí)的臨時(shí)數(shù)據(jù);而堆需要程序員自己申請(qǐng)和釋放,通常用于存儲(chǔ)動(dòng)態(tài)分配的數(shù)據(jù)。兩者在存儲(chǔ)內(nèi)容、管理方式、空間大小、能否產(chǎn)生碎片、生長(zhǎng)方向、分配方式和分配效率等方面都存在差異。' Y' U+ l S' F
1 ]# h# |0 Y3 W& N, n3 v7、請(qǐng)簡(jiǎn)單說(shuō)下嵌入式系統(tǒng)中的RTOS調(diào)度策略
8 Y! W' w5 V$ t% d) kRTOS(實(shí)時(shí)操作系統(tǒng))的調(diào)度策略包括基于優(yōu)先級(jí)的調(diào)度、輪詢調(diào)度、時(shí)間片輪轉(zhuǎn)調(diào)度等。這些策略直接影響系統(tǒng)的實(shí)時(shí)性和效率,確保任務(wù)能夠按照預(yù)定要求得到執(zhí)行。) k; t& K! j( @* R
/ C1 Y9 y, m8 ]8 K8、你如何保證單片機(jī)代碼的質(zhì)量和可靠性?, q3 j0 x4 G- A
在單片機(jī)項(xiàng)目中,我通常會(huì)采取以下措施來(lái)保證代碼的質(zhì)量和可靠性:首先,我會(huì)對(duì)代碼進(jìn)行嚴(yán)格的測(cè)試和驗(yàn)證,包括單元測(cè)試、集成測(cè)試和系統(tǒng)測(cè)試等;其次,我會(huì)遵循良好的編程規(guī)范和代碼風(fēng)格,以提高代碼的可讀性和可維護(hù)性;最后,我會(huì)定期回顧和更新代碼,以消除潛在的錯(cuò)誤和漏洞。. g0 B9 A1 r b: C: q
+ u+ V3 K9 z* D U; ]) P
9、程序的局部變量、全局變量和動(dòng)態(tài)申請(qǐng)數(shù)據(jù)分別存在于哪里?; y& [7 S( h& F' k9 R5 G
局部變量存在于棧區(qū)。全局變量存在于靜態(tài)區(qū)(數(shù)據(jù)段)。動(dòng)態(tài)申請(qǐng)的數(shù)據(jù)存在于堆區(qū)。
3 K0 b; \1 v7 A5 a2 w10、在C語(yǔ)言中,如何實(shí)現(xiàn)鏈表?請(qǐng)舉例說(shuō)明。# U& G. p+ n& k) I: _
鏈表是一種動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu),由節(jié)點(diǎn)組成,每個(gè)節(jié)點(diǎn)包含數(shù)據(jù)部分和指向下一個(gè)節(jié)點(diǎn)的指針。; b( n/ ]6 {" s- n, @* C
在C語(yǔ)言中,可以通過(guò)結(jié)構(gòu)體和指針來(lái)實(shí)現(xiàn)鏈表。例如,單鏈表的節(jié)點(diǎn)可以定義為:% |6 ]0 g; d& N5 L+ ^/ I
struct Node { int data; struct Node* next;};
- |! Y& Y' J. I5 `然后通過(guò)動(dòng)態(tài)分配內(nèi)存和設(shè)置指針來(lái)構(gòu)建鏈表。例如,創(chuàng)建一個(gè)新的節(jié)點(diǎn)并插入到鏈表的開(kāi)頭:# W; s3 @8 j U0 ^
struct Node* head = NULL;struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));newNode->data = 10;newNode->next = head;head = newNode;
/ A2 w- V% _: `3 [由于篇幅有限,今天就分享這些,其實(shí)還有很多很多,大家面試之前,盡量先刷一波面試題。
2 c7 k5 y" d. X t& C' i2 z3 `1 e* j3 T* X! u" q
作者 | strongerHuang
1 X" P2 E" g. B: w微信公眾號(hào) | strongerHuang# v) w! l( b5 \& t& [) Y
-END-$ N7 g( }# L0 A) U! n8 B; P
往期推薦:點(diǎn)擊圖片即可跳轉(zhuǎn)閱讀: b6 v g, d/ ]6 e
0 e+ x4 {; V |" K$ F8 P3 N& @; p ( e2 F! X; o+ |# `
# d! A" A% D" `& G) C% [+ h
% K+ @1 Q/ M2 _
zixvifsym0564095463134.jpg (117.64 KB, 下載次數(shù): 2)
下載附件
保存到相冊(cè)
zixvifsym0564095463134.jpg
昨天 23:44 上傳
+ v& Q' ~' W0 S4 w
2 q; G( I( V) ^% r0 @7 ?" ^5 B# m" L
硬件都做出來(lái)了,客戶說(shuō)想改一下,結(jié)果,全部推倒重做!
3 I0 ^* H F4 m2 G 6 i1 d7 D. R# D! v' L. t) ] u9 `
$ N3 R ?4 K. |$ W& r3 E z- A
; G" u+ {" R6 {
8 q9 ^, t% r, |. o9 R
tw04f5t5stg64095463234.jpg (183.69 KB, 下載次數(shù): 1)
下載附件
保存到相冊(cè)
tw04f5t5stg64095463234.jpg
昨天 23:44 上傳
N( }+ w# {! S B$ M1 R$ _* N7 e
1 T. N5 m% }' d1 d$ P+ P( @
嵌入式架構(gòu)設(shè)計(jì),淺談"驅(qū)動(dòng)分離式"設(shè)計(jì)思想。, M% h0 O, [ b! z: J5 K
, Z9 u: L4 y; l/ Y7 Y2 t
7 n7 T, A w: f1 o
8 B4 \. H+ t; r3 V9 o4 J/ T0 E
3zkpel5jkn464095463334.jpg (111.84 KB, 下載次數(shù): 2)
下載附件
保存到相冊(cè)
3zkpel5jkn464095463334.jpg
昨天 23:44 上傳
# Q4 P% n. {% l; e1 m" d
- `! \" H, d6 ~9 x: x1 n3 e8 |1 L) B 分享一個(gè)跨平臺(tái)通用的 GUI 框架!
8 x3 f0 n$ k) f9 L, T& C8 ^ 7 X4 i: n: ^! A9 W: {. q
7 d- ^$ d( w" `6 T/ t. s7 }7 e
5 a: [; b6 @4 c1 I
我是老溫,一名熱愛(ài)學(xué)習(xí)的嵌入式工程師1 f, S" ^. S* k T' g
關(guān)注我,一起變得更加優(yōu)秀! |
|