北大硕士7年嵌入式学习经验分享

2023-11-05

大家现在状态是怎么样的?这几年技术进步怎么样,职场晋升,管理水平有没有提升?欢迎留言!

本文内容来自于知乎,觉得内容很不错,分享给大家。下文的我代表的是原作者。

作者:梦人亦冷

链接:https://www.zhihu.com/question/370606355/answer/1865920389

来源:知乎

阶段 1

大一到大三这个阶段我与大多数学生相同:

学习本专业知识(EE专业),学习嵌入式软件开发需要的计算机课程(汇编原理,计算机组成原理,操作系统,C语言等),学习嵌入式项目(来源于实验室项目,自己想到的项目以及各种比赛)。

关于如何学习嵌入式软件开发:

① 学习51单片机。

这个阶段你只需要跟着郭天翔的视频去学,只要求实现功能,不求甚解。

但建议能够提出问题,比如“为什么往IO控制寄存器写入特定值能点亮LED灯?”

“IO口的电路结构是什么样子的?”

“什么是上拉下拉,灌电流拉电流?”,

这一阶段主要是熟悉单片机的使用,并且在使用中思考发现问题,还能熟悉一些基本概念。

② 开始查资料看书。

看模拟电路数字电路等等,开始去弄明白1中所提出的问题。这时候问题主要集中在电路方面。

③ 开始学习STM32。

随便买个板子,看原子的书跟着一步步去做。

这时候你会遇到很多计算机方面的问题,这时候一边学习教程,一边学习:微机原理,编译原理,操作系统。

你要弄清楚 ARM 架构,弄明白 CPU 如何取指,译码,执行,知道地址总线,控制总线,数据总线如何工作。

要弄明白你编译各个阶段产生的各个文件是什么,什么是分散加载,什么是重定位,什么是代码段,什么是数据段,等等。

弄明白 CPU 如何启动,程序镜像在内存中如何布局。

要知道中断的原理,以及现场保护等等。最后你了解了各个知识点之后,转向 GCC 开发 STM32,这时候你如果知识掌握得不错,你应该可以很快地学会编写链接器脚本并且明白每一条语句所代表的含义。

④ 开始增强 C 语言。

深入挖掘C语言的各个死角。

最好可以做到当你写下一条语句的时候知道编译器会如何处理。

还需要数据结构和软件工程,建议最好还要学习一下设计模式。

开始学习养成良好的代码风格,开始思考代码的结构。

可以说设计模式如果能学好,在往后学习 LINUX 内核时大有裨益。

你会发现 LINUX 的输入子系统有点像职责链模式,会发现 ASOC 音频系统有点像模板方法模式。

私以为,如果能在两个以上不同方面考察同一种编程思想,你会得到更加深刻的理解,更能领会其精华。

⑤ 认真研读 OS 方面的书。

各个知识点都要弄明白,进程是什么,程序是什么,线程是什么,竞争死锁优先级反转,虚拟地址空间物理地址空间,用户空间内核空间等等。

开始学习 ucos,这个没什么可说的,如果在 2 中能熟练掌握各种知识点,知道 CPU 如何中断如何保护恢复现场,那么读ucos 的源码时候,在原理上就不会有什么疑惑。

如果能在 4 中养成把握代码整体结构的能力并且学习好数据结构和基本的算法,读源码就没有什么障碍。

一旦原理弄通了,源码也能读懂,那么吃透 ucos 就是顺理成章的事情。

⑥ 自己仿照 ucos 写一个 stm32 上的实时 os 出来。

⑦ 进军 LINUX。

学习 LINUX 的基本使用,看赵炯那本内核剖析,啃 LINUX 内核设计与实现,把握总体的内核架构。

之后可以学习驱动,看建议陈学松老师的书,弄明白基本的驱动架构和如何编写简单的驱动,认真对待,这里强调一下设备驱动模型。

最后啃 LINUX 内核源码情景分析,上下两册用心读,这里着重强调一下内核中的 VFS 部分。

之后就是看宋宝华老师的书,进一步学习驱动开发。

最后,看内核源码看内核源码看内核源码。

⑧ 其它的什么 SPI,IIC,什么 DMA,都只是技能问题,只要知识学的好,技能想咋点就咋点。

阶段 2

大三到研究生入学前这个阶段我在工作与考研之间无比纠结,并在此期间无数次常思考嵌入式开发到底是什么,如何把嵌入式开发做好,以后该选择怎样的一条职业道路。

为此,像很多人一样,在知乎上像做嵌入式开发的前辈们咨询过多次。

在这个阶段,我学习了 Linux 驱动开发,并渐渐认识到,嵌入式开发是一个比较偏软件的岗位(我认为大多数学生做的工作都是嵌入式软件开发,而不是硬件开发),

应该深入学习计算机体系结构的知识,而不是把那些无聊的嵌入式相关项目翻来覆去的做(尤其少参加乱七八糟的比赛)。

最终,我选择了读研,想站的再高一点看这件事。

阶段 3

研一进入研究生阶段(2018),当大家都火急火燎的加入 AI 的阵营时,我依然对嵌入式爱的深沉。

选课时,我选择了嵌入式实时操作系统,计算体系结构相关的课程,还看了很多相关的书籍,依然每周保持嵌入式 Linux 的学习。

时不与我,明明选择了做底层的导师,结果导师转做深度学习了,还好是做终端+AI相关的方向,也不算完全偏离嵌入式,这让人多少有点欣慰(毕竟我还是放不下嵌入式的)。

在这个阶段,由于接触了不少的人和事,我越来越认识到,嵌入式只是一个平台,切勿把嵌入式看作一个具体的岗位,无论硬件还是软件。

因此,我对这个岗位以及行业就业现状有了更进一步的认识。

阶段 4

研二到研三在这个阶段,我对狭义嵌入式(驱动,应用开发)完全释怀,

我认为许多人喜欢的嵌入式并不是驱动或者应用等开发,而是对底层系统的一种好奇心与掌控时的快感

与其说喜欢嵌入式,还不如说喜欢的是计算机体系结构。

因此,只要是涉及到硬件的软件开发,我都喜欢,我也将其均定义为嵌入式。

因为嵌入式软件开发就是建立在底层语言,计算机组成原理,操作系统等知识上的一种软件开发,

如果你想将嵌入式开发做好,你就得学好这几门课程 ,如果你学好了这几门课程,底层软件开发工作的岗位你应该都能胜任。

因此,又何必将嵌入式开发狭义的划到驱动开发,XX协议开发之类的呢?

最终,这个阶段我毅然放弃了 Linux 驱动的学习,投入了 Python 深度学习的怀抱中。

我不再关注我到底做的是不是嵌入式开发,只关注和嵌入式平台有没有关系。

我研究的是如何把一个深度学习模型部署到嵌入式平台上去。

有人可能会疑问,这和嵌入式开发有什么关系?为什么没有关系呢?在嵌入式平台上用 C 语言编写神经网络模型的前向推理,这不是把我们的C语言和组成原理的知识发挥出来了吗?

当图像处理程序性能不足时,查看生成的汇编程序,当汇编效率不高时,将 C 语言替换为我们自己写的汇编代码,这还不够嵌入式吗?

其实,当我们把思路放宽后,嵌入式就不再是某一个具体的岗位了,

它有可能是 AI 算子工程师,AI编译器开发工程师,FPGA加速工程师,高性能工程师等等。

这些岗位需要的技能与嵌入式工程师极为相似,年薪却最低 30W 起。

为什么?很简单,供需关系决定价格!嵌入式早已江河日下,但嵌入式+某一风口就能迈向高薪之路,这个道理在任何技术领域都是通用的。

2018年-2021年,嵌入式+AI=高薪,未来嵌入式+XX也可以。

至于未来的风口是什么,就要靠我们自己去探索了。只要保证我们自己有核心的知识储备,再学习一下风口相关的技术,立马就能咸鱼翻身。

在视野拓宽后,我去了 2 家大公司实习,后续我陆续收到了很多公司的offer。

里面既有纯算法(计算机视觉)的岗位(50-60W),也有异构计算的岗位(45-55W),也有AI芯片工具链相关的岗位(45W-50W)。

回头看,我好像已经荒废技术好久了,但是好像依旧在嵌入式学习的路上。

a4350e3490335912254be44412aefcfe.png

往期推荐

fa22135e02036ba246f67b9b547e876d.jpeg

是什么决定了硬件工程师的薪资?

b508019e3282242adfa61a02e335381f.jpeg

电池容量怎么算?一文彻底搞懂电池电量监测技术

145803598b60390ba140c95459cd7e61.jpeg

游乐园里,一边带小孩,一边写代码,分享一些有趣好玩儿的嵌入式软硬件资讯

c60eab2039adb768281b411dcf5fb961.jpeg

咱们工程师跳槽,HR 就喜欢听这些离职原因!一起看看怎么回答才比较好

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

北大硕士7年嵌入式学习经验分享 的相关文章

  • Camtasia2024中文绿色版本下载安装详细步骤教程

    Camtasia2024是一款功能强大的屏幕录制和视频编辑软件 它可以帮助用户轻松地记录电脑屏幕上的任何操作 并可以将录制的视频进行编辑和制作成高质量的视频教程 演示文稿 培训课程等 Camtasia具有直观的界面和易于使用的工具 包括添加
  • 职场人最忌讳的10件事:从人性的角度揭示职场中的禁忌行为

    职场人最忌讳的10件事 从人性的角度揭示职场中的禁忌行为 在职场中 每个人都有自己的行为准则和价值观 然而 有些事情却是普遍被认为不可取的 从人性的角度来看 这些事情可能会触碰到人们的某些心理或道德底线 导致他人产生反感或不信任 本文将探讨
  • SAN与NAS:存储架构的对比与选择

    在当今的数据密集型时代 存储架构的选择对于企业的成功至关重要 SAN Storage Area Network 和NAS Network Attached Storage 作为两种主流的存储架构 各自拥有独特的优势和应用场景 本文将深入探讨
  • 为什么这么多人自学黑客,但没过多久就放弃了(掌握正确的网络安全学习路线很重要)

    网络安全是一个 不断发展和演变 的领域 以下是一个 网络安全学习路线规划 旨在帮助初学者快速入门和提高自己的技能 基础知识 网络安全的 基础知识 包括 网络结构 操作系统 编程语言 等方面的知识 学习这些基础知识对理解网络安全的原理和技术至
  • 网络安全从入门到精通(超详细)学习路线

    首先看一下学网络安全有什么好处 1 可以学习计算机方面的知识 在正式学习网络安全之前是一定要学习计算机基础知识的 只要把网络安全认真的学透了 那么计算机基础知识是没有任何问题的 操作系统 网络架构 网站容器 数据库 前端后端等等 可以说不想
  • Java 学习路线 2024 最新版!

    又对上次分享的 Java 学习路线进行了简单修改完善 并增加了免登录下载和黑夜模式 这里重发一下 花了一个月零碎的时间 我根据当下 Java 后端求职和招聘的最新要求 对之前写的 Java 后端学习路线进行了全面的优化和改进 添加图片注释
  • 在线识别图片文字工具有哪些?教你快速提取文字

    文字识别工具 也称为光学字符识别 OCR 工具 是一种能将图像中的文本信息转化为可编辑和可搜索的数字格式的过程 它是现代信息处理和人工智能领域的重要应用之一 文字识别工具的作用在于 无论是纸质文档 电子文档还是照片上的文字 都能通过该工具进
  • 考HCIE要多久 | HCIE学员经验分享

    大家好 我是讯方 智汇云校的学员林同学 来自深圳信息职业技术学院的一名22届的通信专业的学生 通过近半年在云校的学习 我在年底成功考取了云服务方向的HCIE证书 想把我的一些考证心得分享给正在备考的小伙伴们 刚开始了解到ICT行业是在学校的
  • SRC漏洞挖掘经验+技巧篇

    一 漏洞挖掘的前期 信息收集 虽然是前期 但是却是我认为最重要的一部分 很多人挖洞的时候说不知道如何入手 其实挖洞就是信息收集 常规owasp top 10 逻辑漏洞 重要的可能就是思路猥琐一点 这些漏洞的测试方法本身不是特别复杂 一般混迹
  • 用户数据中的幸存者偏差

    幸存者偏差 Survivorship bias 是一种常见的逻辑谬误 意思是没有考虑到筛选的过程 忽略了被筛选掉的关键信息 只看到经过筛选后而产生的结果 先讲个故事 二战时 无奈德国空防强大 盟军战机损毁严重 于是军方便找来科学家统计飞机受
  • 基于信号完整性的PCB设计原则

    最小化单根信号线质量的一些PCB设计建议 1 使用受控阻抗线 2 理想情况下 所有信号都应该使用完整的电源或地平面作为其返回路径 关键信号则使用地平面作为返回路径 3 信号的返回参考面发生变化时 在尽可能接近信号换层孔的位置增加至少一个返回
  • 利用CHAT写实验结论

    问CHAT 通过观察放置在玻璃表面上的单个水滴 人们可以观察到水滴充当成像系统 探究这样一个透镜的放大倍数和分辨率 CHAT回复 实验报告标题 利用玻璃表面的单一水滴观察成像系统的放大倍数和分辨率 一 实验目的 通过对比和测量 研究和探索玻
  • 跨平台UI自动化框架:Airtest,游戏开发和应用测试的利器

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 【计算机毕业设计】OA公文发文管理系统_xtv98

    近年来 人们的生活方式以网络为主题不断进化 OA公文发文管理就是其中的一部分 现在 无论是大型的还是小型的网站 都随处可见 不知不觉中已经成为我们生活中不可或缺的存在 随着社会的发展 除了对系统的需求外 我们还要促进经济发展 提高工作效率
  • 计算机Java项目|基于SSM的微课学习系统

    作者主页 编程指南针 作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智
  • 如何打赢稳定性之战?

    文章目录 前言 为什么总会出现问题呢 如何证明你的稳定性做的有效果 既是持久战 也是防御战 1 提前建筑好防御工事 2 以攻为守 3 找外部支援和配合 前言 随着23年年末期间 各大厂争先恐后的出现的各种线上
  • 如何正确使用RC滤波网络

    众所周知 最有效的滤波电路应靠近噪声源放置 滤波的作用是对噪声电流进行及时有效地阻止和转移 实际设计中 工程师经常使用高的串联阻抗 电阻 电感和铁氧体 阻止电流 并使用低的并联阻抗 电容 转移电流 通常情况下 我们期望滤波器可以对噪声信号衰
  • 为什么这么多人自学黑客,但没过多久就放弃了(掌握正确的网络安全学习路线很重要)

    网络安全是一个 不断发展和演变 的领域 以下是一个 网络安全学习路线规划 旨在帮助初学者快速入门和提高自己的技能 基础知识 网络安全的 基础知识 包括 网络结构 操作系统 编程语言 等方面的知识 学习这些基础知识对理解网络安全的原理和技术至
  • AI新年头像模板在哪找?告别单调头像的工具分享

    农历新年到啦 今年的春节假期你有没有弄一些氛围装饰呀 除了每年都有的对联 福字等 经典皮肤 现在也流行起给自己的账号营造一些过年的感觉啦 说到这个 很多人第一反应就是给自己换个新年头像 限定皮肤 不过头像要怎么营造新年的感觉呢 其实用AI工
  • 【学习分享】全志平台TWI子系统源码分析(1)从设备树到寄存器

    全志平台TWI子系统源码分析 1 从设备树到寄存器 前言 一 名词解释 二 从设备树入手看源码 1 TWI设备树 2 TWI源码位置 3 TWI总线相关寄存器 总结 前言 这次开坑主要是想把全志平台TWI子系统在源

随机推荐

  • win7系统中装Ubuntu系统

    结合网上经验亲自安装测试通过 故整理备用 一 分离磁盘空间 1 1 选中桌面计算机图标 gt 右键选择 管理 打开磁盘管理 1 2 以D盘为例 分离出50G左右磁盘空间 选中D盘 右键选择 压缩卷 输入需要分离出的磁盘空间 点击 压缩 完成
  • 在极高负荷情况下oracle redolog的配置建议

    在极高负荷情况下oracle redolog的配置建议 在oracle数据库的现有体系结构下 redolog承担了很大的压力 这是因为所有提交给数据库的交易都需要在commite确认前通过LGWR进程将相关信息写入redolog 而一个or
  • 关于我查找了很多资料仍不知道为何不能通过npm安装引入echarts和不能直接引入echarts.js文件这档事。

    通过几番周折 明白了如何通过nodejs下载echarts 包括解决 通过几番周折 明白了如何通过nodejs下载echarts 包括解决这个东西 感觉还是挺有趣的 然后就打算用这种方式来引入了 毕竟已经花了一定时间在上面 网上继续查找资料
  • access按职称计算平均年龄_2012年计算机二级Access考前模拟题及答案(5)

    一 基本操作题 在考生文件夹下 已有 samp1 mdb 数据库文件和Stab xls文件 samp1 mdb 中已建立表对象 student 和 grade 试按以下要求 完成表的各种操作 1 将考生文件夹下的Stab xls文件导入到
  • 中国14岁初中生,开源Windows 12网页版,star数近2k

    出品 OSC开源社区 ID oschina2013 最近在网上冲浪 发现名为 Windows 12 网页版 的开源项目 在网页端实现了 Windows 12 的交互和 UI 项目亮点 精美的 UI 设计 流畅丰富的动画 各种高级的功能 相较
  • 解决Ubuntu 14.04 built-in display 分辨率较低的方法

    打开终端 输入 sudo nona etc X11 xorg conf 将下列代码粘贴复制到终端 Section Monitor Identifier Monitor0 VendorName Monitor Vendor ModelName
  • http://www.msftconnecttest.com/redirect找不到应用程序解决办法

    我在连学校内网的时候 不能自动跳转到登录的页面 因为有一些默认的配置已经被修改 可能有的人认为不是自己修改的 那么原因也有可能是软件安装的过程中默认设置被修改 也有可能是你不轻易间点错了 不废话了 直接发图 第一步 window10 点击左
  • epoll全面讲解:从实现到应用

    epoll全面讲解 从实现到应用 什么是epoll 或者说 它和select有什么区别 什么是select 有的朋友可能对select也不是很了解啊 我这里稍微科普一下 网络连接 服务器也是通过文件描述符来管理这些连接上来的客户端 既然是供
  • 使用 getopt() 进行命令行处理

    使用 getopt 进行命令行处理 轻松处理复杂命令行 文档选项 打印本页 将此页作为电子邮件发送 样例代码 级别 中级 Chris Herborth chrish pobox com 自由撰稿人 作家 2006 年 5 月 25 日 所有
  • 只需单击三次,让中文GPT-2为你生成定制故事

    2019 11 12 12 49 55 机器之心报道 机器之心编辑部 想要 GPT 2 生成中文故事 听听它对各种主题的看法 你可以试试这个中文预训练 GPT 2 项目 它开源了预训练结果与 Colab Demo 演示 只需要单击三次 我们
  • QSettings读取int文件解析失败

    问题 QSettings解析失败 ini文件如下 System name CPMS with IIoT by R Campro Precision Machinery Co Ltd gs sys id CAMPRO gs cod csub
  • AI引擎助力,CamScanner智能高清滤镜开启扫描新纪元!

    文章目录 写在前面 突破图像处理难点 扫描全能王的独特优势 耳听为虚 眼见为实 产品背后的主要核心 AI Scan助力 深度学习助力智能文档处理的国际化进程 品味智能文档处理的轻松与精准 写在前面 在数字化快速发展的今天 我们时常会遇到需要
  • 产品经理漫谈四

    每几天一篇 业界学习知识分享 请关注 如有同感请加vip阅读 产品经理如何给足一线 渠道 区域销售足够信心 思考 人性 商业 利益共同体 尊重时效 尊重承诺 价值方向 行业动态符合 具有更大兼容性 服务体系建立 笔者认为 除了产品包含市场方
  • 芯片验证从零开始系列(三)——SystemVerilog的连接设计和测试平台

    芯片验证从零开始系列 三 SystemVerilog的连接设计和测试平台 接口interface modport 验证环境结构 激励发生器 监测器 检测器 测试平台和设计间的竞争原因 断言 总结 声明 未经作者允许 禁止转载 推荐一个IC
  • AD域服务器下如何批量创建用户及修改AD域的最大返回条目数。

    最近在用户现场遇到一个问题就是通过ldap导入用户 发现导入失败 经过分析得知是AD域服务器设置的最大返回条目数默认为1000 当数据超过1000 通过ldap search s获取数据时就会异常 通过抓包分析得知是 报文回复不全导致无法解
  • 史上最全 App功能测试点分析

    1 2测试周期 测试周期可按项目的开发周期来确定测试时间 一般测试时间为两三周 即 15个工作日 根据项目情况以及版本质量可适当缩短或延长测试时间 正式测试前先向主管确认项目排期 1 3测试资源 测试任务开始前 检查各项测试资源 产品功能需
  • [k8s]笔记01

    1 k8s是什么 k8s是一套自动化容器运维的开源平台 2 k8s可以做什么 能在物理机或虚拟集群上调度和运行程序容器 快速精准地部署应用程序 即时伸缩应用程序 无缝展现新特征 限制硬件用量仅为所需资源 3 k8s概念 1 Cluster集
  • java8新特性从入门到应用 第二章 Streams数据流

    java8新特性从入门到应用 第二章 Stream 数据流 特点介绍 Stream组成 源 中间操作 筛选与切片 映射 排序 Stream的终止操作 查找与匹配 归约 收集 Collector 接口API 此流非彼流 估计第一眼看到这个标题
  • springboot定时任务出错 Unexpected use of scheduler.

    最近在使用springboot的定时器写定时任务时 项目启动就会报以下的错误 java lang IllegalStateException Unexpected use of scheduler 困扰了很久 因为以前也写过定时器 但没遇到
  • 北大硕士7年嵌入式学习经验分享

    大家现在状态是怎么样的 这几年技术进步怎么样 职场晋升 管理水平有没有提升 欢迎留言 本文内容来自于知乎 觉得内容很不错 分享给大家 下文的我代表的是原作者 作者 梦人亦冷 链接 https www zhihu com question 3