ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

从数学到C语言:电子信息专业嵌入式与芯片方向四年学习路线指南

从数学到C语言:电子信息专业嵌入式与芯片方向四年学习路线指南 1. 大一别急着买开发板先想清楚一件事每年开学季电子信息专业的群里都会冒出同一类问题学长STM32开发板买哪家的我大一想学嵌入式是先学单片机还是先学Linux问这些问题的人里十个有八个后来把开发板挂到了闲鱼。我当年也一样刚进大学时被各种技术名词砸得头晕。嵌入式、芯片、FPGA、DSP、Matlab、信号与系统——每个词看起来都值得学每个方向看起来都很有钱途。结果大一上学期就买了两块开发板、三本教材、一套电烙铁最后真正坚持下来的只有烙铁。回头看大一的电烙铁确实有用但那两块开发板纯属浪费。1.1 数学和C语言才是你真正的起跑线嵌入式方向和芯片方向表面上是硬件和软件的区别但底层的公共基础是两样东西数学和C语言。这不是辅导员式的说教而是我后来看了一堆招聘要求、做了一堆项目之后回头看才想明白的。先说数学。做嵌入式应用层开发数学好像没什么存在感但一旦你往底层走高等数学、线性代数、概率论全都跑出来了。举个具体例子你在做电机控制的时候PID调节三个参数Kp、Ki、Kd怎么调如果不懂一点控制理论纯靠试错调到怀疑人生也未必能稳。再比如做芯片方向数字信号处理这门课离不开傅里叶变换而傅里叶变换本身是高等数学里级数概念的延伸。更直接的是考研——不管是电子信息还是微电子初试必考数学一或者数学二你大一欠下的债大三全都要还。所以大一的数学课无论是《高等数学》还是《线性代数》请不要抱着60分万岁的心态去学。我见过太多人大一高数挂科大三准备考研时为了补基础熬秃了头而成绩好的同学大一就把微积分的直觉建立起来了。数学这个东西越早建立直觉后面越省力。再说C语言。如果你调查一下嵌入式岗位的招聘要求会发现几乎所有岗位都写着精通C语言。注意是精通不是掌握。很多同学到大二大三还分不清指针数组和数组指针分不清malloc的内存在堆上还是栈上写出来的代码一放到嵌入式设备上就死机。C语言这门课建议大一下学期自己额外找一本习题集刷一遍把结构体、指针、内存管理这几个硬骨头啃下来。你想提前感受一下的话可以装上虚拟机跑一个Ubuntu在纯命令行环境下用gcc编译你的第一个程序。这一步很多人大二才做你大一做后面会轻松很多。1.2 电路分析与模拟电子是硬件的语言嵌入式方向里有一部分人走的是硬件路线芯片方向更是直接从半导体物理起步。而这帮人的共同起点是大一的电路分析部分学校叫电路原理和模拟电子技术。电路分析这门课本质上就是用数学描述电流和电压之间的关系。基尔霍夫电压定律、电流定律、戴维南定理——这些东西看起来很抽象但你在实际画板子时天天都在用。我记得大三有一次调一个电源电路输出总是纹波特别大用示波器量了半天最后发现是退耦电容放的位置离芯片引脚太远走线绕了一个大圈。这不就是电路分析里讲的回路阻抗问题很多学生问模拟电子那么难我以后做数字电路学它干嘛这个想法大错特错。你做产品不可能永远只用数字芯片。一块STM32的最小系统板上除了单片机之外还有晶振、电源芯片、滤波电容、ESD保护器件这些全属于模拟电路的范畴。芯片方向的同学们更要面对一个事实芯片内部最核心的模拟模块——比如ADC、PLL、电源管理——恰恰是模拟工程师最值钱的技能点。所以大一的《模拟电子技术》哪怕学得痛苦也请咬着牙把三极管放大电路、运放、反馈这几个章节吃下来。你不需要考满分但你需要建立这个直觉一个信号在电路里是怎么传播的为什么需要阻抗匹配为什么电源要加滤波。这些直觉是大二画板子、大三做项目真正的底气。2. 大二最重要的事在嵌入式与芯片之间选边大二是电子信息专业的分水岭。到了大二下学期你基本上已经见识了模电数电、学完了C语言有些快的同学甚至已经玩过51单片机了。这个时候你要面对一个真正的人生选择题往嵌入式方向走还是往芯片方向走很多同学对这个问题的认知是模糊的。有人觉得芯片方向高端嵌入式方向low也有人觉得嵌入式好找工作、芯片门槛太高。这些说法都有道理也都不全面。真实情况是这两个方向的底层基础高度重叠但能力模型和职业路径差别很大。你得基于自己的兴趣、数学基础、动手能力来做决定。2.1 嵌入式方向软件硬件通吃但别忘了你的主战场嵌入式这个领域范围极其宽泛。小到一颗8位单片机做LED闪灯驱动大到RK3588这类八核处理器上跑嵌入式Linux都叫嵌入式。很多人在信息轰炸下迷失了方向今天学单片机明天看嵌入式Linux后天又听说RT-Thread很火结果什么都没学透。我的建议是大二先把单片机外设裸机开发这条线走踏实。STC89C52也好STM32F103也好ESP32也好先选一个平台把GPIO、UART、I2C、SPI、定时器、中断、ADC这些最常见的外设玩明白再来谈更复杂的系统。嵌入式领域有个说法叫5种通信协议指的就是UART、I2C、SPI、CAN和USB这五种协议如果你能不看手册就说出它们的数据帧格式、时序特点和典型应用场景面试官一般都会高看你一眼。等到大二结束你对单片机裸机开发有了整体概念之后再考虑要不要往嵌入式Linux方向走。嵌入式Linux和单片机开发是两种完全不同的思维方式。单片机上你操作的是寄存器是物理地址嵌入式Linux上你操作的是文件节点、内核驱动、虚拟内存。前者像是管理一个很小的铺面什么货在哪里自己全清楚后者像是管理一座大型仓库你必须依赖一套管理体系才能运转。判断自己适合哪条路有个很简单的方法写代码的时候你更享受控制硬件的快感还是更享受写逻辑的快感如果控制硬件让你兴奋你适合往底层走去做驱动开发或硬件设计如果写逻辑让你兴奋你适合往应用层走去做物联网设备、工业控制、音视频方案。两条路没有高下之分只有适合不适合。2.2 芯片方向从数据手册开始早一点接触HLS与Verilog芯片方向的门槛确实比嵌入式高主要高在它需要你同时具备扎实的电路基础和更强的抽象思维能力。芯片设计工程师做的事情本质上是把一套功能描述翻译成可以用硅片实现的电路结构。这个过程需要你懂数字逻辑、懂时序、懂器件物理还要懂EDA工具怎么用。如果你在大二确定了芯片方向接下来几件事可以尽早动手。第一把Verilog HDL这门硬件描述语言学好。VHDL虽然也有学校在教但业界主流已经是Verilog/SystemVerilog尤其数字IC设计Verilog是绝对的主流。学Verilog和学C语言的心智模型完全不同它不是在描述一段顺序执行的程序而是在描述一组并行的硬件电路。很多C语言习惯根深蒂固的人学Verilog会感到非常别扭比如不能随便用for循环不能在一个always块里给多个信号赋值这些规则背后都是硬件电路的真实约束。第二找一块FPGA开发板把数字电路课程里的实验在FPGA上复现一遍。比如计数器、状态机、UART收发器、FIFO从简单到复杂挨个做。FPGA这个东西你光看书是永远学不会的必须上手。你写的第一段Verilog代码大概率会在综合时给你报一堆warning这时候你才知道什么叫做代码是一回事电路是另一回事。第三关注一些芯片行业的基础知识比如寄存器传输级RTL设计流程、综合Synthesis、布局布线Place Route、时序收敛Timing Closure这些概念。不用很深入但最好知道整个芯片从代码到流片的流程是什么样子。这能帮助你在后面学习数字IC设计时有一个全局视角。2.3 大二课程里容易被低估的三门课不管你选择嵌入式还是芯片方向大二阶段有几门课经常被学生当成水课实际上却对后面的职业发展影响深远。第一门是《信号与系统》。这门课的重要性在嵌入式领域体现得不算直观但在芯片验证、通信芯片设计、数字信号处理相关的岗位上几乎是核心基础。它还和考研高度相关很多学校电子信息专业的考研初试科目里就有信号与系统。第二门是《计算机组成原理》。这条路是通往软硬结合的必经之路。CPU怎么取指、怎么译码、怎么执行缓存Cache的原理是什么中断是怎么被硬件响应和软件处理的——这些知识对做嵌入式底层开发、做芯片前端设计和验证的人来说都是不能回避的。第三门是《数据结构》。很多选嵌入式方向的同学觉得我写单片机逻辑简单不需要数据结构。这个想法到了大三大四做嵌入式Linux应用时会让你非常难受。嵌入式设备上跑的应用照样需要队列、链表、哈希表来处理通信协议帧、传感器数据流和任务调度。你躲不掉。3. 大三是爬坡期一个完整的项目胜过十门课程大三这一年是整个大学四年最关键的爬坡期。专业课集中出现比赛时间窗口合适实习招聘也刚开始掠过湖面。在这个阶段你需要的不是再买十门课而是认认真真做完一个完整项目。为什么强调完整因为太多人的简历上写的项目经历其实是课程作业的变体把某某单片机的某某实验稍微改了一下或者照着开发板厂商的例程抄了一遍最后实现了温度显示功能。这种项目在校招面试官眼里几乎等同于没有项目。真正的项目必须有一个完整的问题定义有一个设计过程有一个调试过程最好还踩过几个坑。哪怕最后做出来的东西谈不上完美但你在项目实践中建立起来的分析能力、排错能力和文档习惯才是面试官真正想考察的东西。3.1 怎么选第一个真正的项目第一做你感兴趣的东西不要跟着所谓热门项目走。你喜欢智能家居就去做一个基于ESP32的温湿度监测系统你喜欢音频就去尝试做一个低成本的USB声卡你喜欢小车就去搞一个两轮自平衡机器人。兴趣是支撑你走完整个项目周期的燃料因为它必然会在中后期让你感到枯燥和痛苦没有兴趣这件事很难坚持下来。第二项目复杂度必须刚好让你伸一伸手才够得着。如果完全在你能力之内做完了也没多少成长如果远超你能力你会在调试三天无果后放弃自信心受挫。一个比较合适的目标是你需要在项目过程中新学会一到两个核心技能比如第一次用RTOS、第一次画四层板、第一次写设备驱动。第三最好能选一个资料足够多但不至于全是现成教程的题目。如果你做的项目在淘宝和B站上有一堆手把手教你做完视频那你大概率会沦为抄代码机器如果全世界只有两三篇博客提过你的平台那调试成本可能高到劝退。折中方案是选择社区资源丰富的平台比如STM32或者ESP32但题目本身要偏应用场景而非纯粹的技术Demo。举个例子我自己当年做的第一个完整项目是一个基于STM32的便携式环境监测仪用到了温湿度传感器、OLED屏幕、按键输入、低功耗待机、串口日志还自己画了一块两层PCB。项目本身不算新颖但我在这个过程中学会了怎么看数据手册选型、怎么测量功耗、怎么写状态机来处理用户交互。这份经历在我后面简历里写了一年半面试时几乎每次都会被问到。3.2 嵌入式Linux的引入和学习节奏如果你在大二的单片机裸机开发上站稳了脚跟大三就可以把重心往嵌入式Linux方向延伸。这不是必须的但如果你希望往更广阔的领域发展——包括物联网网关、工业控制、边缘计算、AIoT——嵌入式Linux几乎是绕不开的。嵌入Linux的学习路径和单片机完全不同。你不需要在裸机上点亮LED而是要学会让Linux跑起来然后往里面加功能。很多人在这一步放弃是因为他们把时间花在了自己编译内核这个巨坑上。我真心觉得对于快速入门来说第一步用qemu模拟器或者一块现成的开发板比如友善之臂的NanoPi、正点原子的RK3588板子跑通系统比什么都重要。接下来按这个顺序推进先学会Linux基础操作和Shell脚本再学交叉编译、文件系统、设备树这些基础概念然后试着写一个简单的字符设备驱动。如果能把一个GPIO口在驱动层面控制起来你对Linux设备模型的认知基本就建立了。应用层的开发也要同步跟上毕竟很多岗位招聘时写的是应用层开发但你懂一点驱动调试效率会高一个量级。需要提一嘴的是很多同学纠结要不要把所有精力都压到嵌入式Linux上。我的观点是学到能看懂驱动源码、能写简单驱动、能在应用层调硬件这个程度就够用了后面的内核内存管理、进程调度、核心子系统源码等你真正需要时再深入研究。嵌入式终归是一个追求实际产出的工程领域研究内核源码更适合工作之后结合业务再去啃。3.3 大三必会的四件套示波器、万用表、电烙铁、逻辑分析仪你可能会觉得会用电烙铁这种话听起来很低级但事实是大量电子信息专业的学生直到大三毕业都没有亲手焊过一块能正常工作的板子。嵌入式领域的面试中很多公司会通过问你调试过什么硬件问题来筛人而你如果连示波器的探头都不会接基本等于没有动手能力。大三这一年建议你找一个能让自己反复动手的场合——实验室、社团、或者自己的小工位都行。花几十块钱买一个便携式数字示波器不需要多高级能看波形、能测频率就够用。再准备一块恒温电烙铁练练SOP封装的焊接——很多学生连给芯片引脚上锡都搞不利索焊完的板子不工作甚至把焊盘弄掉了。调试这类项目的通用套路是这样的先目测检查有没有虚焊、连锡再用万用表量电源对地阻抗排除短路问题然后上电量各个供电节点的电压是否正常接着用示波器看晶振是否起振、复位时序是否正确。这一套流程走下来百分之八十的硬件问题都能定位。剩下的再配合代码单步调试和逻辑分析仪抓时序基本没有查不出来的毛病。有一次我在调一块RK3588核心板时系统总是随机死机最后拿逻辑分析仪抓了十几个小时的信号发现是一根I2C数据线受干扰导致某个传感器偶尔超时。这个问题如果没有逻辑分析仪靠眼睛看代码根本找不出来。工具是工程师眼睛的延伸这句话在嵌入式领域百试百灵。4. 大四收官阶段考研、秋招、毕设的三线作战大四是信息最密集、压力最大的一年。考研的人蹲图书馆秋招的人跑宣讲会保研的人做两手准备剩下的人在为毕设发愁。你需要的不是面面俱到地做所有事而是根据自己大三结束时的状态做出理性的战略选择。4.1 考研电子信息/微电子的科目选择与时间规划先聊考研。每年电子信息方向考研大军堪称浩荡但很多人在大三才匆忙开始选学校、选方向时间上其实已经很吃亏。正常节奏是大三上学期确定大致方向大三下学期开始数学和英语的第一轮复习大四上学期开学前完成一轮然后进入真题阶段和政治冲刺。这里给个很实际的建议如果你在本科前两年基础打得够扎实高数、线性代数、信号与系统都是用心学的考研的复习负担会被大幅压缩。如果你前两年是靠期末突击过来的那大三暑假就要做好脱一层皮的准备。同样是每天学习十小时基础扎实的人是在查漏补缺基础薄弱的人是在女娲补天两种状态对心态的影响完全不同。考什么科目呢电子信息学硕一般考数学一和英语一专业课大多数是信号与系统少数学校考电路原理或通信原理。微电子方向的专业课更多偏向半导体物理或数字电路设计。所以大三上学期的课程选择非常关键——如果你想考信号与系统那就把这门课学得深一点如果你想考半导体物理那就别在大三把半导体物理当成选修混过去。再说点可能冒犯人的实话如果你考研的动机是不知道干什么随大流那我劝你缓一缓。电子信息这个行业的就业市场并不是只看学历。一个学得扎实、项目经验丰富、面试表现好的本科毕业生完全有可能拿到比一个普通硕士毕业生更好的offer。当然如果你想进的是芯片设计公司里的算法岗或者顶尖大厂的芯片部门那硕士学历确实是一张入场券。想清楚自己要什么再决定要不要考研。4.2 秋招简历项目经历怎么写八股文怎么背如果你决定以本科学历参加秋招大三暑假就要开始准备简历了。很多人的简历上写满了课程名称和绩点但HR和工程师面试官想看到的是你做过什么实实在在的事情能证明你具备什么岗位需要的技能。一份优秀的嵌入式简历项目经历部分通常遵循STAR法则。举一个正面例子设计并实现了一款基于STM32的便携式环境监测终端采集温湿度与PM2.5数据并通过4G模块上传至云平台。独立完成系统框图设计、传感器选型与PCB绘制解决了低功耗模式下传感器采样精度下降的问题待机功耗降至100uA以下。这段话里信息量很大平台STM32、功能采集上传、任务独立完成解决某问题、量化结果待机功耗100uA以下。面试官看到关键词提问方向一下就明确了。秋招面试中嵌入式八股文是绕不过去的一关本质上是你要对常见的基础问题形成条件反射式的回答。比如C语言中static关键字的作用、const和#define的区别、进程和线程的区别、malloc/free与new/delete的区别、中断和轮询的区别、I2C和SPI的区别。很多人反感八股文但它本质上是在考察你对计算机系统和嵌入式基础概念的掌握是否成体系。与其临阵磨枪不如平时学习时就有意识地积累。这个阶段还要养成一个好习惯每次面试结束后把被问到的题目记下来不会的当场查资料。连续面几家之后你会发现自己对面试官想知道什么的敏感度大幅提升后面面试的通过率会肉眼可见地上升。4.3 毕设选题策略用毕设给简历再镀一层金毕设选题往往被大四学生当成一个毕业必须完成的任务来对待选一个导师划定的题目花几个月做完答辩完事。但如果你的职业方向是嵌入式/芯片毕设完全可以是一次主动给自己攒项目的机会。选毕设题目时优先选那些能和你的职业方向强绑定的题目。你做嵌入式方向就选基于Linux的某某数据采集系统这类题目你做芯片方向就选基于FPGA的某某接口控制器设计这类题目。哪怕只是把以前做过的东西翻新、做得更完善也比一个完全没有技术含量的管理系统要好得多。答辩的时候评委老师通常不会为难那些研究工作做得扎实、文档规范、能说清楚技术细节的学生。你的毕业论文不仅仅是一份文档更是你在求职或考研面试时能拿出实物讲清原理的一个重要素材。千万别糊弄。5. 信息渠道与避坑建议最后聊一点可能对你长期发展更有价值的事情怎么获取高质量的信息以及哪些坑是这几年我亲眼看到无数人反反复复踩进去的。5.1 别做资料收藏家要做信息消化者我见过一种人收藏了一大堆网盘资料、公众号文章、B站教程各个文件夹分类得整整齐齐但内核却从来没成功跑起来过。嵌入式学习路线从来不是看过学会而是跑通学会。B站和CSDN上有大量免费教程但内容质量参差不齐。正确的用法是以某本经典教材为核心路线用视频教程辅助理解用官方文档和芯片手册做最终依据。比如学STM32时正点原子和野火的视频可以帮你快速入门但如果你真的想深入还是得学会看ST官方的参考手册和数据手册。同理学嵌入式Linux时韦东山的教程可以带你入门但内核机制的理解最终还是要回到《Linux Device Drivers》和内核源码本身。另外GitHub是最好的实战学习场所。找几个star多一点的嵌入式开源项目把代码clone下来编译跑通然后试着改一个小功能。这个过程比你看一百篇博客都有效。5.2 几个我至今觉得值得持续关注的方向嵌入式方向的技术栈迭代速度没有互联网那么快但几年下来也有明显的变化趋势。MCU与RTOS的深度融合RT-Thread、FreeRTOS这类RTOS已经成为中高端MCU开发的事实标准如果你只会裸机编程竞争力会逐步下降。异构多核与AIoT以RK3588为代表的MPU平台集成了CPU、GPU、NPU多个计算单元应用场景从边缘计算到智能终端扩展空间很大有性价比也有市场需求。RISC-V的崛起虽然现在ARM仍然统治嵌入式领域但RISC-V在IoT和定制化芯片方向上的势头很明显。用Verilog写一个RISC-V核心是很多芯片方向学生简历上的亮点。芯片验证岗位的需求如果往芯片方向走验证工程师的需求量这些年一直在涨掌握SystemVerilog和UVM的验证技能在就业市场上非常有优势。电源管理、模拟前端等细分芯片一个很有意思的现象是电源芯片驱动芯片这类细分方向虽然不如CPU/SoC受关注但行业需求一直很稳。毕竟任何电子设备都需要电源管理而电源芯片的设计门槛也不低比如前段时间热搜上那个8205充电芯片的引脚功能学的时候不觉得工作之后才明白这类基础器件其实很重要。5.3 避开这些误区你至少能超过一半同龄人误区一学得太杂今天学单片机明天学FPGA后天学深度学习最后全都没学透。电子信息本科四年的学习资源非常丰富但你的精力是有限的与其什么都只学了皮毛不如选一两个方向扎进去做出成果。误区二只抄例程不读手册。很多人做项目时遇到问题第一反应是搜索引擎找答案而不是打开芯片手册看寄存器定义。抄例程式学习在入门阶段是必要的但如果过渡到项目实战阶段仍然不读手册那你做的项目永远是别人的代码改一改永远不具备独立解决问题的能カ。误区三忽视文档写作和代码规范。嵌入式项目通常涉及硬件、软件、结构多个方面如果代码里没有清晰的注释文档里没有准确的框图三个月后的你自己也看不懂当时的代码。很多公司现在都对代码规范有要求早点养成好习惯找工作时不至于被内推了却因为代码风格太差被刷掉。误区四完全和外界隔绝。信息差在任何一个行业都是真实存在的嵌入式/芯片方向更是如此。尽早在大二加入实验室、社团、开源社区参加几场线下技术沙龙认识几个比你大两三届的学长学姐他们的经验能帮你避开很多无效的努力。回到最初的问题电子信息本科四年怎么规划我的回答是大一打基础大二选方向大三重项目大四做抉择。但更重要的是你要把规划当成一种动态调整的过程而不是一条锁死的路线。技术栈会变化行业需求会变化你自己的兴趣和认知也会变化重要的是在每个阶段都认真做事保持对底层原理的好奇心以及培养能独立完成一件事然后讲清楚的能力。这几件事做扎实了你拿到的就不仅仅是一份offer而是一个可以持续积累、不断迭代的职业起点。
返回列表