想转驱动开发难不?

2022-08-23 10:19:38 +08:00
 TaiChou

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

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

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

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

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

4064 次点击
所在节点    程序员
38 条回复
shijingshijing
2022-08-23 11:25:03 +08:00
@TaiChou
驱动几乎可以认为是用硬件的思维去软件,和一般应用开发有很大的不同,比较形象的是面向寄存器编程,你可以先去看看 Intel 或者 ARM 的 ISA 手册,然后了解一下相关的汇编语言,这只是开始。

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

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

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

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

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

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

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

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

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

早跳早解脱,哥都开始玩 python 了……早年参与的核心项目,覆盖全国,月出货量 1M ,到现在还不是老老实实 tab 对齐代码……

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/874724

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX