This theme is built with awescnb.|

Little_Monster-lhq

园龄:5年9个月粉丝:26关注:18

2023-09-10 23:16阅读: 345评论: 0推荐: 0

2023-最新嵌入式学习路线!

2023-最新嵌入式学习路线!

说明:

以下学习路线基于我本人在22年秋招过程中的嵌入式学习、面试经验整理

主要面向嵌入式软件、linux、驱动岗位,相比其他大而全的嵌入式学习路线,本文注重嵌入式面试重点、核心、精简内容。(没有废话、全是干货)

嵌入式核心知识点

----基本功------

  1. 编程语言: C语言
  2. MCU经验: STM32
  3. 操作系统:FreeRTOS/ucOS Linux
  4. 驱动经验: 裸机外设/Linux驱动

----加分技能 非必须------
学历,本科生建议考研
C++
数据结构
ARM体系架构
计算机网络

大家需要明确一个目标就是,我们是要面向校招学习,一般来说,我们所看到的的成套视频教程,比如STM32、或者C语言、Linux驱动等,实际是不需要学完才能去面试的!

你要做的是如何掌握基本的知识点、然后体现到简历项目上、让面试官在二三十分钟内对你问答、从细节处体现你是真的有本事的

下面,我对各部分具体梳理

长文预警、建议收藏

1.C语言

嵌入式岗位一般来说用到最多的就是C语言,向下更底层汇编,向上应用层C++, C是核心。面试时对C的考察如下:

  1. 指针:一级/二级指针,指针数组,数组指针,指针函数,函数指针
  2. 数组:一维/二维数组 排序等
  3. 字符串
  4. 关键字:#define assert const const static volatile extern sizeof typedef等
  5. 函数:strlen strcmp strstr memcpy sprintf等
  6. 内存:堆栈,内存分配 malloc/free 大小端
  7. 变量:变量类型/占用字节数,局部/全局/静态变量,形参/实参
  8. 结构:结构体 联合体,枚举类

上面的内容还不完整,但基本的知识点都包括了。如果是第一次接触的知识点,建议自己学一下,关于平时练习C语言的话,个人建议用vscode环境,装了插件用起来很方便。
上面的内容面试官肯定是不会全部问的,只能说自己多准备。

2.STM32

一般的嵌入式学习路线中都包含有单片机内容,这里写单片机是因为其比较主流,学习资料也较多。上单片机的种类很多,比如arduno、ESP32以及众多国产MCU,你会其他的写在简历上替代stm32也完全可以。大家用到的这些基本都是基于ARM架构的MCU。 实际上面试官可能自己都没用过STM32,但是他会问一些这类单片机硬件共性的问题。

如果你是没有任何基础的本科生,为了降低难度可以先从51开始学,其实也可以跟着视频直接学32。对于STM32,大家不用学完了F1还要再去学F4系列,实际上最小的c8t6开发板就能学到很多内容。以下是单片机这一块的提问点:

  1. 单片机从启动到进入main函数的流程
  2. 单片机中断机制 中断向量表 中断函数(更细节的还有如何保护中断现场,PC指针怎么动)
  3. 定时器,输出PWM
  4. IO口输入输出模式
  5. 串口,i2c,spi通讯协议,像stm32基本都是支持硬件i2c和硬件spi,这几个通讯协议的时序要掌握
  6. 看门狗

如果你简历能写的项目有限,特别是缺乏linux项目的情况下,可以做一点stm32单片机的项目补充,上面的内容只是STM32的基础,如果你后续有时间学linux驱动,那么建议stm32学这些就够了,linux驱动的教程里还会涉及到mcu更多的底层知识因此内容上会有重复。

当然,也有很多大佬即使没学Linux也能找到好工作,这个确实存在,因为有一些公司的芯片或者产品本身就不跑操作系统,但是这种就会重点考察你对单片机的掌握,像lCD驱动、高速usb协议、DDR驱动这种掌握熟练写在简历上也会让面试官眼前一亮。在学stm32时,不要追求能够完全记得住某一部分的内容,只要知道基本流程、会copy就可以了。

江科大的视频很多人推荐,正点原子的配套例程代码资料非常完善,要学的话直接基于库函数开发,不要用寄存器版本。

这里其实还有一个部分知识点,很多人问嵌入式要不要数模电,这个的话没必要再单独花时间学,常见的单片机电路和其他外设电路网上都有现成的,面试一般不会重点去问。但我也遇到过问会不会用示波器,会不会排查硬件电路。建议大家有时间可以自己做一下stm32最小系统板,嘉立创直接白嫖PCB!

3.FreeRTOS/ucOS Linux

这里将FreeRTOS/ucOS与Linux并列因为它们都是操作系统,在一些硬件资源有限的MCU平台,比如cortex-M架构的STM32-F1系列单片机,其不支持MMU,不能跑Linux系统,但是它支持跑轻量级的FreeRTOS/ucOS 实时操作系统。

一些需要处理复杂任务的芯片通常都要依靠操作系统多线程/多进程进行任务调度,提高系统的实时响应能力。 在校招时,有些公司会特别注明岗位要求使用FreeRTOS或者ucOS,这两个实时操作系统有些类似,大家只需要学其中之一就可以了,如果后面要学linux的话,那么可以不学这俩。FreeRTOS/ucOS中用的是“多任务”的概念,任务之间可以通过信号量等方式进行同步,这类系统通产不要求大家完全掌握,有一些基础的了解就可以了。学FreeRTOS/ucOS的好处是,如果你不会linux,那么可以把FreeRTOS/ucOS加在你的单片机项目上,增加项目的复杂程度。

对于linux,多线程多进程这一块实际上属于应用开发的内容,但还是大家对基础概念要知道,相关重点如下:

  1. 进程、线程概念/区别
  2. 进程、线程的同步方式
  3. 锁的概念,互斥锁、自旋锁等
  4. fork clone
  5. 创建守护进程
  6. 用户空间、内核空间

这部分内容在面嵌入式linux驱动开发工程师岗位时会容易被问到, 关于linux应用这一块的视频我基本没看。

推荐直接看下面这两个pdf,对于了解基础概念有帮助。

alt

alt

4.裸机外设/Linux驱动

这部分是最后的重点,因为在校招时,有很大一部分嵌入式岗位是要求会linux的,或者直接叫linux驱动开发工程师,大家可以去看b站,近几年的视频无论正点原子还是韦东山等系列的linux驱动开发播放量都很高,早期的视频通常基于NXP i.mx6ull芯片开发,新一点的基于STM32mp157,小众一点的瑞芯微开发板也是跑linux系统、以及还有全志科技等。以我自己的经验,学了linux驱动这部分内容可以投的岗位会更多!

对于驱动开发岗位,有做裸机开发的、也有做linux驱动开发的。现有的视频教程实际也是从裸机底层寄存器开始,linux驱动大家可以理解为在linux环境和框架下去做底层代码编写。这部分的内容,我自己其实也没学完,但是编了一个项目成功应付过了面试,下面是linux驱动的一些面试重点:

  1. uboot 、kernel、根文件系统移植
  2. 交叉编译
  3. 基本的shell命令
  4. ubuntu会用
  5. 字符设备框架
  6. 输入输出子系统
  7. i2c总线 platform总线等
  8. 设备树,驱动和设备如何匹配
  9. 块设备框架

关于linux驱动的学习,建议大家要多画框图,结构图进行梳理,典型的字符设备框架怎么写一定要知道,以及设备和驱动如何匹配,这部分内容我自己也还没学完。uboot、内核移植可以多跟着教程做几遍,这里面细节很多。校招时,如果你能掌握前面8点,块设备驱动先不学了也没关系,面试官有很多可以问你的问题。

驱动这块的视频推荐韦东山或者正点原子。

2.进阶

前面四部分的内容,大家可以按照我列举的重点去学,把核心的学了再去学边缘的知识点

在找工作时,除了嵌入式本身的知识点,还有其他影响因素,比如学历、编程能力考察。首先是学历,对于本科生同学,我还是非常建议考研的,近几年java等互联网岗位没那么容易就业了,导致嵌入式也卷起来,尽量往好的学校考研提升学历,同样的应届硕士应聘同一个嵌入式岗位,很多公司也会按985、211、双非去给不同的价,这是我真实遇到的事。

然后是编程能力考察,因为嵌入式工程师也属于程序员,大厂在招人时基本都要机考,机考分数不够直接淘汰。典型的是华为,机考3道题600分2小时,要大于100分才有资格面试,如果没有任何准备就去做的话很难拿到100。这里说的准备就是平时要刷刷题,leetcode,基本的输入输出要会处理,以及常见的排序、二叉树、链表等数据结构要知道,深度/广度优先搜索算法等。

一般来说中小公司可能对嵌入式岗位没有笔试,但大厂基本都有,比如小米、oppo、华为、美团、蔚来、大疆、vivo、海康威视、大华、字节等等。对于学习数据结构我的建议是前期基本概念要掌握,然后可以保持每天刷一两道这种状态,嵌入式不要求数据结构完全掌握,但在面大厂时机考分数高还是更有利一点。

最后,如果同学想校招冲大厂的话,建议学一点基础的C++,因为在机考做算法题时用C语言写有时候过于费劲、重复造轮子的操作没必要,C++提供的容器类使用非常方便。

以上内容,基本包括了嵌入式面试的知识范围,当然在面试时,面试官的提问更多的是基于你的简历项目,所以大家一方面要学基础知识,另一方面最好也能做一些能写到简历上的项目,或者,寻求实习机会。

以上内容可能存在不足之处,如有问题,可在评论区交流或者私信我。

作者:嵌入式校招菌
链接:https://www.nowcoder.com/discuss/520252144235053056?sourceSSR=dynamic
来源:牛客网

本文作者:Little_Monster-lhq

本文链接:https://www.cnblogs.com/little-monster-lhq/p/17692268.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Little_Monster-lhq  阅读(345)  评论(0编辑  收藏  举报
历史上的今天:
2022-09-10 Java数组转字符串,常用集合工具类
2022-09-10 java中map集合遍历的五种方式
2022-09-10 学习资料网盘链接
2022-09-10 约瑟夫环问题:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
2022-09-10 液晶屏COG封装技术-工业显示领域主流
2022-09-10 学算法必去的一个网站
2022-09-10 统计字符串中每个字符出现的次数
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 IVORY TOWER - 虞万殊
  2. 2 I Really Like You - Carly Rae Jepsen
  3. 3 404 not found REOL
  4. 4 不暧昧 - 徐秉龙,黄星侨
I Really Like You - - Carly Rae Jepsen
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

作词 : Carly Rae Jepsen

作曲 : Carly Rae Jepsen

I really wanna stop

But I just gotta taste for it

I feel like I could fly with the ball on the moon

So honey hold my hand you like making me wait for it

I feel I could die walking up to the room, oh yeah

Late night watching television

But how we get in this position?

It's way too soon, I know this isn't love

But I need to tell you something

I really really really really really really like you

And I want you, do you want me, do you want me, too?

I really really really really really really like you

And I want you, do you want me, do you want me, too?

Oh, did I say too much?

I'm so in my head

When we're out of touch

I really really really really really really like you

And I want you, do you want me, do you want me, too?

It's like everything you say is a sweet revelation

All I wanna do is get into your head

Yeah we could stay alone, you and me, and this temptation

Sipping on your lips, hanging on by thread, baby

Late night watching television

But how we get in this position?

It's way too soon, I know this isn't love

But I need to tell you something

I really really really really really really like you

And I want you, do you want me, do you want me, too?

I really really really really really really like you

And I want you, do you want me, do you want me, too?

Oh, did I say too much?

I'm so in my head

When we're out of touch

I really really really really really really like you

And I want you, do you want me, do you want me, too?

Who gave you eyes like that?

Said you could keep them

I don't know how to act

The way I should be leaving

I'm running out of time

Going out of my mind

I need to tell you something

Yeah, I need to tell you something

Yeah I really really really really really really like you

And I want you, do you want me, do you want me, too?

I really really really really really really like you

And I want you, do you want me, do you want me, too?

Oh, did I say too much?

I'm so in my head

When we're out of touch

I really really really really really really like you

And I want you, do you want me, do you want me, too?

I really really really really really really like you

And I want you, do you want me, do you want me, too?

I really really really really really really like you

And I want you, do you want me, do you want me, too?