電機控制和Linux驅動開發哪個方向更好呢? 先說結論:任何一個領域,就像世間的五行,陰陽結合,虛實結合,利弊結合。對於哪個更好,不能一概而論,最重要的是要搞清楚,你更適合哪個? 1、共鳴 當我看到這個問題,也確實是我早些年時所面臨的抉擇,不由得過來回答一下,一來表達自己的看法,二來想以此在互聯網上 ...
電機控制和Linux驅動開發哪個方向更好呢?
先說結論:任何一個領域,就像世間的五行,陰陽結合,虛實結合,利弊結合。對於哪個更好,不能一概而論,最重要的是要搞清楚,你更適合哪個?
1、共鳴
當我看到這個問題,也確實是我早些年時所面臨的抉擇,不由得過來回答一下,一來表達自己的看法,二來想以此在互聯網上發光發熱,影響和幫助更多的人!
2、洞悉
要知道電機控制和Linux
驅動開發,哪個方向更好,首先要知道這兩個方向主要是做什麼的!
img我相信,大多對這個問題有疑問的,都是站在了岔路口,兩個方向都不清楚具體的情況。
2.1 電機控制主要做什麼?
img電機控制,就是控制電機了唄!那控制電機都需要用到什麼技術呢?
- 電機種類與特性:電機有五花八門,什麼直流電機、交流電機;又分為有刷、無刷、單相、三相等等各種類電機的基礎知識得熟悉吧
- 控制演算法:想要控制電機,最重要的是控制演算法吧,
PID
你得會吧,三環控制理論你得搞明白吧,一大堆的理論推導你得熟悉吧,數學基礎你得有吧! - 控制策略:各種各樣的控制策略得瞭解吧,什麼矢量變換控制、直接轉矩控制、直接功率控制、無感測器控制、自適應控制等等,這裡面又牽涉到需要物理知識,信號處理知識等等。
- 驅動代碼實現:這一部分反倒在整個電機控制中不那麼重要了,基本就是根據演算法實現
C
控制代碼,常用DSP
開發。
從事電機控制方向,一般來說對理論知識、控制演算法等方面要求較高,學習不易,但是相對來說,門檻高的競爭反倒會小一些。
上面大致列舉一下,如有紕漏,請包含.
2.2 Linux驅動開發主要做什麼?
imgLinux
驅動開發主要也分為兩個方面:Linux
匯流排驅動開發和Linux
外設驅動開發。
2.2.1 Linux匯流排驅動
這一部分主要是晶元原廠需要做的,晶元Tapeout
後,需要支持Linux
系統就需要去實現Kernel
匯流排驅動。這部分主要包括
- 各類子系統的開發:
IIC
子系統、SPI
子系統、MMC
子系統、CLK
子系統、GPIO
子系統、Pinctrl
子系統、中斷子系統等等。 BringUp
工作:這部分就是實現晶元從上電->uboot
->kernel
->rootfs
等整套啟動方案,供客戶使用。- 文檔撰寫:晶元要提供給客戶使用,需要些
SPEC
以及開髮指南等文章。
從事
Linux
匯流排驅動開發,由於技術的迭代,底層驅動的實現一般不會有較大變化,很大程度上是維護工作,支持工作。
2.2.2 Linux外設驅動
這一部分,就跟我們經常使用STM32
做的開發工作差不多了,更偏向於開發Sensor
開發,外設開發。
- 各類感測器開發:比如
MPU6050
、激光感測器、攝像頭感測器等等 - 各類外設的開發:比如
PWM
控制,WiFi
與BT
開發、顯示屏開發、音頻開發等等
從事
Linux
外設驅動開發,主要是面向產品的,公司每迭代一次產品,都需要去維護外設功能的穩定性,可能會比較捲。
3、總結
以上僅僅大概列舉了一下,肯定會有所紕漏。
就拿我來說
我是做過電機控制的,當時在世界500強企業,整體加班強度也不高,整體也不錯。
但是我覺得對於電機控制,大學專業畢竟不是學的這方面,並且牽涉到物理、信號處理、電機控制理論等知識,自己消化起來較為緩慢,於是才果斷轉到了
Linux
驅動開發方向,目前也挺不錯。
我只想說明一點:每個方向的好與不好,不是非黑即白的,重要的是看你自己適合什麼!
如果想同前輩們一起交流,也許這裡: https://t.zsxq.com/0eUcTOhdO 能夠幫到大家。
說了這麼多,心存困惑的你,拿張紙,關上門,認真思考一下吧!
最後,如果看的人多得話,後續再分享一些 從業以來,身邊的真實案例。
image-20230312120758065