|
我是老溫,一名熱愛(ài)學(xué)習(xí)的嵌入式工程師1 I8 u7 S/ X0 }0 ~ a3 \/ i
關(guān)注我,一起變得更加優(yōu)秀!有些工程師可能覺(jué)得單片機(jī)沒(méi)啥技術(shù)含量,但事實(shí)是單片機(jī)涵蓋的技術(shù)非常之多,從底層到應(yīng)用,應(yīng)該沒(méi)有一個(gè)人能熟練掌握其中所有的技術(shù)。9 u2 o, u5 [8 J+ B4 g
) Q* U: _6 Z+ {: B9 K6 Z% v8 ^. q
這里就站在面試的角度來(lái)說(shuō)說(shuō):?jiǎn)纹瑱C(jī)工程師面試常見(jiàn)問(wèn)題。1 e/ `, Y) o5 G8 r7 I+ E1 c
/ b# O6 x# N; b% C
1、單片機(jī)上電之后不運(yùn)行,可能的原因有哪些?
( O* z( s s+ x6 Q- ]# ?/ |6 ?" ^可能的原因包括供電問(wèn)題(如VCC電壓偏離正常范圍)、晶振問(wèn)題(如晶振損壞或未起振)、RESET引腳電平邏輯錯(cuò)誤(如一直處于復(fù)位狀態(tài))、程序下載或擦除問(wèn)題(如flash無(wú)法下載或損壞)以及控制程序問(wèn)題(如程序存在bug)。
: i8 J( Z5 W9 }/ q5 h+ _& R8 X& F% w- b
2、看門(mén)狗定時(shí)器的作用?
8 }0 {2 r1 p* ?8 q' i看門(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)定性。
9 ^+ E* |& e2 s. f6 W; Y
, @- t2 n% }& S3、單片機(jī)中斷處理流程是怎樣的?
/ i# J* P" y' j* i6 r# x單片機(jī)中斷處理流程通常包括三個(gè)步驟:中斷響應(yīng)、中斷處理和中斷返回。- D" d/ z& e) C# F* z
當(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)已完成中斷處理。
- f- X( I. j( z1 ?3 k2 X& Y, Y% `' O# v# D8 E+ C
4、解釋一下進(jìn)程、線程、協(xié)程的概念; w- _+ A9 b9 W, Z' q$ G
進(jìn)程:進(jìn)程是并發(fā)執(zhí)行的程序在執(zhí)行過(guò)程中分配和管理資源的基本單位,是一個(gè)動(dòng)態(tài)概念,競(jìng)爭(zhēng)計(jì)算機(jī)系統(tǒng)資源的基本單位。7 b' p4 S/ b( y; a/ }, c3 L2 C
9 l* m# h2 b( H1 a4 ]! y5 q線程:線程是進(jìn)程的一個(gè)執(zhí)行單元,是進(jìn)程內(nèi)科調(diào)度實(shí)體。比進(jìn)程更小的獨(dú)立運(yùn)行的基本單位。線程也被稱(chēng)為輕量級(jí)進(jìn)程。
* V$ K) D" f8 Y6 B2 E+ F; J! l% A$ [5 Q! q
協(xié)程:是一種比線程更加輕量級(jí)的存在。一個(gè)線程也可以擁有多個(gè)協(xié)程。其執(zhí)行過(guò)程更類(lèi)似于子例程,或者說(shuō)不帶返回值的函數(shù)調(diào)用。( \, ~$ x+ D s! ~; O% @
wwszqs4mczi64095463034.jpg (126.72 KB, 下載次數(shù): 10)
下載附件
保存到相冊(cè)
wwszqs4mczi64095463034.jpg
2024-11-5 23:44 上傳
6 e9 k. {( T. }* Y A5、什么是嵌入式系統(tǒng)?0 A2 Z% w/ L( V( ]; J: r" H
嵌入式系統(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)。; i: S8 n! K7 X' j
" K. h* l! I. p" C" m0 z
6、C語(yǔ)言中堆和棧的區(qū)別是什么?5 B6 Y/ k8 d2 E9 C( A7 x; b3 A8 p
堆和棧是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)方向、分配方式和分配效率等方面都存在差異。3 h) z% R0 n: b6 [1 @/ R
/ w" s* c& J3 H' M1 ^ r( b
7、請(qǐng)簡(jiǎn)單說(shuō)下嵌入式系統(tǒng)中的RTOS調(diào)度策略: s& O3 O1 \8 Y& d z! b
RTOS(實(shí)時(shí)操作系統(tǒng))的調(diào)度策略包括基于優(yōu)先級(jí)的調(diào)度、輪詢(xún)調(diào)度、時(shí)間片輪轉(zhuǎn)調(diào)度等。這些策略直接影響系統(tǒng)的實(shí)時(shí)性和效率,確保任務(wù)能夠按照預(yù)定要求得到執(zhí)行。
' i) l, ^# {0 s' P
# g: k0 ~9 {; A. |8、你如何保證單片機(jī)代碼的質(zhì)量和可靠性?
' t: M3 C: h5 C) i/ c0 Q在單片機(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ò)誤和漏洞。
) {4 [1 j! L/ q2 K( ^7 g: r# C3 O4 b3 L( X" }
9、程序的局部變量、全局變量和動(dòng)態(tài)申請(qǐng)數(shù)據(jù)分別存在于哪里?: }: W1 ]: X* w0 Y# R1 ?% i$ w
局部變量存在于棧區(qū)。全局變量存在于靜態(tài)區(qū)(數(shù)據(jù)段)。動(dòng)態(tài)申請(qǐng)的數(shù)據(jù)存在于堆區(qū)。
/ ~# q! b8 y; Y# \1 ~/ G3 J10、在C語(yǔ)言中,如何實(shí)現(xiàn)鏈表?請(qǐng)舉例說(shuō)明。
) [4 R" Z$ H( H) |. _" ^3 z鏈表是一種動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu),由節(jié)點(diǎn)組成,每個(gè)節(jié)點(diǎn)包含數(shù)據(jù)部分和指向下一個(gè)節(jié)點(diǎn)的指針。
0 p4 |( k4 g% r" `3 b在C語(yǔ)言中,可以通過(guò)結(jié)構(gòu)體和指針來(lái)實(shí)現(xiàn)鏈表。例如,單鏈表的節(jié)點(diǎn)可以定義為:* q4 c' \% D- ]7 N
struct Node { int data; struct Node* next;};
Q- \/ B- P* M$ O2 [2 s然后通過(guò)動(dòng)態(tài)分配內(nèi)存和設(shè)置指針來(lái)構(gòu)建鏈表。例如,創(chuàng)建一個(gè)新的節(jié)點(diǎn)并插入到鏈表的開(kāi)頭:2 \5 g x+ p9 P: F
struct Node* head = NULL;struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));newNode->data = 10;newNode->next = head;head = newNode;
1 K4 Y' c6 k9 L9 b4 [, ?% h; L7 l由于篇幅有限,今天就分享這些,其實(shí)還有很多很多,大家面試之前,盡量先刷一波面試題。
7 S$ s0 B; I5 @( ?# e0 y6 N) g( ~: L- A9 g2 _, j2 z# W
作者 | strongerHuang
2 d' q: `- _! N) w! P; X+ i微信公眾號(hào) | strongerHuang; }& L2 h, W$ b$ R% W
-END-
$ Q) R8 o/ o2 Q0 ~. q往期推薦:點(diǎn)擊圖片即可跳轉(zhuǎn)閱讀
% F7 O- f l! i% p' F
/ X( |( x# s. E2 G, C M" p& P+ ?
' K+ w$ \" n" \+ x% F: p 8 K1 Z4 z/ F- c5 e8 c& S
A/ ~; Q% o! N) o0 v1 T- b
zixvifsym0564095463134.jpg (117.64 KB, 下載次數(shù): 8)
下載附件
保存到相冊(cè)
zixvifsym0564095463134.jpg
2024-11-5 23:44 上傳
L& s) B# C0 D& _& r - N6 U& {4 K$ ], t6 N+ ?( ~! _* ]% j4 |6 ?
硬件都做出來(lái)了,客戶(hù)說(shuō)想改一下,結(jié)果,全部推倒重做!
6 I2 r7 v! r) m$ d4 F: \
0 l( X; V) g5 n" J9 f
- q k0 c$ Z0 j6 b/ G: J 8 p r: {% Q& d5 Q2 x) G+ `
8 @2 o, i5 Q: L2 _2 S* t; M
tw04f5t5stg64095463234.jpg (183.69 KB, 下載次數(shù): 12)
下載附件
保存到相冊(cè)
tw04f5t5stg64095463234.jpg
2024-11-5 23:44 上傳
+ E2 Y3 }+ C( F& K
! e7 W5 ~8 f! Z e) ^ 嵌入式架構(gòu)設(shè)計(jì),淺談"驅(qū)動(dòng)分離式"設(shè)計(jì)思想。
8 M0 v4 D* v" \% B, [ % E) y C b. u' T: x
1 V* |9 n& c: j0 `" h
. V7 P/ m3 s$ P$ [- K* m
3zkpel5jkn464095463334.jpg (111.84 KB, 下載次數(shù): 11)
下載附件
保存到相冊(cè)
3zkpel5jkn464095463334.jpg
2024-11-5 23:44 上傳
- R9 T- h! r6 V# |6 {
2 n9 b( N% x+ K4 D. d8 d 分享一個(gè)跨平臺(tái)通用的 GUI 框架!' u: i8 [, _, |- [. P. r3 B
, K4 C: r* d% e+ S9 ^. a/ N- @
6 L% X: S( q. B0 f; A& Q
2 G3 r# s1 V" q0 u3 S; B* p+ g/ b 我是老溫,一名熱愛(ài)學(xué)習(xí)的嵌入式工程師
( h! Q, D' f1 o/ l$ o關(guān)注我,一起變得更加優(yōu)秀! |
|