你成了请告诉我


没有必要。你说的Linux程序开发指的是应用开发还是驱动开发呢?有相关硬体基础还是转驱动比较有优势。下面推荐个学习路线吧。

建议先学下stm32,买个开发板,把基本的外设程序的编写学下,理解下硬体原理(比如led如何点亮的,按键值如何读取,LCD显示原理是什么,spi,iic协议是什么)。有stm32基础的话,上手Linux开发会快一点。

接著可以买个ARM-A开发板,ARM-A和stm32很多地方都是想通的,理解起来不难。学习ARM-A前可以先看下 ARM体系结构与编程,再去看视频的话会理解快一点,视频中讲到的难理解的这里基本都有。

主要可以从以下几个方面准备吧:

1.Linux驱动开发的环境,比如Linux操作系统的使用,交叉编译工具的使用,makefile文件的编写(能看懂,简单的会写)等。

2.扎实的C语言功底,有了扎实的基础,阅读Linux内核源码的框架的时候会更容易点,驱动开发的大多数工作就是拿内核写好的源码来做一个修改。建议先熟悉内核基本的框架和简单外设驱动的编写。比如字元设备框架,块设备驱动框架,输入子系统模型,汇流排设备驱动模型等。

3.内功的修炼,基本的数据结构要会,比如,链表,二叉树,堆栈等。要理解内核是如何使用链表,二叉树等数据结构的。操作系统基本的概念要理解,比如自旋锁,信号量,阻塞与非阻塞。汇编语言要求能看懂,其实就是要熟悉Arm指令集,在很多情况下看反汇编文件对于bug的调试会更方便。

4.对照视频一点一点学习的过程中,刚开始第一遍看的话会有很多地方不明白,不要紧。如果在查阅了一些资料后还是不明白,可以先往后放放,不用深究。内核的许多东西一旦深究起来,越陷越深。作为初学者,了解框架就可以了(比如,内核输入子系统模型常用的一个函数input_attach_handler()这个函数,刚开始我们只需要知道他是用来匹配dev设备和驱动软体就可以,暂时可以不用知道这个函数内部是如何实现的)。有一定基础之后,可以再去深究其中的某个点,思考他们为什么这么写。

欢迎关注我的博客,主要分享Linux驱动学习,Arm体系与架构,Linux内核,C语言,数据结构与演算法相关文章。https://blog.csdn.net/qq_16933601

需要相关学习资料的可以在主页找我QQ(备注知乎),一起交流学习。


正确的路径是这样的,先来虚的,在网上找培训视频看个大概够面试,然后简历稍微吹一下,不要要求太高,无数公司老板不肯大价钱又让开发去招聘,无奈只能你来了,通常知道你水平都是给个小任务,这个时候来实的,拚命学,多问多讨论,加班加点五千工资干一万的事,毫无疑问你会失败,但是毫无疑问公司有些事情不在乎,等你做好一个项目时候,你就功成了,后面就不要我啰嗦


当你没有把握的时候,千万不要辞职在家专心学习。

从硬体直接转到Linux程序开发,需要一定的时间积累。

我看到过1个朋友,辞职了4个月想换个方向,辞职了4个月自学,技术能力没有质的提高,现在找工作还是很尴尬。

可以去腾讯课堂,搜索 零声学院 看看我们的课程,我们主要从事Linux伺服器开发的培训,主要针对在校研究生、以及已经工作的的朋友。

这里有我们部分学员的反馈: 学员offer · 语雀


我之前毕业刚开始就是搞硬体的,现在做驱动开发,可以先尝试晚上学习一段时间,因为做硬体,如果已经工作很久了,一些相关知识有必要重新学习下,语言方面肯定要过关,还可以再看下深入理解计算机系统,计算机程序的构造与解释,演算法方面也要学习下。

如果做linux驱动或内核方面,可以再看些驱动方面的知识,看下内核文档,再深入点就是看深入理解linux内核,深入linux内核架构这些书,可能刚开始看的速度很慢,不过在这个过程中搭配内核源码同时阅读,效果还是比较好的。

同时可以下载linux-0.01的内核源码,自己编译调试下,它也包含了一个内核的必要模块,可以从它开始了解,同时再买一些配套开发平台练习下,这些平台一般都配有教程及源码的,看能不能坚持下来


没有,你辞职了,也是玩


千万不要辞职专门学习。亲身经历!

当没有确定的【目标导向时】(即:具体项目),所有过去的时间全部都是【浪费掉】的。效率能有10%就不错,除非你从小就是学霸,从小就非常自律。

要是真想转,除了课外学一些外,最快的方式是:【降薪】去一个对【代码成果要求不那么高的公司】(不好找)。尽量多掌握些,【找到后,再离职】。


推荐阅读:
相关文章