|
我是老溫,一名熱愛學(xué)習(xí)的嵌入式工程師
* O9 S$ @ o/ D( J0 P# u, I/ t' H$ K關(guān)注我,一起變得更加優(yōu)秀!有些工程師可能覺得單片機(jī)沒啥技術(shù)含量,但事實(shí)是單片機(jī)涵蓋的技術(shù)非常之多,從底層到應(yīng)用,應(yīng)該沒有一個(gè)人能熟練掌握其中所有的技術(shù)。! W: u5 v4 m) o
7 l& o% {7 a3 ?' h- `$ t這里就站在面試的角度來說說:?jiǎn)纹瑱C(jī)工程師面試常見問題。( d! p1 V1 `7 N- @2 a4 U5 O4 ]8 E) `, f7 ?
1 M* W! F: P( S( L8 f1 }
1、單片機(jī)上電之后不運(yùn)行,可能的原因有哪些?0 {5 X1 T$ d( Y5 p
可能的原因包括供電問題(如VCC電壓偏離正常范圍)、晶振問題(如晶振損壞或未起振)、RESET引腳電平邏輯錯(cuò)誤(如一直處于復(fù)位狀態(tài))、程序下載或擦除問題(如flash無法下載或損壞)以及控制程序問題(如程序存在bug)。
6 O) q1 p0 x) e* L% |+ i5 b' A
' w7 a8 v0 b1 f2、看門狗定時(shí)器的作用?
0 \& t, v4 x) G% h$ l' a0 N0 v+ [看門狗定時(shí)器(Watchdog Timer)在嵌入式系統(tǒng)中用于監(jiān)控和重置系統(tǒng),以防止因軟件故障導(dǎo)致的系統(tǒng)崩潰。它通過定時(shí)檢查系統(tǒng)是否正常運(yùn)行,并在超時(shí)后觸發(fā)系統(tǒng)重置,從而提高系統(tǒng)的可靠性和穩(wěn)定性。* S; d N8 H/ x4 C+ y' _
' `: B* E- z$ @; L) b8 w3、單片機(jī)中斷處理流程是怎樣的?% I9 i! j6 s! M) C! H( a! _7 B7 {
單片機(jī)中斷處理流程通常包括三個(gè)步驟:中斷響應(yīng)、中斷處理和中斷返回。6 S! o4 e& h9 @/ k! B
當(dāng)中斷發(fā)生時(shí),中斷系統(tǒng)通過硬件自動(dòng)生成長(zhǎng)調(diào)用指令(LACLL),將斷點(diǎn)地址壓入堆棧保護(hù),并將對(duì)應(yīng)的中斷入口地址裝入程序計(jì)數(shù)器PC,使程序轉(zhuǎn)向該中斷入口地址執(zhí)行中斷服務(wù)程序。中斷服務(wù)程序完成后,計(jì)算機(jī)通過中斷返回指令RE將斷點(diǎn)地址從堆棧中彈出,返回到程序計(jì)數(shù)器PC,并通知中斷系統(tǒng)已完成中斷處理。0 d6 a% s! H9 K8 F
; W! B1 J: @. k+ L4、解釋一下進(jìn)程、線程、協(xié)程的概念
5 a8 d) m2 }/ I: W X- x' s進(jìn)程:進(jìn)程是并發(fā)執(zhí)行的程序在執(zhí)行過程中分配和管理資源的基本單位,是一個(gè)動(dòng)態(tài)概念,競(jìng)爭(zhēng)計(jì)算機(jī)系統(tǒng)資源的基本單位。
. }$ G2 o/ A9 N/ |9 M4 R6 E; S) E5 I! t( ~
線程:線程是進(jìn)程的一個(gè)執(zhí)行單元,是進(jìn)程內(nèi)科調(diào)度實(shí)體。比進(jìn)程更小的獨(dú)立運(yùn)行的基本單位。線程也被稱為輕量級(jí)進(jìn)程。
! K( F. h/ X0 K f6 G* B' x. ~* K1 o/ x" @) ~7 b+ j
協(xié)程:是一種比線程更加輕量級(jí)的存在。一個(gè)線程也可以擁有多個(gè)協(xié)程。其執(zhí)行過程更類似于子例程,或者說不帶返回值的函數(shù)調(diào)用。+ J4 H8 p, F% U. `' K; g% W
wwszqs4mczi64095463034.jpg (126.72 KB, 下載次數(shù): 1)
下載附件
保存到相冊(cè)
wwszqs4mczi64095463034.jpg
昨天 23:44 上傳
: G; W; W& Z% k* I* U- s, h
5、什么是嵌入式系統(tǒng)?# B/ \) F' c8 v! X" J
嵌入式系統(tǒng)是以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟硬件可裁剪的專用計(jì)算機(jī)系統(tǒng)。它適用于應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗有嚴(yán)格要求的場(chǎng)合。嵌入式系統(tǒng)通常由處理器、存儲(chǔ)器、輸入輸出設(shè)備、軟件等組成,具有體積小、功耗低、可靠性高、功能專用等特點(diǎn)。
$ v$ z q. u% j& ^& H; l: }8 L% l7 ^. j5 F3 Y- `
6、C語言中堆和棧的區(qū)別是什么?
* w. P, p3 Y7 R9 U# j0 m; M# i堆和棧是C語言中用于存儲(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)方向、分配方式和分配效率等方面都存在差異。' ?9 O# r7 B4 \- ^, E2 Z
3 q9 H2 |) m8 s1 x7 e
7、請(qǐng)簡(jiǎn)單說下嵌入式系統(tǒng)中的RTOS調(diào)度策略
! O6 W0 t2 O' |6 v, X# Y; gRTOS(實(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í)行。
; [ F* V1 x9 p# e* z
x( q$ K& [3 K8、你如何保證單片機(jī)代碼的質(zhì)量和可靠性?! E) i& b- |0 F& J3 ]4 a
在單片機(jī)項(xiàng)目中,我通常會(huì)采取以下措施來保證代碼的質(zhì)量和可靠性:首先,我會(huì)對(duì)代碼進(jìn)行嚴(yán)格的測(cè)試和驗(yàn)證,包括單元測(cè)試、集成測(cè)試和系統(tǒng)測(cè)試等;其次,我會(huì)遵循良好的編程規(guī)范和代碼風(fēng)格,以提高代碼的可讀性和可維護(hù)性;最后,我會(huì)定期回顧和更新代碼,以消除潛在的錯(cuò)誤和漏洞。6 c6 Y' e1 U$ J1 T0 q
# \0 q/ @2 e) I5 p9、程序的局部變量、全局變量和動(dòng)態(tài)申請(qǐng)數(shù)據(jù)分別存在于哪里?6 h) s7 t7 ?" j3 x) Z! P
局部變量存在于棧區(qū)。全局變量存在于靜態(tài)區(qū)(數(shù)據(jù)段)。動(dòng)態(tài)申請(qǐng)的數(shù)據(jù)存在于堆區(qū)。
0 r: @$ W& j" Q" n+ z10、在C語言中,如何實(shí)現(xiàn)鏈表?請(qǐng)舉例說明。
) c) P- p6 h' D1 o& z$ p* X: F. s鏈表是一種動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu),由節(jié)點(diǎn)組成,每個(gè)節(jié)點(diǎn)包含數(shù)據(jù)部分和指向下一個(gè)節(jié)點(diǎn)的指針。
8 X' Q% {% O% N在C語言中,可以通過結(jié)構(gòu)體和指針來實(shí)現(xiàn)鏈表。例如,單鏈表的節(jié)點(diǎn)可以定義為:4 H8 D) ~: y0 X
struct Node { int data; struct Node* next;};9 V3 B, b8 ?7 r1 v. D- V5 S2 T
然后通過動(dòng)態(tài)分配內(nèi)存和設(shè)置指針來構(gòu)建鏈表。例如,創(chuàng)建一個(gè)新的節(jié)點(diǎn)并插入到鏈表的開頭:$ N A; d9 h& t
struct Node* head = NULL;struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));newNode->data = 10;newNode->next = head;head = newNode;6 N9 I& N( @+ T" N" T' x8 H& F
由于篇幅有限,今天就分享這些,其實(shí)還有很多很多,大家面試之前,盡量先刷一波面試題。! V: f9 h9 u0 Q0 ?( T! v3 V
* {. Z" l" F6 Z3 l) ]作者 | strongerHuang
) u" _+ V! Y x5 `9 p. n微信公眾號(hào) | strongerHuang
. A% }( N' n( h7 b-END-( g1 y. B: t% z2 ^' }/ V4 `1 z
往期推薦:點(diǎn)擊圖片即可跳轉(zhuǎn)閱讀
- G4 J. q. A" e( V: W $ z, i" T6 \. V2 \( R+ \
3 P N, u1 }9 u& I+ `1 L2 E6 z c& k
9 S+ q1 U! Q, Q& |8 L3 T( N ( r0 y- x, G* k/ S8 d
zixvifsym0564095463134.jpg (117.64 KB, 下載次數(shù): 3)
下載附件
保存到相冊(cè)
zixvifsym0564095463134.jpg
昨天 23:44 上傳
1 L3 P- V: d" a% @& y& e; ~# Q
5 k( y3 _# g$ n 硬件都做出來了,客戶說想改一下,結(jié)果,全部推倒重做!& y* I+ G7 _% \
/ c. r. J& O$ |) K# N% a
, P1 [5 [& u- d; |' B, I* N
/ [* K" B" D" B5 Y3 z, Z : Q" c$ ^" R f. j
tw04f5t5stg64095463234.jpg (183.69 KB, 下載次數(shù): 2)
下載附件
保存到相冊(cè)
tw04f5t5stg64095463234.jpg
昨天 23:44 上傳
' r" I6 C; f. V# a, |- d
. ?3 Z7 K* \) D0 ]6 Y0 i9 q; s2 j 嵌入式架構(gòu)設(shè)計(jì),淺談"驅(qū)動(dòng)分離式"設(shè)計(jì)思想。
( a3 K* I0 l, i$ m9 q5 x/ b 9 M+ k4 k: i) l4 O6 w
_! C! n/ G1 p3 ~* P! {) K: V9 }
6 x; h! L4 h2 t0 P& G1 W& y
3zkpel5jkn464095463334.jpg (111.84 KB, 下載次數(shù): 3)
下載附件
保存到相冊(cè)
3zkpel5jkn464095463334.jpg
昨天 23:44 上傳
! l) I! E* Z1 u
# F* F6 t' g; i) l' [ 分享一個(gè)跨平臺(tái)通用的 GUI 框架!$ _. c! ]' e5 F& R, G$ F
* o. {; ?7 o i) |0 F/ d' i; [
) Y' j$ e6 D3 S& _" U" i$ W) A, J
/ Q4 t6 X0 a2 D
我是老溫,一名熱愛學(xué)習(xí)的嵌入式工程師6 c: h& L4 q; z' K* Z5 c, _% P2 `
關(guān)注我,一起變得更加優(yōu)秀! |
|