店铺:【吴剑英店】
地址:【】
需要什么技能
● 您需要了解并使用几种常见的微控制器。
● 需要熟悉UART、SPI、I2C等常用硬件接口
● 需要了解一些传感器相关知识,如声、光、磁、温度、惯性装置等
● 您需要能够阅读datasheet并了解芯片的操作规范,即使用代码来配置传感器寄存器。
● 能够看懂原理图和PCB
● 能够使用示波器并分析电路
实际面试考的是什么?
●C语言基础知识、算法题
● 聊天,聊项目以及如何实施它们
你在工作中实际使用什么?
我面试成功的机会都来自于主要做单片机的公司,而且都是小公司。 他们加入的团队也很小,做的事情两三个人就能完成。 虽然我自认为可以很好地写程序,但是每次都不能很好地回答算法题,这让我真的很郁闷。 虽然最近补充了很多相关知识,但我还是觉得如果一直做这些单片机嵌入式项目,可能永远都不需要用到这些算法知识了。
我很早就知道这一点了。 计算机的数据结构和算法是单片机程序开发无法比拟的。另一种意义上的算法非常实用。 比如,毕业前,我买了一本北航的《嵌入式系统软件设计常用算法》。 这是一本非常有用的参考书。 它有很多方法。 在实际的嵌入式软件开发中非常有效。 我把这类算法归类为DSP,即数字信号处理。 单片机中需要处理的数据都是数字信号数据。 这些数据需要进行分析和总结。 经过处理后,从传感器获得的信息然后使用控制器或通信器反馈给外界。
一点点见解
多年来我一直从事微控制器的开发,我用这些技术做了一个又一个不靠谱的项目。 现在想来,我一直在磨练自己的技能,并没有将其运用到任何成型的产品中。 那我就做这些有什么用呢? 使用PIC单片机制作的功率检测装置可能已经小批量生产,但还远远没有成为我可以引以为豪的产品。 每次我在寻找公司的原因时,我到底为这些产品付出了多少努力? 每次我都把做这些东西当成一份工作,虽然我的技术在不断进步。 ,处理一些技术难题我越来越得心应手,但我早已失去了上学时的热情。 我开始利用业余时间学习一些其他的技术,只把自己所做的工作当作一份活生生的工作。 感觉自己做的东西没有什么技术含量,有些东西是慢慢打磨的。 我不妨利用它。 现在是投身于更加丰富的技术海洋的时候了。 随着时间的推移,当初的诚意已经不复存在,只是为了追求加薪而不断换工作。 最近一年嵌入式Linux的工作经历,确实让我学到了很多操作系统下的编程技巧。 我接触了以前从未使用过的文件编程和网络编程,也开始认真研究计算机算法。 现在我发现以前单片机下很多我非常想用的技术无非就是这些。 我还记得我曾经想自己构建一个实时操作系统。 如果想在单片机下实现多线程或者协程,有操作系统就简单了,也不像以前写程序那么复杂。 在微控制器上对以前的复杂事物进行这些简单实现之后,出现了新的复杂事物。 使用多线程编程,需要注意的同步和互斥问题并不比在单片机下同时做很多事情简单。
还有视频、音频的流式传输,需要缓冲,需要小心处理。 单片机的发展需要更多地关注物理世界和电气世界的各种特征。 需要将模拟连续信号转变为数字离散数据,实时性强,过程序列结构简单。
一点建议
● 最重要的是认清自己,不要被自己过去从事的技术所束缚。 其实我现在看到很多以前做软件的人也在尝试单片机硬件编程。 直接面对物质世界的反馈是一种美妙的感觉。 与抽象地处理数据库信息相比,处理现实世界中的各种数据在某种意义上可能更有趣,给人更实际的感觉。
● 每个人都可以继续学习新事物。 作为人类社会近二十年才出现的工种,我们有太多的东西需要学习和探索。 我们身边之所以工作了二十年的工程师这么少,是因为这个行业还没有完全发展起来,所以不要被别人“软件技术只是青少年的胡言乱语”所迷惑。 做一个坚持学习的人是值得别人尊重的。
● 微控制器程序员也是软件工程师的一种。 他们所做的事情同样有用且有趣,如果他们擅长的话,他们可以获得不错的薪水。 对于其他软件程序员来说,他们可能被认为是在硬件上工作并且在底层工作。 但我理解的区别可能和写java和python的区别差不多。 不管怎样,没有一个软件工程师一生不成长、不学习,除非走向“管理”这样的“高端”职位。
喜欢这篇文章的朋友请点赞哦
技术源于积累,成功源于坚持
——单片机专家吴建英