电机控制和Linux驱动开发哪个方向更好呢?
先说结论:任何一个领域,就像世间的五行,阴阳结合,虚实结合,利弊结合。对于哪个更好,不能一概而论,最重要的是要搞清楚,你更适合哪个?
1、共鸣
当我看到这个问题,也确实是我早些年时所面临的抉择,不由得过来回答一下,一来表达自己的看法,二来想以此在互联网上发光发热,影响和帮助更多的人!
2、洞悉
要知道电机控制和Linux
驱动开发,哪个方向更好,首先要知道这两个方向主要是做什么的!
我相信,大多对这个问题有疑问的,都是站在了岔路口,两个方向都不清楚具体的情况。
img2.1 电机控制主要做什么?img
电机控制,就是控制电机了呗!那控制电机都需要用到什么技术呢?
- 电机种类与特性:电机有五花八门,什么直流电机、交流电机;又分为有刷、无刷、单相、三相等等各种类电机的基础知识得熟悉吧
- 控制算法:想要控制电机,最重要的是控制算法吧,
PID
你得会吧,三环控制理论你得搞明白吧,一大堆的理论推导你得熟悉吧,数学基础你得有吧! - 控制策略:各种各样的控制策略得了解吧,什么矢量变换控制、直接转矩控制、直接功率控制、无传感器控制、自适应控制等等,这里面又牵涉到需要物理知识,信号处理知识等等。
- 驱动代码实现:这一部分反倒在整个电机控制中不那么重要了,基本就是根据算法实现
C
控制代码,常用DSP
开发。
从事电机控制方向,一般来说对理论知识、控制算法等方面要求较高,学习不易,但是相对来说,门槛高的竞争反倒会小一些。
上面大致列举一下,如有纰漏,请包含.
2.2 Linux驱动开发主要做什么?img
Linux
驱动开发主要也分为两个方面: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