|
sphktuk5zxn64018087412.gif (60.41 KB, 下載次數(shù): 0)
下載附件
保存到相冊
sphktuk5zxn64018087412.gif
2024-9-19 09:46 上傳
* I: j( T! G3 H7 X% s2 f
點擊上方藍色字體,關(guān)注我們: ^" h" i4 n- t, l
首先,明確方向是至關(guān)重要的。如果你對嵌入式開發(fā)感興趣,建議專攻軟件,而不是硬件。這并不是說硬件不重要,而是因為大多數(shù)公司都有專門的硬件團隊負責(zé)相關(guān)工作,單片機的硬件部分并不會成為學(xué)習(xí)的重點。如果你試圖同時學(xué)硬件和軟件,往往兩邊都無法深入掌握。 u; X ~' J& Z% L2 Q' B
8 T4 q& K8 Z) X8 i+ G7 O! @當然,小型公司可能更偏好“全能型”工程師,他們希望一個人能完成從軟件到硬件的所有工作,以節(jié)約開發(fā)成本。但是,這類公司通常規(guī)模較小,往往是創(chuàng)業(yè)公司,只有一到兩個技術(shù)人員,這些技術(shù)人員既要設(shè)計和調(diào)試硬件,還要負責(zé)生產(chǎn)、維修,甚至做結(jié)構(gòu)設(shè)計和產(chǎn)品組裝。而一旦公司規(guī)模有所擴展,軟硬件的分工就會更加明確。
% A1 Z2 Z0 `, g. p7 }
0 r. F/ ~: j' g4 V1 ~因此,如果你決定專攻軟件,硬件知識的要求就相對較低了。你只需要掌握如何閱讀簡單的電路原理圖,懂得一些基礎(chǔ)的電路分析知識即可,像基爾霍夫定律、戴維南定律、節(jié)點法和網(wǎng)孔法這些基本的電路理論就足夠應(yīng)對硬件工作中的需求了。
- i) | S) Y1 _! t" t: L" l$ Q8 n* y: K
學(xué)習(xí)路徑建議學(xué)習(xí)基礎(chǔ)C語言和MCU開發(fā)板$ N/ s0 E- c, G$ S' H
如果你有一定的C語言基礎(chǔ),可以直接購買一個STM32或ESP32開發(fā)板,開始動手學(xué)習(xí)。
9 r/ }$ g) S* D n! {這里不建議你專門學(xué)習(xí)匯編語言,現(xiàn)代公司99%的場景中都不會用到它。 N5 j& m/ M' E. o- E0 A- J+ }
對于C語言的學(xué)習(xí),也不要過于刻意,一開始遇到問題再去學(xué)習(xí)解決,這樣學(xué)習(xí)效率會更高。避免Arduino5 J3 w( J; s! C. N! Q9 }8 ~ R
不要以Arduino作為你的主學(xué)習(xí)工具。; Z9 G" M( B9 B9 K0 j6 x* ^
雖然Arduino作為入門工具不錯,但它的靈活性和性能限制較大,正經(jīng)公司在實際項目中不會用它。" x/ @9 G- q- Y' V
Arduino更適合初學(xué)者或?qū)W生學(xué)習(xí)硬件編程的基礎(chǔ)概念,而不是實際的嵌入式項目開發(fā)。深入掌握MCU外設(shè)和寄存器操作
4 n6 d) R* g7 W* ?- t/ G學(xué)習(xí)開發(fā)板中常用的外設(shè)接口,比如GPIO、ADC、DAC、Timer(PWM)、UART、SPI/IIC等。
1 c; z4 r, c7 y6 V它們在絕大多數(shù)項目中都會用到,因此你需要了解這些外設(shè)的用途、工作原理,并通過實際的代碼調(diào)試加深理解。( j. D+ c8 p9 p* ]5 K8 l% N
此外,中斷的使用也是關(guān)鍵,特別是在ADC、Timer、UART的使用場景中。
/ o! @; _: M9 |# t( D不要僅僅依賴廠商提供的庫函數(shù),深入到寄存器層級,閱讀MCU廠商提供的《軟件設(shè)計手冊》和《數(shù)據(jù)手冊》,理解每個寄存器的作用和使用場景。 @* `, s4 g8 j5 m$ f
你應(yīng)該具備通過直接操作寄存器來配置和控制外設(shè)的能力。學(xué)習(xí)嵌入式操作系統(tǒng)( @! v7 o& q6 `
接下來,你需要學(xué)習(xí)一個嵌入式操作系統(tǒng),比如FreeRTOS或RT-Thread。& F# O" ^4 r" ^$ F% G( R
在學(xué)習(xí)這些操作系統(tǒng)時,重點掌握如何編寫任務(wù)和中斷銜接程序,不用花費太多精力在移植操作上,因為公司項目中通常會由專人或廠商負責(zé)移植工作。
. y& `; n' N( @+ Z, f多任務(wù)協(xié)調(diào)是嵌入式開發(fā)中的一個重要技能,熟練掌握多任務(wù)的協(xié)調(diào)工作,而不僅僅是編寫?yīng)毩⒌娜蝿?wù)。包裝你的學(xué)習(xí)成果. E. D4 f$ z6 ^) ]# X+ r
學(xué)習(xí)的過程中,你可以將自己的學(xué)習(xí)過程包裝成一個完整的項目。
0 j( B/ n& j7 J1 V7 @1 M你要設(shè)想產(chǎn)品的功能、目標用戶、應(yīng)用場景以及解決的問題,并把學(xué)習(xí)內(nèi)容融入到這個虛擬的項目中。+ T* z* I! S) K, p
不要過度堆砌外設(shè),避免顯得不真實。: M9 i+ B+ Q" P( {
[/ol]
1 g- J9 ^0 V$ z深度技能加分項
8 Y6 g; h2 f+ O7 p/ L經(jīng)過上述學(xué)習(xí)后,如果你擁有985/211名校背景或碩士學(xué)位,在進入職場時可能已經(jīng)具備一定的競爭力。
+ O+ v) D2 R6 y& h# ?+ Z9 r
9 k& q1 R G* D如果沒有名;?qū)W位的加持,那么以下這些技能可以為你加分:Cortex-M內(nèi)核:深入理解MCU內(nèi)核的各個組成部分及其工作機制,包括啟動流程、指令集、存儲映射、SysTick定時器、異常和中斷等。IoT操作系統(tǒng):進一步學(xué)習(xí)物聯(lián)網(wǎng)操作系統(tǒng)的高級功能,如設(shè)備驅(qū)動模型、文件系統(tǒng)、低功耗管理、以太網(wǎng)及TCP/IP協(xié)議棧等。這些系統(tǒng)類似于Linux的簡化版,有助于你未來學(xué)習(xí)更復(fù)雜的操作系統(tǒng)。Modbus與RS-485:學(xué)習(xí)Modbus協(xié)議的應(yīng)用場景、報文格式、通信時序及常用命令。這是工業(yè)控制中廣泛使用的協(xié)議。CAN通信:掌握CAN協(xié)議,這是汽車行業(yè)的必備技能,了解報文格式、通信時序及常用命令。藍牙或USB:學(xué)習(xí)藍牙或USB的協(xié)議棧結(jié)構(gòu)、通信時序及常用應(yīng)用層端點,這是物聯(lián)網(wǎng)開發(fā)中的常用技術(shù)。PID控制算法:理解并調(diào)試PID控制算法,特別是在工業(yè)控制中廣泛應(yīng)用。LCD及UI開發(fā):掌握一種UI庫的常用控件,特別是在有屏幕交互的嵌入式項目中有用。Bootloader開發(fā):理解Bootloader的原理、內(nèi)存分配及在線升級機制,這是嵌入式系統(tǒng)啟動的核心部分。TCP/IP協(xié)議棧:深入學(xué)習(xí)TCP/IP分層模型、鏈路層協(xié)議及Socket編程接口。理解通信協(xié)議中的分層模型有助于構(gòu)建健壯的網(wǎng)絡(luò)系統(tǒng)。C++在嵌入式開發(fā)中的應(yīng)用:學(xué)習(xí)C++的面向?qū)ο筇匦,掌握異常處理、RTTI(運行時類型識別)和STL(標準模板庫)等高級特性。隨著嵌入式系統(tǒng)日益復(fù)雜,C++將在嵌入式領(lǐng)域中發(fā)揮更大的作用。
' V! R6 ^, k. \. s2 ]( h[/ol]5 O. w3 y8 }5 E! S, e5 G
后續(xù)方向+ O0 x& ^" Y7 S L y
當你掌握上述技能后,技術(shù)方向可以延伸至以下領(lǐng)域:
! c- e, p& \$ G+ ]8 W: q+ z; ~硬件設(shè)計Linux內(nèi)核與驅(qū)動開發(fā)QT與C++應(yīng)用開發(fā)Android/iOS應(yīng)用開發(fā)架構(gòu)師方向) a# ^1 B! t% ~- f8 T: a$ L; x
' g' ]9 M! V V7 m
k1fbryfkgdc64018087512.jpg (71.14 KB, 下載次數(shù): 0)
下載附件
保存到相冊
k1fbryfkgdc64018087512.jpg
2024-9-19 09:46 上傳
" ?$ _ i, M& L8 h3 j
4cmlb242ys364018087612.gif (45.46 KB, 下載次數(shù): 0)
下載附件
保存到相冊
4cmlb242ys364018087612.gif
2024-9-19 09:46 上傳
1 E( R' x2 w$ X. C6 h' I0 A ] P
點擊閱讀原文,更精彩~ |
|