电机控制和Linux驱动开发哪个方向更好呢?

先说结论:任何一个领域,就像世间的五行,阴阳结合,虚实结合,利弊结合。对于哪个更好,不能一概而论,最重要的是要搞清楚,你更适合哪个?

1、共鸣

当我看到这个问题,也确实是我早些年时所面临的抉择,不由得过来回答一下,一来表达自己的看法,二来想以此在互联网上发光发热,影响和帮助更多的人!

2、洞悉

要知道电机控制和Linux驱动开发,哪个方向更好,首先要知道这两个方向主要是做什么的!

我相信,大多对这个问题有疑问的,都是站在了岔路口,两个方向都不清楚具体的情况。

img

2.1 电机控制主要做什么?

img

电机控制,就是控制电机了呗!那控制电机都需要用到什么技术呢?

  1. 电机种类与特性:电机有五花八门,什么直流电机、交流电机;又分为有刷、无刷、单相、三相等等各种类电机的基础知识得熟悉吧
  2. 控制算法:想要控制电机,最重要的是控制算法吧,PID你得会吧,三环控制理论你得搞明白吧,一大堆的理论推导你得熟悉吧,数学基础你得有吧!
  3. 控制策略:各种各样的控制策略得了解吧,什么矢量变换控制、直接转矩控制、直接功率控制、无传感器控制、自适应控制等等,这里面又牵涉到需要物理知识,信号处理知识等等。
  4. 驱动代码实现:这一部分反倒在整个电机控制中不那么重要了,基本就是根据算法实现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控制,WiFiBT开发、显示屏开发、音频开发等等

从事Linux外设驱动开发,主要是面向产品的,公司每迭代一次产品,都需要去维护外设功能的稳定性,可能会比较卷。

3、总结

以上仅仅大概列举了一下,肯定会有所纰漏。

就拿我来说

我是做过电机控制的,当时在世界500强企业,整体加班强度也不高,整体也不错。

但是我觉得对于电机控制,大学专业毕竟不是学的这方面,并且牵涉到物理、信号处理、电机控制理论等知识,自己消化起来较为缓慢,于是才果断转到了Linux驱动开发方向,目前也挺不错。

我只想说明一点:每个方向的好与不好,不是非黑即白的,重要的是看你自己适合什么!

如果想同前辈们一起交流,也许这里: https://t.zsxq.com/0eUcTOhdO 能够帮到大家。

说了这么多,心存困惑的你,拿张纸,关上门,认真思考一下吧!

最后,如果看的人多得话,后续再分享一些 从业以来,身边的真实案例。

image-20230312120758065

电机控制和Linux驱动开发哪个方向更好呢?的更多相关文章

  1. 嵌入式Linux驱动开发日记

    嵌入式Linux驱动开发日记 主机硬件环境 开发机:虚拟机Ubuntu12.04 内存: 1G 硬盘:80GB 目标板硬件环境 CPU: SP5V210 (开发板:QT210) SDRAM: 512M ...

  2. Linux 驱动开发

    linux驱动开发总结(一) 基础性总结 1, linux驱动一般分为3大类: * 字符设备 * 块设备 * 网络设备 2, 开发环境构建: * 交叉工具链构建 * NFS和tftp服务器安装 3, ...

  3. 嵌入式linux驱动开发之点亮led(驱动编程思想之初体验)

    这节我们就开始开始进行实战啦!这里顺便说一下啊,出来做开发的基础很重要啊,基础不好,迟早是要恶补的.个人深刻觉得像这种嵌入式的开发对C语言和微机接口与原理是非常依赖的,必须要有深厚的基础才能hold的 ...

  4. Linux驱动开发 -- 打开dev_dbg()

    Linux驱动开发 -- 打开dev_dbg() -- :: 分类: LINUX linux设备驱动调试,我们在内核中看到内核使用dev_dbg来控制输出信息,这个函数的实质是调用printk(KER ...

  5. 驱动编程思想之初体验 --------------- 嵌入式linux驱动开发之点亮LED

    这节我们就开始开始进行实战啦!这里顺便说一下啊,出来做开发的基础很重要啊,基础不好,迟早是要恶补的.个人深刻觉得像这种嵌入式的开发对C语言和微机接口与原理是非常依赖的,必须要有深厚的基础才能hold的 ...

  6. Linux驱动开发必看详解神秘内核(完全转载)

    Linux驱动开发必看详解神秘内核 完全转载-链接:http://blog.chinaunix.net/uid-21356596-id-1827434.html   IT168 技术文档]在开始步入L ...

  7. linux驱动开发流程

    嵌入式linux驱动开发流程嵌入式系统中,操作系统是通过各种驱动程序来驾驭硬件设备的.设备驱动程序是操作系统内核和硬件设备之间的接口,它为应用程序屏蔽了硬件的细节,这样在应用程序看来,硬件设备只是一个 ...

  8. Linux驱动开发:USB驱动之usb_skel分析

    在学习了这么些天的驱动之后,个人觉得驱动就是个架构的问题,只要把架构弄清楚了 然后往里面添砖加瓦就可以了,所以似乎看起来不是太困难,但也许是是我经验不足吧,这只能算是个人浅见了 这两天在学习USB驱动 ...

  9. 【转】linux驱动开发的经典书籍

    原文网址:http://www.cnblogs.com/xmphoenix/archive/2012/03/27/2420044.html Linux驱动学习的最大困惑在于书籍的缺乏,市面上最常见的书 ...

  10. Linux驱动开发学习的一些必要步骤

      1. 学会写简单的makefile 2. 编一应用程序,可以用makefile跑起来 3. 学会写驱动的makefile 4. 写一简单char驱动,makefile编译通过,可以insmod, ...

随机推荐

  1. Reformer 模型 - 突破语言建模的极限

    Reformer 如何在不到 8GB 的内存上训练 50 万个词元 Kitaev.Kaiser 等人于 20202 年引入的 Reformer 模型 是迄今为止长序列建模领域内存效率最高的 trans ...

  2. ModuleNotFoundError: No module named '_pytest.resultlog'

    新环境运行Python时报错 ModuleNotFoundError: No module named '_pytest.resultlog' 上网查,看到解决方法  https://www.cnbl ...

  3. [Luogu 4912 帕秋莉的魔法] 题解报告

    算法:DP, 背包,动态规划 简化版题目: 给定 \(n\) 个物品,物品的价值为 \(v_1 - v_n\),物品的体积为 \(w_1 - w_n\).需要选择一些物品,使它们的体积和为 \(V\) ...

  4. react+echarts出现“There is a chart instance already initialized on the dom.”

    写了一个关于echatrs组件,报错dom重复 配置信息从props拿 let chart; useEffect(() => { if (chart) { updateChartView(); ...

  5. 云原生批量计算引擎 Volcano社区v1.8.0版本正式发布

    本文分享自华为云社区<云原生批量计算引擎 Volcano社区v1.8.0版本正式发布>,作者: 云容器大未来. 北京时间2023年8月17日,Volcano 社区 v1.8.0 版本正式发 ...

  6. 物联网SIM卡和SIM卡真的不是一回事

    办卡吗,兄弟? 物联网卡?相信大家第一反应都是一愣.大家听过银行卡.电话SIM卡.会员卡-等等,很多人可能都是第一次听说物联网卡.那它到底是个什么东东?它能干什么呢?今天就带大家一探究竟. 那在物联网 ...

  7. 2天完成17TB数据量迁移,华为云数据库是如何做的?

    摘要:童年时候,我们会对着墙上挂着的中国地图,来认识一处处山川河流和城市人文.如今,数字化时代下,传统的地图已经不能满足人们的需求,如何获取各种丰富的地理内容和实时动态信息成为现代人普遍的地理信息诉求 ...

  8. Java 四种引用类型(强引用、软引用、弱引用、虚引用)

    概述 Java 中的引用类似 C 语言中的指针,指向一个对象,比如: // person 就是指向 Person 实例"张三"的引用 Person person = new Per ...

  9. 【论文笔记#1】SPGAN-DA:用于领域自适应遥感图像语义分割的语义保留生成对抗网络

    作者: Yansheng Li 发表年代: 2023 使用的方法: 无监督领域自适应(UDA).GAN.ClassMix.边界增强 来源: IEEE TGRS 方向: 语义分割 期刊层次: CCF B ...

  10. 用户 IP,里面藏了多少秘密?

    大家都知道,要邮寄一封信给正确的收件人,需要提供准确而精细的地址,这个地址需要从国家和城市精确到邮政编码,街道和门牌号码.只有这样,邮局的工作人员才能知道将信送到那里. Internet 上也是如此, ...