详解从0开始的嵌入式学习路线,学什么、怎么学?

这篇具有很好参考价值的文章主要介绍了详解从0开始的嵌入式学习路线,学什么、怎么学?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

嵌入式是个大筐,什么都可以往里面装,电子、机械、计算机、自动化、测控、通信、物联网……很多很多专业都和嵌入式沾边,硬件、驱动、操作系统、网络、应用、算法……很多同学越学越迷糊,越学越感觉什么也不会。

首先要记住一句话,嵌入式学习奥义:先观其广,再究其深

然后今天给大家捋一捋,一个嵌入式工程师从0开始,到底该学什么,怎么学。

参考资料:

嵌入式基础、C语言技巧、各类协议、ARM等各种知识分类整理均在大叔的嵌入式小站:

详解从0开始的嵌入式学习路线,学什么、怎么学?

1. 基础课打底

高数、英语、计算机基础,C语言程序设计……,这些基础课都是很重要的课,不要因为它们是基础课就忽视其重要性。

基础好了之后学进阶的知识才会厚积薄发,才会游刃有余。这些基础课就像是的内功,内功不行,根本就发挥不出精妙的招式,同样内功深厚,学什么都快。

我重点提几项特别需要重视的基础课:

1. 英语  大多数技术文档、官方资料都是英文的,甚至只有英文版,英语学好了,受益终身。口语不是特别重要,我建议直接搜一本Datasheet,开始啃,不管理不理解,先啃单词。推荐S2C2440的Datasheet

2. 高数  算法以及控制等都对数学上有要求,如果以后想做跟算法和控制相关的,必须好好学,如果不是也至少得及格。

3. 数电 模电 很多同学会想,我不搞硬件,我只搞软件。但是其实嵌入式这行没有办法完完全全避开硬件,即使你做软件、驱动、上层应用,也得了解基本的电路知识,不然硬件同事给你的电路图你都看不懂,根本无法沟通,对于想成为嵌入式硬件工程师的那就得好好学,多实践,自己搭建、仿真、做出实际电路练手。

2. C语言能力非常重要

C语言能力是一个嵌入式工程师最最基础的能力之一,可以说是整个嵌入式的地基(就算成为嵌入式硬件工程师,也必须有一定的C语言能力)。

地基打好了,才有上层建筑。学到什么程度?

最低条件:要对指针特别清楚、数据结构和算法:软件方向要好好学,其他方向必须过一遍。

推荐书籍

  1. The C programming language 《C程序设计语言》
  2. Pointers on C 《C和指针》
  3. C traps and pitfalls 《C陷阱与缺陷》
  4. Expert C Lanuage 《专家C编程》

没必要全看,重在实践。

嵌入式硬件的路线其实非常明白,学各种电子知识、各类电路设计、PCB、电磁兼容……我就不赘述了,下面主要讲嵌入式软件该学什么。

3. 单片机

学完C语言,就可以学单片机了。

先学51,你把基础课学好,就会发现51很简单。

1. 要有个开发板,学串口、中断、定时器、GPIO

2.买一些小模块,LCD显示屏、红外、舵机、超声波

3.自己搭建一下单片机最小系统

做个贪吃蛇、调温、测距什么的小东西,要多实践,多练手,51单片机开发板、教程都是大同小异,就不推荐了。

再学STM32

32裸机中的一部分和51是差不多的,比如串口、中断、定时器、GPIO,原理几乎一样,

32多了一些IIC、SPI、DMA等知识.推荐买个网上的开发板、野火、正点原子等,其实哪家都差不多,并且附带的资料也很全,也差不多。

再学实时操作系统,像ucos,freeRTOS等。

实时操作系统相比linux而言还是一个比较小、比较简单的操作系统,适合作为你入门操作系统的起点。

你可以通过它学习一下操作系统的知识,思考使用操作系统相对于裸机的优点,是不是更方便更有效率了。它里面的任务调度,信号邮箱的通信,中断、优先级的设计等等,基本是所有操作系统共有的特点。

了解它们实现的原理,对你后续linux的学习是很有好处的,跳过其实也行,不建议跳过。

4. ARM+Linux

了解ARM架构、ARM指令集,适当背一背知识点。推荐:《ARM体系结构与编程》杜春雷着

此时应当重点提高,拿到一款芯片和Datasheet,脱离例程,从0开始驱动一些基本模块的能力。

Linux系统

了解Linux常用命令,会一些基本的操作就行了,不需要太深入的学习每一个命令,用到的时候会去搜索就行了,推荐《鸟哥的Linux私房菜》

Makefile

了解它的基本规则,会用Makefile就可以。不需要深入研究那些make函数,因为在工作中有现成的,看得懂就行,很偶尔才需要自己去编写一套Makefile。这个搜搜资料就能学会。

ARM裸机驱动

自己编写一下启动代码、Makefile、硬件初始化。不想成为嵌入式驱动开发也必须好好学LED、按键、中断、UART等特别常见的基础驱动。

Linux内核与驱动

u-boot的移植,linux内核的移植,根文件系统的制作、linux下的基本驱动。推荐B站上韦东山老师的视频课程(非广告),韦老师讲课很到位,很详细。

u-boot的主要功能就是:启动内核。它涉及:读取内核到内存、设置启动参数、启动内核。工作中要么不改,要么小改,除非特殊方向。

u-boot的移植,linux内核的移植,根文件系统的制作,会就行,工作以后根据工作需求,再深入

linux下的基本驱动:比如先自己写一个led灯的驱动,试试驱动的安装和卸载这些流程,然后写一写复杂点的串口的驱动,移植一些复杂点的,比如网卡驱动、LCD屏的驱动等。

按照早期驱动模型平台设备驱动设备树的使用,把简单驱动过一下

会字符设备驱动其实就已经具备找工作的能力了。

在学习驱动过程中,你会越来越多的接触到内核。这时候免不了学点内核调试技术了,比如中断子系统、内核休眠与内核定时器,异步通知,内核同步机制等。

这是一个边实践,边学习的过程,初期目标也是会,不要太深入。

Linux应用

是否深入,跟你以后的工作有关,工作再深入不迟,但一些基本的应用开发编写能力是必要的:

  1. 基本设备的访问,比如LCD、输入设备
  2. 进程、线程、进程通信、线程同步与互斥
  3. 休眠-唤醒、POLL机制、信号
  4. 网络编程

5. C++和QT

这部分对于决心做驱动的同学是没必要的,对于决心做软件、嵌入式应用开发,还是需要学一学的。

这部分也没什么好深入讲的,C学得好学C++就很快,主要理解封装、继承、多态等面向对象特性,QT可以理解为C++的图形库。

学习C++和QT的话,推荐B站上黑马程序员的课程(非广告),讲得非常好。

6. 结尾

嵌入式实在是太杂了,人的精力是有限的,一定要记住我开头说的那句话,先观其广,再究其深。

你的深度是在实际工作中,根据工作具体方向不断深入的。

如果是学生,在校期间踏实学习,多动手实践,多参加蓝桥杯、电赛等比赛,结识同伴、锻炼技术、增加简历,一举多得。

如果是转行至嵌入式,要保持热爱,耐得住学习的寂寞。

嵌入式这行,越干越觉得自己会的东西好少,越干越深入,这也是为什么这行并不存在35岁危机的原因,只要你脚踏实地,随着时间的积累,自身价值愈发提升。

最后助大家学有所成,升职加薪。文章来源地址https://www.toymoban.com/news/detail-784714.html

到了这里,关于详解从0开始的嵌入式学习路线,学什么、怎么学?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ARM+LINUX嵌入式学习路线

    嵌入式学习是一个循序渐进的过程,如果是希望向嵌入式软件方向发展的话,目前最常见的是嵌入式Linux方向,关注这个方向,大概分3个阶段: 1、嵌入式linux上层应用,包括QT的GUI开发 2、嵌入式linux系统开发 3、嵌入式linux驱动开发 嵌入式目前主要面向的几个操作系统是,

    2024年02月02日
    浏览(60)
  • 【单片机/嵌入式】最完整学习路线

            关于这个问题我在网上寻找到 了 相关文章解释得很详细,不了解的同学可以参考一下这篇文章: 到底什么是嵌入式?什么是单片机? - 知乎         一个人学习是孤独的,如果你是一名学生,建议加入学校的电子社团或者实验室,有老师的帮助和同学的互助

    2024年02月03日
    浏览(51)
  • 初级嵌入式软件工程师养成记(学习路线+学习资源+实战项目汇总)

    我的圈子: 高级工程师聚集地 我是董哥,高级嵌入式软件开发工程师,从事嵌入式Linux驱动开发和系统开发,曾就职于世界500强企业! 创作理念:专注分享高质量嵌入式文章,让大家读有所得! 世界这么大,还是遇见你… 大家好,我是董哥,一名嵌入式 Linux 开发工程师,

    2024年02月13日
    浏览(66)
  • C/C++语言学习路线: 嵌入式开发、底层软件、操作系统方向(持续更新)

    1.1 视频教程点到为止 1.2 炫技视频看看就行 1.3 编程游戏不玩也罢 有些游戏的主题任务就是编程,游戏和实际应用环境有一定差异(工具、操作流程),在初级阶段主要是熟悉实际场景,而且多数是通过前端语言进行游戏,对底层软件学习的帮助不大。 Coding Games: PHP、C、

    2024年04月28日
    浏览(77)
  • 什么是多态?多态有什么用途?(嵌入式学习)

    多态(Polymorphism)是面向对象编程中的一个重要概念,指的是同一种操作或函数可以在不同的对象上具有不同的行为。它允许以一种统一的方式使用不同类型的对象,而不需要关心具体对象的类型。 多态性可以通过两种方式实现:静态多态和动态多态。 静态多态(Static Pol

    2024年02月09日
    浏览(44)
  • 云计算应该怎么学,学习路线是什么?

    云计算作为新的互联网热门技术,是很多年轻人喜爱的方向,不仅技术含量高,操作性强,易学性也高,对于零基础想转IT的小伙伴们来说是非常友好的。 那么本文就以零基础的角度来分享一些学习思路和学习方向,有需要的小伙伴可以接着往下看。 云计算作为近几年发展火

    2024年02月11日
    浏览(38)
  • PWM详解(嵌入式学习)

    在STM32微控制器中,PWM代表脉冲宽度调制(Pulse Width Modulation)。PWM是一种用于控制电子设备的技术,通过调整信号的脉冲宽度和周期,可以模拟出不同的电压或功率级别。 在STM32中,PWM功能常用于控制电机速度、调节LED亮度、产生音频信号等应用。通过调整PWM的占空比(高电

    2024年02月07日
    浏览(40)
  • DMA详解及应用(嵌入式学习)

    DMA(Direct Memory Access,直接内存访问)是一种计算机系统中用于高效地实现数据传输的技术。它允许数据在外设和内存之间直接传输,而无需CPU的干预和数据复制。 传统上,在计算机系统中,外设(如硬盘、网络适配器、音频设备等)与内存之间的数据传输通常需要通过CPU进

    2024年02月04日
    浏览(40)
  • STM32串口通信详解(嵌入式学习)

    时钟信号在电子领域中是指用于同步和定时电路操作的周期性信号。它在数字系统和通信系统中起着至关重要的作用,用于协调各个组件之间的数据传输和操作。 时钟信号有以下几个重要的方面: 频率:时钟信号的频率是指单位时间内信号周期的数量。它通常以赫兹(Hz)为

    2024年02月09日
    浏览(67)
  • STM32的中断系统详解(嵌入式学习)

    中断是处理器中的一种机制,用于响应和处理突发事件或紧急事件。当发生中断时,当前正在执行的程序会被暂时中止,处理器会跳转到中断处理程序(也称为中断服务例程),对中断事件进行处理。处理完中断后,处理器再返回到被中断的程序继续执行。 中断可以分为内部

    2024年02月12日
    浏览(69)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包