嵌入式开发学习路线(25届校招学习) 嵌入式学习路线七年规划:从大一小白到校招大佬 (学习路线汇总)

嵌入式开发学习路线(25届校招可以参考)

嵌入式系统作为当前最热门且最有发展前途的IT应用领域之一,吸引了大量有志于从事该行业的学习者。为了系统地掌握嵌入式开发技能,以下是一条详细的学习路线,旨在帮助初学者逐步成长为专业的嵌入式开发工程师。

一、基础学习阶段

  1. Linux基础
    目标:掌握Linux的基本操作、基本服务配置及设计理念。
    学习内容:
    Linux系统安装与配置(推荐使用Ubuntu系统)。
    Shell编程基础,包括文件操作、用户管理、进程控制等。
    推荐书籍:《鸟哥的Linux私房菜-基础学习篇》。
    推荐视频:Linux学习建议、系统结构与终端控制台、文件相关命令等。
  2. C语言基础
    目标:精通C语言,特别是指针、内存管理、模块化编译等。
    学习内容:
    C语言基础语法、数据类型、控制结构、函数等。
    指针与数组、结构体、链表等数据结构。
    内存分配与管理、gcc、Makefile、GDB等工具使用。
    推荐书籍:《C程序设计语言》、《C语言核心技术》、《C和指针》。
    推荐视频:C语言入门系列、C语言提高篇等。
    二、进阶学习阶段
  3. Unix环境高级编程
    目标:深入理解Unix/Linux环境下的进程、线程、网络编程等。
    学习内容:
    进程、线程管理。
    文件I/O、文件锁、管道、消息队列等。
    Socket网络编程、TCP/IP协议。
    推荐书籍:《UNIX环境高级编程》、《TCP/IP详解》。
    推荐视频:UNIX网络开发系列。
  4. 嵌入式汇编与体系结构
    目标:掌握ARM体系结构及嵌入式汇编语言。
    学习内容:
    ARM处理器基础、指令集。
    嵌入式汇编语言编程。
    ARM开发板使用与电路原理图理解。
    推荐书籍:《ARM嵌入式系统开发—软件设计与优化》、《嵌入式Linux应用开发完全手册》。
    推荐视频:嵌入式开发入门经典教程系列、ARM体系结构与Bootloader开发等。
    三、嵌入式开发实践
  5. 嵌入式应用开发
    目标:能够基于ARM平台开发简单的嵌入式应用程序。
    学习内容:
    嵌入式Linux系统移植与配置。
    编写简单的嵌入式应用程序,如串口通信、LED控制等。
    实战案例:串口监听程序、图片浏览器、MP3播放器等。
  6. Linux内核与驱动开发
    目标:掌握Linux内核与驱动开发,成为嵌入式内核驱动级别的开发者。
    学习内容:
    Linux内核架构与工作原理。
    Linux设备驱动开发,包括字符设备、块设备、网络设备等。
    实战案例:GPIO驱动、RTC时钟驱动、LCD显示设备驱动等。
    推荐书籍:《深入理解Linux内核》、《Linux设备驱动程序》、《Linux内核设计与实现》。
    四、持续学习与提升
持续跟踪新技术:嵌入式技术日新月异,需要不断学习新技术、新工具。
参与项目实践:通过参与实际项目,提升解决问题的能力和团队协作能力。
深入内核源码:阅读Linux内核源码,深入理解其设计思想和实现方式。
通过以上学习路线,你将能够系统地掌握嵌入式开发所需的知识和技能,逐步成长为一名专业的嵌入式开发工程师。

嵌入式学习路线

现在各种所谓嵌入式学习路线一搜一大堆,给你列一大堆名词看着怪高大上,杂而宽泛,大部分还是各种培训机构圈钱用的。笔者钻研嵌入式七载,在菜鸟时候也曾迷失在这些垃圾文章里。而后幸得廖勇老师亲传,小有所成,看到这些回答下面迷茫的年轻学生,一如笔者当年模样。遂决定写一点真正有用的东西,讲讲全国电子信息类顶尖高校,专研嵌入式的教授是怎么传授的。笔者不会把视角局限在嵌入式专业课,而是带你们规划你的校园时光。

1.本科阶段
本科就是打基础,任何有志于嵌入式技术的都可以参加类似于机器人实验室的组织,入门就是学C语言,写51单片机。51单片机资料众多,笔者学的是郭天祥的51单片机。必须要买开发板,亲自手写其中实验,不要跑个例程就完事,学大概学半年多吧,各种外设都应该熟悉了,到可以使用IIC或者SPI协议操作一个外设模块的程度。

一定要参加一次蓝桥杯单片机竞赛或者电子设计竞赛,而且一定要报单人,就那点代码量还几个人一起,人都是有惰性的,只要人多了你一定会偷懒。

等到大三就要开始学习STM32了,要学会库函数版的编程风格,标准库和HAL库都可以,学习STM32的重点是开始要理解硬件了,多学学启动文件里面的东西,不要只跑起功能就拉倒了,我当时是学习野火的教程,很良心,授人以鱼不如授人以渔。相比正点原子的是垃圾,只会机械地让你调库,至于为什么这么做根本就不说,像极了培训机构赚快钱应付学员的嘴脸。毕业前应达到使用单片机完成一个小的电子设计项目的水平,画PCB、焊接、再到模块选型、驱动这个模块,实现完整功能。

笔者的毕设就是驱动了一个高精度AD转换模块,连接一个压力传感器,做了一个电子秤。不难,但很杂,一个人从头做到尾,让你对整嵌入式的硬件软件系统有一个整体认知。本科生达到STM32单片机裸板一个做小项目的水平已经合格,不管你用了什么模块,实现什么细节,做通一个其他的都是相似的,不需要像打卡一样把那些培训机构列的名词全学个皮毛,本科阶段最重要的是打好最核心知识的基础,不需要多么丰富的应用经验,关键是你能用出来哪怕只是你熟悉的那一个。

笔者前面说的全都是课外要完成的,课内成绩必须好!你说专业课都是些老旧知识,没错,但是,必须学好,因为能保研!每学期期末忙上1个半月,等大四上十月份左右就能确定保研资格,到时候你想学啥学啥。要记得学生阶段比较单纯,有付出定会有回报。课程其实很耗时间,还要参加社团活动,假期是最佳反超时间。笔者本科是通信工程,计算机专业课全是假期跟着慕课自学的,当时没有女朋友也没有后来那些荣誉,日子简单忙碌又充实。

还有一个忠告是这个写字一定要工整啊,笔者在卷面分上吃大亏了,什么马原、毛概、大物实验,这种水课就是看你卷面,这些课笔者就全70分,血亏。

给本科生的最后一个忠告是多参加兴趣类社团活动,大学重在多体验,这时期的朋友是最单纯且长久的友谊,社团的朋友可能更志同道合。恋爱有机会也一定要谈,做技术是为了更好的生活,生活避不开的是另一半,好好学学怎么恋爱也非常重要,严肃的不是开玩笑。希望你们回味大学生活是丰富多彩且美好的而不是只有学习只有卷。

本科的学习目标按重要程度排:保研、能用STM32做毕设、参加兴趣社团、谈恋爱。赶紧把游戏扔一边去,有那时间还不如打球谈恋爱。

2.硕士阶段
本科已经打好了单片机基础,硕士阶段要做的是从单片机到嵌入式系统的转变。硕士的时间很紧,一些不重要的课可以选择性放弃,笔者的无关课程基本是70左右,没必要非得卷那个奖学金,但是一定要选《高级计算机结构》这门课,对于深入理解硬件非常有帮助。

硕士阶段不同于本科,学硕有发论文硬性要求,嵌入式只是应用技术是比较难发学术论文的,而且老师还会给你们强行安排些商业项目,所以这四个任务也要挤时间来完成了,研二暑假就要开始找工作,所以说硕士时间很紧,但是要记得一分耕耘一分收获。

课下廖老师给我们设计了四个挑战任务。想简单些就以stm32为平台,如果单片机基础比较好就用Cortex-A系列单片机比如S5PV210为平台实现上述过程:

任务一:单片机裸板驱动,比如在裸板上点亮LED灯,通过汇编代码手动配置最底层的寄存器,完成时钟树、GPIO口的初始化。重点1:理解库函数是如何把软件硬件联系在一起的,好好去读《零死角玩转STM32》的第八九章。重点2:理解汇编语言操作寄存器的过程。重点3:理解启动文件。

有人会说,什么年代了还用汇编,直接c实现不更简单。我同意,但是真正想深入嵌入式就必须在汇编层面上去理解硬件,越深入你越会发现汇编的重要,启动文件可是纯汇编的。好好读《零死角玩转STM32》的十五十六十九章,教你启动文件是做什么、怎么做一个简单的系统boot,这些都是你后续嵌入式进阶的基础。正点原子那拼凑出来的辣鸡就不要看了,别问我咋知道的。

任务二:移植一款RTOS并在硬件平台通过两个任务(点灯任务,灭灯任务)实现LED的周期闪烁,我所移植的是UCOSII。重点1:使用汇编语言手工编写UCOSII与硬件平台的接口部分,理解硬件的模式切换、中断系统的运行机制,以及硬件软件如何协同处理由中断和OS调度引发的上下文切换。重点2:结合UCOSII的源代码彻底理解多任务并发编程的本质,理解多任务在OS内核中的组织方式,理解OS调度的本质……吃透够你彻底理解RTOS。这个任务是最重要的,细节请看我的其他文章。

任务三:在LINUX PC上使用MakeFille的方式完成任务2的源代码的交叉编译。现在很多工程师被IDE惯坏了,脱离IDE不会编译,而且完全不懂编译原理,这样很不专业。难点1:MakeFile语法以及整套交叉编译流程。难点2:理解什么是ELF可执行文件,并理解静态链接:预编译、编译、链接、装载的全过程。

对编译过程也是程序员的内功之一,强烈推荐俞甲子的《程序员的自我修养》,读懂静态链接就足够成为面试的亮点,懂动态链接更好但也更复杂,其实真正大工程动态链接会多一些。这种修养决定了嵌入式程序员把握大型程序能力的上限。难点3:理解链接文件。各个段的地址可不是随便安排就完事了。这个任务带领我们“惊鸿一瞥"了计算机技术中那些“以不变应万变”的能力中的一个。

任务四:在你的系统中使用一种数学算法,培养知识迁移的能力。你要知道软件只是一种实现手段,一个嵌入式软件程序员想有所发展必定要和某个特殊领域结合。我所做的是四轴飞行器项目,里面的算法是姿态解算算法和PID控制算法,都不算太难开源的也不少,重点在训练知识迁移的能力。

不得不说我数学真的不好,姿态解算里面那个互补滤波我也就懂个大概流程,里面式子为什么那样算那样互补基本不懂,很数学(从此放弃做科研),但是PID必须弄通透。在你的四轴飞行器中就会真正整合前面三个任务的知识,做出属于你的四轴飞行器之后,你必定获得强烈的成就感和嵌入式方向的底气。

注意,四个任务做完也是没碰LINUX的,廖老师经常给我们强调不要好高骛远,必须读懂RTOS才能去看LINUX,否则根本就是不得要领。即使是我们这些嵌入式系统的硕士,毕业时候不需要懂LINUX内核也足够成为校招大佬了,把这四个任务吃透,全国任一城市(北上广深杭、南京、成都)的嵌入式软件工程师、系统工程师、固件工程师面一个中一个,笔者后期基本面一个中一个,手握五个offer。

当然LINUX驱动开发肯定是上课学过的,OS学的好的话学那个很简单,嵌入式工程师默认字符设备驱动已经熟悉了,不需要懂网络设备。

本文规划重点为嵌入式主干知识,应用方面的技术不是说不重要,而是比较简单,各位在实践中用到了再学也不晚,不要被培训机构贩卖焦虑所迷惑。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/417305.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CodeSys中动态切换3D模型

文章目录 需求研究结果 需求 在前面的【CodeSys开发3d机械臂显示控件】中,我们已经实现了一个可以显示3d模型的控件。但是这个控件是和使用的3d模型绑定死的,在安装这个控件时就已经将模型文件于控件一起安装到codesys中。 假如我想在不同的工程中&…

智能家居系统(基于STM32F103C8T6标准库+FreeRTOS+Qt串口开发实现)

视频演示:基于STM32F103C8T6标准库FreeRTOSQt串口开发实现的智能家居项目_哔哩哔哩_bilibili 基于STM32F103C8T6标准库FreeRTOSQt串口开发实现的智能家居项目: https://pan.baidu.com/s/1f41gAfOOnlcQoKoMx3o84A?pwd6j2g 提取码: 6j2g 注:本项目为学习完…

Meta关闭Spark AR平台:未来规划与影响分析

Meta宣布将关闭其移动AR创作平台Spark AR,这一消息在业界引起了广泛关注。尽管Snap和TikTok在AR滤镜领域取得了巨大成功,但Meta却选择了另一条发展道路。本文将探讨这一决策背后的可能原因及其对未来的影响。 关闭Spark AR平台的背后 硬件为主&#xff…

计算机网络(三) —— 简单Udp网络程序

目录 一,初始化服务器 1.0 辅助文件 1.1 socket函数 1.2 填充sockaddr结构体 1.3 bind绑定函数 1.4 字符串IP和整数IP的转换 二,运行服务器 2.1 接收 2.2 处理 2.3 返回 三,客户端实现 3.1 UdpClient.cc 实现 3.2 Main.cc 实现 …

【Mysql】系统服务启动访问报错问题处理:this is incompatible with sql_mode=only_full_group_by

一、背景: 本来已经正常运行的平台,突然有一天由于对服务器进行部分操作迁移,发现jar可以正常启动,但是访问功能一直报错,监控后台日志后,发现了问题: 报错的具体信息如下: Caused…

Linux编译器--gcc/g++使用

目录 一、预编译指令 1.1预处理功能 1.2指令 1.3问题扩展 二、编译(生成汇编) 三、汇编(生成二进制机器语言) 四、链接(生成可执行文件或库文件) 4.1库文件 4.2目标文件和库的链接 4.3动态库和静态…

【Django-Minio-Storage 使用教程】

Django-Minio-Storage 使用教程 安装 Django-Minio-Storage配置 Django 项目官方文档 安装 Django-Minio-Storage 使用 pip 安装 Django-Minio-Storage pip install django-minio-storage配置 Django 项目 在 Django 项目的 settings.py 文件中进行以下配置 INSTALLED_APPS…

【mysql】mysql修改sql_mode之后无法启动

现象:修改后mysql无法启动,不报错 原因:MySQL在8以后sql_mode已经取消了NO_AUTO_CREATE_USER这个关键字。去掉这个关键字后,启动就可以了 修改前: sql_modeSTRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR…

Bootstrap前端框架Glyphicons字体图标

115工具网收集提供Bootstrap前端框架Glyphicons字体图标库对照表​​​​​​​,Bootstrap前端UI,Glyphicons字体图标调用,Bootstrap按钮字体图标对照表,包括250多个来自Glyphicon Halflings的字体图标.项目中引用Bootstrap相关文件后即可直接调用下列图标class&quo…

Linux CentOS安装PySpark3.5(单机版)详细教程及机器学习实战

目录 一、安装须知 二、安装Spark 1、下载安装包 2、修改配置文件spark-env.sh 3、验证Spark是否安装成功 三、安装py4j 四、配置环境变量 五、基于PySpark的机器学习实战 1、将数据文件上传HDFS 2、创建代码文件 3、提交应用程序 一、安装须知 前置依赖&#xff1…

Acrobat Pro DC 2023 for Mac/Win:全能型PDF编辑器深度解析

Adobe Acrobat Pro DC 2023作为一款跨平台的PDF编辑器,无论是对于Mac还是Windows用户,都提供了极为全面且强大的PDF处理功能。该软件凭借其卓越的性能和丰富的特性,成为了全球范围内用户处理PDF文档的首选工具。 一、强大的编辑功能 Acroba…

【2024高教社杯全国大学生数学建模竞赛】ABCDEF题 问题分析、模型建立、参考文献及实现代码

【2024高教社杯全国大学生数学建模竞赛】ABCDEF题 问题分析、模型建立、参考文献及实现代码 1 比赛时间 北京时间:2024年9月5日 18:00-2024年9月8日20:00 2 思路内容 2.1 往届比赛资料 【2022高教社杯数学建模】C题:古代玻璃制品的成分分析与鉴别方案…

HBase 部署及shell操作

HBase 数据库 一、HBase 概述1.1 HBase 是什么HBase 的特点 二、HBase 模型及架构2.1 HBase 逻辑模型2.2 HBase 数据模型2.3 HBase 物理模型2.3.1 列簇物理模型2.3.2 Rowkey 字段排序2.3.3 Region 存储到不同节点2.3.4 Region 结构 2.4 HBase 基本架构 三、搭建 HBase 分布式集…

Claude的小白入门指南

要想快速上手Claude AI,其实并没有那么复杂。作为新一代的AI助手,Claude致力于为用户提供高效、无害、透明的交互体验。这篇入门指南将从Claude AI的特点、主要功能和如何实际操作等几个方面为大家做一个详细的介绍。 Claude AI是什么? Claud…

【SRC挖掘】越权漏洞——burp插件被动检测越权漏洞,一个插件让挖洞效率翻倍!Autorize

越权与未授权漏洞 越权漏洞什么是越权漏洞?Autorize插件安装使用步骤拦截过滤器 越权漏洞 什么是越权漏洞? 越权漏洞是指应用程序未对当前用户操作的身份权限进行严格校验,导致用户可以操作超出自己管理权限范围的功能,从而操作…

大模型笔记01--基于ollama和open-webui快速部署chatgpt

大模型笔记01--基于ollama和open-webui快速部署chatgpt 介绍部署&测试安装ollama运行open-webui测试 注意事项说明 介绍 近年来AI大模型得到快速发展,各种大模型如雨后春笋一样涌出,逐步融入各行各业。与之相关的各类开源大模型系统工具也得到了快速…

UnityShader自定义属性特性

前言: 在编写UnityShader时,我们常常会使用特性来更换材质球面板的属性外观,除此之外,还可以使用自定义的扩展脚本来实现自定义的材质球界面,参考我之前的文章UnityShaderUI编辑器扩展 但是自定义扩展每次都要单独写…

性能测试经典案例解析——远程培训系统

各位好,我是 道普云 一站式云测试SaaS平台。一个在软件测试道路上不断折腾十余年的萌新。 欢迎关注我的专栏和我的主页 道普云 文章内容具有一定门槛,建议先赞再收藏慢慢学习,有不懂的问题欢迎私聊我。 希望这篇文章对想提高软件测试水平…

5.sklearn-朴素贝叶斯算法、决策树、随机森林

文章目录 环境配置(必看)头文件引用1.朴素贝叶斯算法代码运行结果优缺点 2.决策树代码运行结果决策树可视化图片优缺点 3.随机森林代码RandomForestClassifier()运行结果总结 本章学习资源 环境配置(必看) Anaconda-创建虚拟环境…

Keil下载烧录程序到单片机提示flash outtime超时

Flash Timeout.Reset the Target and try it again. Error:Flash Download failed - “Cortex-M4” 解决方法: 1.检查杜邦线 2.RESET按键按一下再下载(或者一直按着下载),这样能让单片机进入烧录模式。 3.有外部看门狗,外部看门狗用跳帽屏…