• 请不要在回答技术问题时复制粘贴 AI 生成的内容
TaiChou
V2EX  ›  程序员

想转驱动开发难不?

  •  
  •   TaiChou · Aug 23, 2022 · 5043 views
    This topic created in 1387 days ago, the information mentioned may be changed or developed.

    搞了三年 iOS,感觉像是面向 Apple 编程,倒不是说技术不技术的,只是感觉 iOS 做到头只剩下“卷”了。各种 Blog 都是大谈 Runtime 、Runloop, 虽然对解决问题有帮助,有那么一点点能用的东西,但是也不多。没那么多这种需求,只剩下“卷”

    Linux 驱动开发以前是没接触过的,之所以想转一是对 Linux 内核比较感兴趣,二是觉得驱动行业工作时间正常一点。但是我对驱动开发了解的比较少,希望能得到大佬的指点。

    以前还是很好学的,计算机专业出身,计算机导论,操作系统有那么一点基础。自己跟着 MIT XV64 的课程学了一点,一路实现到了内存分配(粗糙的按页分配),后面进程调度,系统调用啥的就没继续实现下去了。不知道往哪继续学了,也不知道驱动开发要干些什么,侧重哪些方面的能力?

    转行不容易,虽然 iOS 凉了我还有前端的基础,但是属实觉得前端、客户端这种是真的青春饭。

    今年二十四,我还年轻,我想转行!!!

    shawndev
        1
    shawndev  
       Aug 23, 2022   ❤️ 4
    你这不是 49 年加入国军,是 49 年自立军阀
    junmoxiao
        2
    junmoxiao  
       Aug 23, 2022
    安全公司一直对驱动开发有需求,其他行业不知道
    TaiChou
        3
    TaiChou  
    OP
       Aug 23, 2022
    @shawndev 为啥,linux 驱动式比较少,但是嵌入式开发应该前景还是可以的吧
    simonCN
        4
    simonCN  
       Aug 23, 2022
    "今年二十四,我还年轻,我想转行!!!"
    不能同意更多,尽快转行
    TaiChou
        5
    TaiChou  
    OP
       Aug 23, 2022
    @junmoxiao 不是还有嵌入式行业吗
    singerll
        6
    singerll  
       Aug 23, 2022
    驱动开发仅了解计算机知识不够的,还需要了解硬件知识。
    针脚定义,时序啥的,不仅仅是写代码的事。
    TaiChou
        7
    TaiChou  
    OP
       Aug 23, 2022
    @simonCN 不过得考虑好
    a33291
        8
    a33291  
       Aug 23, 2022
    年轻真好 😁
    salmon5
        9
    salmon5  
       Aug 23, 2022
    搞驱动开发都有的 50 岁了吧,你说搞搞 go 云原生还靠谱
    TaiChou
        10
    TaiChou  
    OP
       Aug 23, 2022
    @singerll 针脚那每个硬件都不一样,都是有文档得吧。基础的数电和模电倒是也是必须课程
    NoNewWorld
        11
    NoNewWorld  
       Aug 23, 2022
    个人不建议,不如云原生这块(非技术,只是考虑短期内薪资、发展等)。当然如果认为自己非常牛逼的话,那个行业都可以,比如去试试芯片相关的。
    singerll
        12
    singerll  
       Aug 23, 2022
    @TaiChou 具我了解有文档还不够,最起码得会用逻辑分析仪分析时序啥的,不是简单的调接口就完事了。
    zjsxwc
        13
    zjsxwc  
       Aug 23, 2022
    linux 驱动很简单吧,比如这个 gpio 例子:
    https://github.com/Johannes4Linux/Linux_Driver_Tutorial/blob/main/04_gpio_driver/gpio_driver.c#L55

    然后对用户来说就是单纯的文件读写,
    个人感觉唯一的要求是要对外设硬件了解深入。
    shijingshijing
        14
    shijingshijing  
       Aug 23, 2022
    云原生或基础架构才是正确路径,驱动和内核是大坑,这个行业只需要两种人:一种是大牛,一种是小白。中间的基本上都转方向了。
    TaiChou
        15
    TaiChou  
    OP
       Aug 23, 2022
    @singerll 时序不应该是设计电路就考虑好的么,驱动是软件工程师唉,还得搞破解啊
    ren2881971
        16
    ren2881971  
       Aug 23, 2022
    为啥这么想不开。
    steins2628
        17
    steins2628  
       Aug 23, 2022   ❤️ 1
    @TaiChou 时序关电路什么事,时序是你和芯片通信用的,IIC, UART, SPI... 在这些协议的基础上你去看时序,你搞驱动不可能不看时序,还有,这不叫破解,你拿到芯片不给你时序才是有问题,而且搞嵌入式开发基本告别 cv 了
    TaiChou
        18
    TaiChou  
    OP
       Aug 23, 2022
    @shijingshijing @NoNewWorld 云原生不是一个框,啥都往里装么,概念越模糊,感觉就越难摸到门路
    TaiChou
        19
    TaiChou  
    OP
       Aug 23, 2022
    @steins2628 谢谢指点,我刚理解的有问题。大概就是要按芯片手册给的时序去实现程序是吧?时序分析仪大概就是用来 debug 看看自己输出的时序有没有问题?
    singerll
        20
    singerll  
       Aug 23, 2022
    @TaiChou https://zhuanlan.zhihu.com/p/359121301
    你可以看下简单的 spi 通讯驱动,从头到尾都跟时序密切相关。
    shijingshijing
        21
    shijingshijing  
       Aug 23, 2022
    @TaiChou
    驱动几乎可以认为是用硬件的思维去软件,和一般应用开发有很大的不同,比较形象的是面向寄存器编程,你可以先去看看 Intel 或者 ARM 的 ISA 手册,然后了解一下相关的汇编语言,这只是开始。

    然后是各种协议的 specification:USB ,PCIE ,UART ,WIFI ,BlueTooth ,I2C ,SPI 。。。自己试着写一个简单的能用的玩意儿,然后才算入门。

    驱动更看重的是经验的积累和思维的缜密,稳定和安全会放在首要位置。。。
    TaiChou
        22
    TaiChou  
    OP
       Aug 23, 2022
    @singerll 抱歉抱歉,我以为你说的分析时序是分析时序电路。逻辑分析仪就是用来看你自己程序输出的时序是吧,相当于 Debug 工具?
    shijingshijing
        23
    shijingshijing  
       Aug 23, 2022
    @TaiChou

    而且芯片的文档不是你想象中的一份大而全的文件(只有 STC 单片机这样搞),而是一整套硬件,软件和实际应用等相关的文档集合。

    一般至少有一个 Datasheet ,复杂的还会给 Specification ,还有 N 多 Application Notes ,然后给偏硬件开发的 Hardware Development Kit 。软件相关的如果是处理器类型的会有 ISA 专门介绍指令集,然后是 Programming Guide ,复杂的会有 SDK 。

    这还不包括其他辅助类的文档,比如 Thermal Design Guide ,各种 Schematic & PCB Layout demo 和 Guideline ,比你想象的要复杂的多。
    steins2628
        24
    steins2628  
       Aug 23, 2022
    @TaiChou 差不多,你不如直接淘宝买个 arm linux 的开发板直接入门看看适不适应,这还是人家写好了详细教程在教你,确定受得了,有兴趣就可以再自己买点传感器做点自己感兴趣的东西,这样一步一步来
    acctv2
        25
    acctv2  
       Aug 23, 2022   ❤️ 1
    其实写驱动的大多都是硬件工程师,CS 出身的人并不多,连 OOP 的应用都很少,所以其实你在 CS 学到的好多知识也不一定派得上用场,iOS 开发那些经验在这里基本可以当作清零。

    而且国内嵌入式这边要么是去华为海思这种超强的大厂给人写驱动,要么就是去一天到晚想着卷成本的芝麻小厂,前者专业背景要求过高,后者工资待遇和成就感都很低,所以前景并不太好。
    TaiChou
        26
    TaiChou  
    OP
       Aug 23, 2022
    @steins2628 @shijingshijing @singerll 谢谢三位大佬提供的资料,我之前的确想的 too young too simple
    TaiChou
        27
    TaiChou  
    OP
       Aug 23, 2022
    @acctv2 了解了了解了,大概就是大厂门槛高,小厂也没啥前景,感觉各种开发的处境都差不多。。。
    q474818917
        28
    q474818917  
       Aug 23, 2022
    什么时候等培训机构进入驱动嵌入就是一片红海了,所以现在赶紧的吧
    acctv2
        29
    acctv2  
       Aug 23, 2022
    @TaiChou 嵌入式这块很多小厂甚至不需要什么像样的软件工程师,它们做的都是树莓派平替、STM32 平替,有的代码库就是直接.....嗯你懂的
    smdbh
        30
    smdbh  
       Aug 23, 2022
    转行没基础可能都难,但驱动这些感觉太模板化了
    yolee599
        31
    yolee599  
       Aug 23, 2022 via Android
    Linux 的驱动太成熟了,基本只需要 menuconfig 配一下就能用,需要从头开始写的比较少,一般都是芯片制造商做好了
    darkengine
        32
    darkengine  
       Aug 23, 2022
    毕业的时候干过一年 linux 驱动,给公司研发的安卓手机移植过芯片驱动。具体是从芯片厂家那里拿到 datasheet ,拿到示例代码,根据公司的板子改改上电流程写下寄存器,向安卓 framework 提供 API 就可以了。其实跟互联网各种业务 boy 差不多,好的地方是项目时间没有互联网公司那么紧张,坏处是钱少,少很多。
    chisj
        33
    chisj  
       Aug 23, 2022
    我倒是在 2011 年从驱动开发转成了 iOS 开发……
    luny
        34
    luny  
       Aug 23, 2022
    有自研嵌入式硬件设备的公司,对驱动开发需求还是比较大的
    另外驱动开发技术栈也算比较成熟了,更多的是实际项目中解决问题
    justanetizen
        35
    justanetizen  
       Aug 23, 2022 via Android
    OP 应该上车 Rust
    abcbuzhiming
        36
    abcbuzhiming  
       Aug 23, 2022
    @TaiChou 嵌入式根本就不是软件行业,尤其不是互联网类行业,其本质是制造业,需要大量固定资产投入,这也意味着,人在其中的成本被摊薄了,所以,嵌入式行业里的中下层,远比互联网卷,而且待遇差。因为那是制造业,是真正的 [厂]
    ih8es9OIzne0959p
        37
    ih8es9OIzne0959p  
       Aug 23, 2022
    楼主可以看我之前发的帖子
    Shazoo
        38
    Shazoo  
       Aug 24, 2022
    伙计,真正的嵌入式行业现在都不太需要写什么驱动了。模块驱动大多都是厂家早已写好,业务直接调用即可……

    写驱动,调驱动都是 7-8 年前的久远记忆了……现在真开发一个产品,datasheet 的时序图都只是扫一眼,从来没见过哪个厂家不给 all-in-one 的 feature 验证 demo 的。

    感觉现在出了做功耗管理还有点技术含量以外,剩下就都是业务代码。

    至于偶现问题,内核 crash ,系统不稳定,恰好又需要经验,你转过去拿着互联网公司实习生工资去积累经验吗?

    早跳早解脱,哥都开始玩 python 了……早年参与的核心项目,覆盖全国,月出货量 1M ,到现在还不是老老实实 tab 对齐代码……
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1522 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 129ms · UTC 16:44 · PVG 00:44 · LAX 09:44 · JFK 12:44
    ♥ Do have faith in what you're doing.