嵌入式工程师的『2022 || 2023』

因为一些个人关系,2022年初我从北京回到了石家庄。在找工作,包括后续的研发工作中,不同地点的经历在对比中我逐渐总结出了一些经验。关于“人”方面的感悟我就不赘述了,下面主要在这里总结一些找工作做工作的经验,希望能够帮助到各位读者。

当面试官问这些问题时,他们究竟在问什么?

  • 实现一个链表的过程。

现在无论是在哪个平台,用哪种语言,都没人手写链表了,Linux内核中自带list.h的使用、详解文章都变得很少了。那为什么面试官还是喜欢问链表、数组、排序等问题?他们其实都在问对《数据结构》的理解。我还记得我在学这门课程的时候印象比较深下图的哈希表。

再延展一点,面试官可能会问一些有现实背景的智力题,大部分也可以在《离散结构》中找到答案。《数据库系统》问的就少了,我至今,连个mysql用作嵌入式数据库的项目都没有碰到过。《计算机组成》算得上是计算机这行的童子功了,问的比较多的也就是大小端(字节序)的问题。

  • 什么是实时操作系统

这个问题的题眼很明显是实时,但是你同时需要对《操作系统》这门课程有一定认识,才能说明白这个问题。常见的FreeRTOS,

  • 首先需要能够提供多优先级区分的任务(有独立的任务栈)线,这也是为什么要上操作系统的原因,大部分业务简单情况下裸跑代码都是最优解。

  • 高精度计时系统以及实时调度系统,例如Systick定时器来实现精准的系统节拍。

  • 硬件平台支持多级的中断嵌套机制。

再延展一点,面试官可能会提一些实时操作系统项目开发过程中遇到的一些问题,就比较细节了,诸如同步信号量/互斥锁的使用,任务优先级选择的原则,以及一些任务间通信的机制。这块具体问题就具体分析了,最好是结合自己实际遇到的情况,讲述一个问题解决的过程。

  • 你掌握的技术栈都有哪些?

这个问题一般会需要你结合着项目过程中不同技能的使用情况串起来讲一下,当你讲到某一项面试官觉得跟当前岗位有交叉的地方,会让你展开讲讲。下图是某培训机构总结的嵌入式书库。

我就不按单项目来走了,我顺着上边的思路来简单说说各项是怎么再项目中应用的。

  • 编程语言在嵌入式项目中大部分用的都是C语言,而C语言现在很多高校都不再教了。理解一下指针,用递归求一下累加,其实从基础语法和标准库来看,C语言自学确实比较合适。但是C语言真正的魅力在于不同环境下的使用,从操作系统编程,到UNIX环境高编,再到网络编程,大型工业控制软件,你会发现同样是C语言,却各有各的特色美丽。

  • 如果面试公司是搞Linux的,大概率会问一些shell命令以及脚本语言或者Vim快捷键这些细碎但是你要是干过一定熟悉的命令。如果面试公司是搞裸跑单片机的,一般会问一些编译选项的问题,常见的就是不同优化等级对代码的影响。如果是搞Android的,那adb命令肯定也会问两嘴。

  • 《嵌入式操作系统》我们学的就是《深入理解Linux内核》和《Linux内核设计与实现》,非常理论,我还记得最后一道论述题考的是编写一个简单的字符设备驱动。我个人是没有什么内核开发的经验,顶多是进行一些功能的裁剪,驱动的加载适配等,这块我就不误人子弟了。

  • 上图对嵌入式应用开发的细分就比较狭隘了,大部分都是基于POSIX提供的系统接口开发路线。其实作为一个嵌入式工程师,接触到的接口种类,语言类型都是比较广泛的,像是基于无线蓝牙协议栈,抑或是使用python或者C++的标准库,甚至还有基于安卓平台的业务开发,都是能接触到的。最常见的还是各种私有协议,或者一些成熟协议栈的再次开发。

  • 嵌入式驱动开发这块我是很早以前搞的了,像是Linux和Android下边几种类型驱动的整个流程都能说得清楚,驱动的调试方法也说的明白基本就差不多了。驱动这几年貌似改动挺大的,我就不误人子弟了,如果读者您能知道面试部门所开发的驱动类型(视频芯片、存储设备),所用的操作系统和中间件,提前准备准备会事倍功半。

  • 有没有一些硬件基础?

问这个问题,一方面是因为作为嵌入式工程师,调试新板卡,与硬件工程师沟通都是免不了的工作内容,要对《电路分析》,数电模电有一定了解。能够看懂SCH(原理图),调试板卡的时候能供使用诸如万用表,示波器等仪器,分析一些常见硬件问题的原因。一般的公司不会要求能够绘制PCB(板图),当然,会画一些简单的调试板卡,焊接等技能都会根据公司岗位特性相应的加些分。

这个问题有时还有一个小的侧面,那就是《EDA技术与电子CAD》这门课程涉及的东西,因为嵌入式这行往硬件偏的有在用Verilog做FPGA开发的,还有做PLC编程的,这些东西如果有一些经验的话,会对嵌入式驱动开发有一定的指导意义。

  • 一些关于你简历上项目的问题

如果面试官在你的简历上的项目描述看到了自己感兴趣的技术,他就会着重的问题,这个时候你不用着急,慢慢说就可以,也不要因为它一点反馈没有而着急,因为可能他真的也不太懂。还有就是每一次的项目多多少少都会牵扯到业务上的事情,这些东西干过类似的项目都会相通的,多说些细节有助于给到面试官一些正反馈。

我如何完成领导交代的任务

工欲善其事必先利其器,快速搭建一个完整的嵌入式开发环境对于完成领导交代的任务,显得尤为重要。我这里简单粗暴一点,分硬件环境和软件环境,两小节说明一下常见的环境搭建过程以及遇到的一些问题。

硬件环境

常见的硬件环境第一个主体是板卡,这个板卡可以是从芯片厂商买的开发板,抑或是公司内部硬件工程师绘制的PCBA,为了将硬件环境搭建完成,由以下几点需要注意:

  1. 供电。根据板卡入口电压芯片手册或者开发板手册,调整稳压源供电电压(稳压源选择能够显示通道电流),根据供电线正负引脚定义,正确连接板卡至稳压源(这步可能需要我们自己用剥线钳拨一根黑的和一根红的线,并焊接一段至板卡上),将板卡妥善放置(如果调试系统涉及有多个板卡,建议用亚克力板搭一个调试塔),上电前测量电地是否短路。

  1. 连接仿真器至板卡,常见的仿真器有Jlink,ST-link等,他们通过板卡上预留的接口与电脑相连,电脑在使用仿真器之前需要安装相应的驱动,仿真器能够提供固件下载,在线仿真等功能。Jlink内部有一个跳线帽,可以跳接选择是否供电。

  1. 调试口连接。一般的板卡都会留有调试串口供MCU向外打印调试信息,一般都是TTL电平输出,需要我们准备TTL转USB的小板,按照线序正确连接小板至我们需要调试的板卡(一般是TXRX交叉连接),然后将小板USB接口插入电脑,并正确安装小板驱动。常见的驱动安装问题在网络上都能搜索到。串口如果不通,先判断线是否接对,可以尝试TXRX交换。然后判断包括波特率在内的一些基本参数板卡与电脑配置是否一致。

软件环境

  1. 集成开发环境(IDE)。STM32的片子用Keil,也有一些用IAR;Ti的片子用CCS;NXP的用MCUXpresso;不同的芯片厂商针对自己的芯片会提供不同的集成开发环境,但是所有的集成开发环境都有工程管理、代码编辑、编译、下载、程序在线仿真等功能。利用程序在线仿真,我们能调试一些诸如死机等疑难杂症。不要害怕接触一个新的集成开发环境,这对我们嵌入式工程师来说是常态。

  1. 调试工具。一些通用的串口/网口调试工具,能够帮助我们看到原始的网络报文信息,建立TCP链接发送\接收业务协议,或者发送一些AT指令和打印一些Log信息。我们还需要准备一个上位机开发的环境,看您是C#还是QT,抑或是Python熟悉,因为我们仅在一些开发默契可能需要提供给测试一些小的工具,所以用什么语言无所谓,看您什么顺手。

  1. 虚拟机。如果您的板卡上跑的是Linux系统,那么大概率您需要在电脑上安装一个虚拟机,并在虚拟机上运行Ubuntu操作系统。我们需要在虚拟机上编译裁剪Linux系统代码,并将其烧录到板卡上,同时我们还需要搭建交叉编译环境,将我们开发的业务软件安装到系统上。

一些年初和年终的想法

2022年这一年,工作地的调整让我本人除了技术方面,其实更多的是一些“情商”方面的提升。我学习到了很多工作上的方式方法和处理原则,单每一条都再写一篇博文了。同时我还认识了不少与我有着相似学习,工作和生活经历的人,让我对我现在的生活又有了一些新的认识。

  • 厚积薄发,只有不断的积累才能不惧改变。

  • 知行合一,只有全力以赴才能不留遗憾。

  • 宽以待人,只有善良的交际才能留下真诚的朋友。

2023年,预测一下我们这个嵌入式这个行当的一些关键字吧。

L2级别自动驾驶前装渗透率不断提升,逐渐迈向L3/4

工业物联网数字化

国产替代

融合

最后,让我用下面用一段Matlab代码,来结束这一篇博文吧。

f=@(x,y,z)(x.^2+ (9./4).*y.^2 + z.^2 - 1).^3 - x.^2.*z.^3 - (9./80).*y.^2.*z.^3;
[x,y,z]=meshgrid(linspace(-3,3));
val=f(x,y,z);
[p,v]=isosurface(x,y,z,val,0);
patch('faces',p,'vertices',v,'facevertexcdata',jet(size(v,1)),'facecolor','w','edgecolor','flat');
view(3);grid on;axis equal;

十六宿舍 原创作品,转载必须标注原文链接。
©2023 Yang Li. All rights reserved.
欢迎关注 『十六宿舍』 ,大家喜欢的话,给个 👍 ,更多关于嵌入式相关技术的内容持续更新中。

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

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

相关文章

嵌入式工程师必备开发工具

其实入行也有2年了,这两年用到了不少的开发工具,我猜大家很多也都用到过。这里主要是讲一下用到那些工具,安装自己去找教程吧!毕竟安装这些软件可比开发容易多了! 1.KEIL5 嵌入式产品开发写代码用到的工具。STM32相关…

送5本新出版《趣学算法(第2版)》

文末赠书 学大家在学习算法时遇到的各种困难:看不懂、题目刷了忘然后忘了刷、大部头算法书啃不动。甚至不少人学算法都开始怀疑自己是不是太笨不适合编程了…… 如何轻松学算法? 今天给大家推荐一本《趣学算法(第2版)》。这本书第…

Python趣味代码整合之提升学生编程兴趣

这篇文章主要是整合一些趣味代码,一方面自己对这些内容比较感兴趣,另一方面希望这些代码能提升学生的编程兴趣,其主旨是代码能在我的电脑上运行并有些趣味。 参考资料: 知乎 - 可以用 Python 编程…

趣学算法第二次

14天阅读挑战赛一、一棋盘的麦子 计算一棋盘的麦子&#xff0c;python代码如下&#xff1a; import matplotlib.pyplot as plt s[] def cal(n):sum0i0while i<n:sumsumpow(2,i)i1s.append(sum)return s nint(input("请输入一个数&#xff1a;")) xrange(n1) for …

《趣学算法》阅读笔记(二)

14天阅读挑战赛 话不多说&#xff0c;我们接着上篇文章《趣学算法》阅读笔记&#xff08;一&#xff09;&#xff0c;继续总结学习 1. 第一章 算法之美 1.3 哥德巴赫猜想的证明 哥德巴赫猜想&#xff1a;任一大于2的偶数&#xff0c;都可表示成两个素数之和。 验证&#xff1…

趣学python编程答案_《趣学Python编程》习题总结

上周买了本书叫《趣学Python编程》&#xff08;英文名&#xff1a;Python for kids&#xff09;&#xff0c;昨天看完后把书后面的题都做了下。由于第1、2章没有习题&#xff0c;第13章及之后都是描写实例的章节&#xff0c;因此这个总结性的文章中只包含了第3-12章的习题答案。…

小鹅通课程下载(一)

【需求】 花钱买了小鹅通付费课程&#xff0c;想要下载到本地观看或者存档&#xff1f; 【问题】 直接下载视频会有aes-256加密&#xff0c;要自己通过m3u8找密钥用openssl解码 【解决方案】 &#xff08;仅用于windows系统&#xff09; 小鹅通exe运行工具&#xff0c;双击打…

GPT4官方联网功能和插件功能

chatgpt免费入口 http://chat.xutongbao.top https://mbd.baidu.com/newspage/data/landingsuper?context%7B%22nid%22%3A%22news_9764161741531547244%22%7D&n_type-1&p_from-1

mac微信备份位置macos手机微信备份的文件迁移走

mac微信备份位置 如果你没有更改过mac版微信的备份文件夹的位置的话&#xff0c;那么mac版微信备份的聊天记录被保存在电脑的【/User/用户/Library/Containers/com.tencent.xinWeChat/Data/Library/Application Support/com.tencent.xinWeChat/】 一个叫【Backup】的文件夹当…

One Chat for Mac(多功能聊天软件)

One Chat for Mac版,这款软件并不能直接进行聊天服务&#xff0c;但是One Chat Mac可以将一系列的聊天软件进行整合并拥有易于使用的用户界面和用户体验&#xff0c;并且提示通知全部都可以自定义。 测试系统&#xff1a; Macos10.14.6系统 One Chat for Mac版教程 下载完成…

这款应用,让Windows软件也能在Mac上使用起来

伴随着苹果秋季发布会的结束&#xff0c;苹果电脑近期也有了一些降级促销活动&#xff0c;我趁机入手了一台iMac台式&#xff0c;准备从Windows系统转投到Mac系统的怀抱中。 兴致勃勃用了几天后&#xff0c;我发现了一个大问题&#xff01;公司使用的财务统计软件&#xff0c;没…

拿去吧!27款MacBook软件推荐给你

1、ClipboardManager 历史剪粘板管理工具 一个能记录你的剪贴板的软件 人类的本质就是 ctrl c和ctrl v&#xff0c;当复制粘贴多了&#xff0c;自然而然需要一款管理工具 2、自动切换输入法 一个能根据打开应用&#xff0c;自动切换输入法的软件 以我举例&#xff1a;敲代…

Mac上超实用的6款软件,老用户都知道!

今天为大家带来的是6款超实用的Mac软件&#xff0c;让你不再走弯路。 第一款&#xff1a;Amphetamine 防休眠的利器 Amphetamine for mac是应用在Mac上的一款防休眠工具&#xff0c;可以自定义哪些程序运行时不休眠&#xff0c;做到自定义Mac睡眠时间&#xff0c;可以通过超级简…

Mac电脑到底该用什么下载软件?Folx苹果电脑专用

Mac电脑到底该用什么下载软件&#xff1f;我用过的下载管理器中,Folx可以说是数一数二的了&#xff0c;它简洁的界面具有非常浓烈的Mac风格。标签管理、BT搜索、Music集成等功能也是非常的实用。 而 Folx 5对于我&#xff0c;值得说道的就是它的下载管理功能。它能够帮助我非常…

Linux terminal 终端快捷键

Linux terminal 终端快捷键 文章目录 Linux terminal 终端快捷键1. 常用快捷键2. 移动光标3. 编辑命令3. Bang(!)命令4. 控制命令 1. 常用快捷键 ctrl左右键: 在单词之间跳转ctrla: 跳到本行的行首ctrle: 跳到页尾Ctrlu&#xff1a;删除当前光标前面的文字 &#xff08;还有剪…

Windows Terminal 常用快捷键

Windows Terminal 常用快捷键 快捷键使用CtrlShift数字打开新控制台CtrlAlt数字切换控制台ShiftAlt/横向打开新控制台ShiftAlt_/-纵向打开新控制台ShiftAlt方向键控制控制台字体大小CtrlShiftw关闭当前控制台Alt方向键在本标签内切换控制台

Android 桌面快捷方式

Android 快捷方式 使用方式 ShortcutUtils.getInstance().addShortcut(this, MainActivity2.class, liveBundle, "live_Id", "看直播", "看直播", R.drawable.live).addShortcut(this, MainActivity2.class,vodBundle, "vod_Id", &qu…

快捷方式管理软件推荐

文章目录 前言一、Rolan1、简介&#xff1a;2、功能&#xff1a;3、使用&#xff1a; 二、Maye1、简介&#xff1a;2、界面&#xff1a; 三、Lily1、简介&#xff1a;2、功能&#xff1a;3、界面&#xff1a; 四、音速启动一、简介&#xff1a;二、界面&#xff1a; 五、Luink一…

如何在Linux桌面上创建快捷方式?

以下内容源于网络资源的学习与整理&#xff0c;如有侵权请告知删除。 一般而言&#xff0c;Linux环境下在命令行上通过软件包管理工具安装软件&#xff0c;或者从网站直接下载已经编译好的二进制软件包&#xff0c;软件安装好之后不会在桌面上创建快捷方式。接下来如果想要在桌…

Android桌面图标快捷方式

一、背景 长按桌面图标实现快捷方式最早是iOS提供的功能,而Android最早在Android 7.1版本也提供了对这方面的支持,于是在短时间内,像微信,支付宝,头条等流量级应用都提供了这方面的支持,如下图。 现在,长按桌面图标快捷方式已经是很成熟的功能,实现上也比较简单,主…