本文主要是介绍嵌入式自学路线-高薪路线(持续更新,欢迎关注),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1 入门:51+STM32
主要学习内容中断、定时器、串口、NAND FLASH、网络控制器、LCD屏、触摸屏等的工作原理。学习资源推荐视频:野火,正点原子书籍:野火,正点原子学习建议如果你以后的方向是驱动开发,这部分学习的话重点放在硬件知识的理解。
买个开发板,学习下他们的例程是如何写的,常用嵌入式外围设备的硬件工作原理,以及如何使用C语言来编程、控制这些硬件。把基本的外设都学习一遍,不求都会写,但是硬件原理一定要搞清楚。
2 进阶:ARM-A+Linux
这部分主要分为两个方向:Linux应用开发,Linux驱动开发。下面我会对这两个方向分别进行说明。有了之前的单片机基础,上手Linux开发就会快一点。
可以买个ARM-A内核的开发板,ARM-A和stm32很多地方都是相通的,理解起来不难,二者最大的差别在于开发环境,很多新手入门Linux开发在搭建环境时就被劝退了。
学习ARM-A前可以先看下 《ARM体系结构与编程》,再去看韦老师视频的话会理解快一点,视频中讲到的难理解的这里基本都有。
3 应用开发
主要学习内容Linux系统调用概念,多进程,多线程实现多任务开发,多任务的同步互斥开发:互斥锁、信号量,网络数据通信过程,TCP/IP协议,Socket编程、TCP网络编程、UDP网络编程,QT编程。学习资源推荐书籍:《Unix环境高级编程》,《Unix网络编程》,《Qt Creator快速入门》视频:这部分视频没看过,可以在哔哩哔哩搜索下,找播放量高的就可以。
4 驱动开发
主要学习内容:Bootloader的工作流程、UBOOT的编译、裁剪与移植、Linux内核的编译、裁剪与移植,根文件系统的构建、BootLoader、内核和根文件系统的烧写。重点驱动框架如:字符设备驱动、块设备驱动、LCD设备驱动、触摸屏设备驱动,总线设备驱动模型,输入子系统模型等。
学习资源推荐:书籍:《Linux设备驱动开发详解》《Linux设备驱动程序》视频:强烈推荐韦东山老师!!学习建议对照视频一点一点学习的过程中,刚开始第一遍看的话会有很多地方不明白,不要紧。如果在查阅了一些资料后还是不明白,可以先往后放放,不用深究。内核的许多东西一旦深究起来,越陷越深。作为初学者,学习驱动开发主要
学习驱动的框架(比如,输入子系统模型常用的一个函数input_attach_handler()这个函数,刚开始我们只需要知道他是用来匹配dev设备和驱动软件就可以,暂时可以不用知道这个函数内部是如何实现的)。有一定基础之后,可以再去深究其中的某个点,思考他们为什么这么写。
5 大神:各类复杂驱动
一般自学能到第二个阶段就已经相当不错了。复杂驱动部分一般是在工作中学习的。
像Android驱动,音视频驱动,usb驱动,wifi,蓝牙协议,内核开发等都是比较深入一点的东西了,随便拿出一块内容,深入钻研下都可以成为这个领域的专家。学习资源推荐书籍:这部分方向很多,我自己对很多方向也不了解。
分享几本不错的内核书籍,《Linux内核设计与实现》《深入理解LINUX内核》《深入Linux内核架构》视频:哔哩哔哩搜索【Linux内核精讲】
其实学习资源很多,也很杂,大家的时间都很昂贵,少走点弯路比什么都重要。
欢迎大家加V多交流:stm8052
这篇关于嵌入式自学路线-高薪路线(持续更新,欢迎关注)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!