侵权投诉

固件工程师到底做的工作是哪个方面

2020-10-25 09:16 次阅读

  软件跟硬件之间的界限已经越来越模糊了,那么处于这个灰色地带的,就是固件了。 这就分成三类工作者。

  1、软件工程师 一般指做图形界面的程序员,工作内容就是写C++++、JAVA、Web等。

  2、硬件工程师 当然是指玩电路板的,工作内容就是画原理图、PCB等。

  3、固件工程师 也叫单片机工程师,既写代码(主要是C语言、汇编)又要画电路图。

  玩单片机的人,可能会有个疑问,为什么我写的C语言能操作到底层的硬件? 其实在《计算机组成原理》已经有很详细的介绍了。

  我这里粗略地介绍一下,这个原理。

  首先你可以搜索一下“从零开始造电脑”,这位叫Steve的大神,就告诉你,用晶体管可以做出CPU(单片机也是CPU)。

  当然,我们现在可不会落后到需要到晶体管来制造电脑。

  接下来,你可以看一部叫《乔布斯》的电影,剧中就给你展示苹果公司的第一台计算机。

  嘿嘿,看到那些黑色的芯片没有? 还有两个大大的变压器。 这说明了在大学玩单片机的时代,就相当于回到苹果公司的初始时期! 是不是很激动人心?

  其实你可以用74系列的逻辑IC、单片机等,来搭建一个属于自己的计算机。 这就是说人们把若干个晶体管集成为一块74系列的IC,如果集成度更高呢? 那就是手机或者台式机用的多核CPU了。

  好,介绍了这些古董之后,就让你有个认识,计算机本质上是N个晶体管的组合,也是数字逻辑芯片的组合,更高级的,就是一块数模混合的芯片,具体形式是由你的工艺决定的。 现在回到正题,介绍一下数电的基础知识。

  因为CPU主要功能是计算,也就是可以直接运用数学知识来解决问题,这里就举个例子介绍一下,CPU如何计算加法,也就是用数电里的门电路搭一个加法器。

  

  怎样用晶体管搭这些与、或、非门就不说了,不懂的,可以翻书。 上图就告诉你,可以用这些门电路搭一个加法器。

  怎样输入Ai=0,Bi=1,Ci=0? 用74系列的IC的话,可以直接把Ai,Ci接GND,Bi接VCC,就实现加法了。 而在CPU内部也是一样可以这样做的,但是CPU可没那么死板,只算常数的加法。

  

  上图中,蓝色箭头指向的1,就是接VCC的,而红色箭头,就是接GND。

  在CPU内部,还有ROM,它可以把你要计算的加数和被加数存进去(ROM输出的高低电平,跟你接GND和VCC是一样的效果),而结果则存在寄存器(先暂存,以备后面使用)。

  现在有个问题,如果加完之后还要计算乘法(在信号处理领域的卷积运算的核心单元就是乘加器),怎么办? 谁来自动完成这个动作? 幸好,CPU里面有个叫ALU(算术逻辑单元)来处理这件事情。

  

  这里的控制单元,就把ROM里面的数据取出来,再用选择器,来调用加法器和乘法器,最终把结果存到寄存器中。

  如果ROM里面只存数据,那是无法让控制单元知道,你要执行加法还是乘法,要解决这个问题,就需要在ROM里面再划分一个区域,存放指令码。

  这个指令码,跟数据是一样,都是0、1的二进制数,只是用途不同,所以起了不同的名字。

  其实这个指令码,对应在单片机里面的汇编语言,就是操作码(如: MOV); 而操作数就是数据(如: 01H)。 具体的,可以看看单片机的教材。

  根据指令码的设计方法来分,有四种,分别是CISC、RISC、VLIW、TTA,具体区别可以看计算机组成原理。

  而PC(程序计数器)就是控制ROM的地址,现在你要知道PC是不能出错的,一旦出错,就意味着单片机不按照你的代码来工作。

  现在,我在8位的CPU的ROM里面,第一个地址存了0x03这个指令码来代表加法,而在第二、三个地址存了加数和被加数,然后在第四个地址存了0x05代表乘法,在第五、六个地址存了乘数和被乘数。 那么,按照一定的规则来设计控制单元(这个规则可以自己定义的),它就知道0x03是要执行加法。

  那么这个规则如何设计? 最简单的,就是用与门了,然后输出一个使能信号,让加法器工作,就跟上面的74LS160差不多。

  但是CPU可没那么简陋,它可以使用状态机、流水线等,来控制这些基本单元(如: 加法器、乘法器),如下图所示。

  

  说到这里,你至少应该知道,我们只要改变ROM的内容,就可以操作CPU内部的ALU,从而操作CPU的各个硬件单元了。

  下面给个相对完整一点的ALU内部结构图。

  

  ROM的内容本质上是一些电荷量(电容上有、无电荷,代表二进制的1和0),也就是固件、软件工程师写的代码。 而硬件,就是由晶体管搭建的数字、模拟电路(如: 单片机内部的比较器ADC等)。 所以硬件是物理器件,不容易更改; 而ROM的内容完全可以用烧录器就轻松改变它,修改成本非常低,而且很灵活。

  在这里,你很难表述,这些电荷量是软件还是硬件,但是CPU的这种结构,导致了两种不同类型的工作者,我们称他们为软件工程师和硬件工程师。 而单片机程序员写的代码,跟硬件密切相关,而且一旦完成之后,很少需要修改的(不像软件工程师修改的那么频繁),我们称之为固件。

收藏 人收藏
分享:

评论

相关推荐

单片机上拉电阻有什么样的作用好使用原则详细说明

电子发烧友网站提供《单片机上拉电阻有什么样的作用好使用原则详细说明.pdf》资料免费下载
发表于 11-26 23:50 10次 阅读
单片机上拉电阻有什么样的作用好使用原则详细说明

如何让STC单片机接上电就可以开始工作

电子发烧友网站提供《如何让STC单片机接上电就可以开始工作.pdf》资料免费下载
发表于 11-26 23:48 3次 阅读
如何让STC单片机接上电就可以开始工作

使用单片机实现看门狗溢出测试的C语言程序免费下载

本文档的主要内容详细介绍的是使用单片机实现看门狗溢出测试的C语言程序免费下载。
发表于 11-26 17:31 7次 阅读
使用单片机实现看门狗溢出测试的C语言程序免费下载

使用单片机实现外部中断1电平触发的C语言程序免费下载

本文档的主要内容详细介绍的是使用单片机实现外部中断1电平触发的C语言程序免费下载。
发表于 11-26 17:31 8次 阅读
使用单片机实现外部中断1电平触发的C语言程序免费下载

使用单片机实现外部中断0电平触发的C语言程序免费下载

本文档的主要内容详细介绍的是使用单片机实现外部中断0电平触发的C语言程序免费下载。
发表于 11-26 17:31 7次 阅读
使用单片机实现外部中断0电平触发的C语言程序免费下载

使用单片机实现矩阵键盘简易计算器的C语言程序免费下载

本文档的主要内容详细介绍的是使用单片机实现矩阵键盘简易计算器的C语言程序免费下载。
发表于 11-26 17:31 11次 阅读
使用单片机实现矩阵键盘简易计算器的C语言程序免费下载

使用单片机实现按键长按短按效果的C语言程序免费下载

本文档的主要内容详细介绍的是使用单片机实现按键长按短按效果的C语言程序免费下载。
发表于 11-26 17:31 8次 阅读
使用单片机实现按键长按短按效果的C语言程序免费下载

单片机是如何构成的?

  单片机是这些电器动作的关键,是指挥硬件运行的。例如:接收按钮或按键的输入信号,按照事先编好的程序,指挥马达和LCD的...
发表于 11-26 17:12 7次 阅读
单片机是如何构成的?

stm8单片机的供电模块

  STM8 的MCU有四个供电单元:   1. VDD/VSS:主电源(3V~5.5V);   2. VDDIO/VSSIO: I/O口...
发表于 11-26 17:10 0次 阅读
stm8单片机的供电模块

常见的四种单片机常用开方根算法

  C语言中要求平方根,可以在头文件中加入#include 〈math.h》。然后调用sqrt(n);函数即可。但在单片机中调用此函数无疑会耗...
发表于 11-26 17:01 0次 阅读
常见的四种单片机常用开方根算法

单片机系统开发入门知识及基本条件

  1. 入门知识储备   想学习单片机系统的开发,必须先有以下几个方面的知识储备:   (一) 微机原理   (二) C语言...
发表于 11-26 16:57 0次 阅读
单片机系统开发入门知识及基本条件

单片机如何用一个IO口采集多个按键信号?

一般按键信号都是高低电平,对于每一个按键信号单片机都需要一个IO口进行采集,这种按键采集方式比较简单,但是占用的单片机I...
发表于 11-26 16:51 0次 阅读
单片机如何用一个IO口采集多个按键信号?

减轻单片机设计干扰的方法

现在的单片机一般在片内集成有RC振荡电路,可以产生MCU工作需要的时钟脉冲,使用片内时钟不仅可以简化外部电路设计,还可以...
发表于 11-26 16:47 0次 阅读
减轻单片机设计干扰的方法

STM8S003单片机最小系统的电路原理图

本文以ST公司的STM8S003单片机为例,给大家讲解一个单片机最小系统的电路原理图:通过单片机采集一个按键信号,点亮一颗L...
发表于 11-26 16:45 0次 阅读
STM8S003单片机最小系统的电路原理图

stm8单片机复位功能的一些特性

  对于stm8单片机的复位引脚NRST,有九种情况会触发复位:   通过外部电位作用于NRST引脚产生复位   上电复位(...
发表于 11-26 16:38 0次 阅读
stm8单片机复位功能的一些特性

STM8单片机中断的主要功能有哪些

  内部中断:一般是由硬件错误或者运算过程中出错引起的,一般是不可避免的;   外部中断:是处理器的外设发出的中断请求,如...
发表于 11-26 16:36 0次 阅读
STM8单片机中断的主要功能有哪些

玩PC游戏,是CPU只要还是显卡重要?

为了玩游戏,不少玩家都不惜血本组装一台万元机,其中CPU和显卡作为决定电脑性能的核心硬件,玩家们格外....
的头像 如意 发表于 11-26 16:25 101次 阅读
玩PC游戏,是CPU只要还是显卡重要?

影驰科普:玩游戏选择显卡还是CPU?

为了玩游戏,不少玩家都不惜血本组装一台万元机,其中CPU和显卡作为决定电脑性能的核心硬件,玩家们格外....
的头像 工程师邓生 发表于 11-26 16:09 42次 阅读
影驰科普:玩游戏选择显卡还是CPU?

在学习STM32时为什么要学习汇编?

不同的平台的汇编代码是不一样的,最早的汇编在50年代就发明了,比很多人的父母的年龄都大,老掉牙,不用....
的头像 嵌入式ARM 发表于 11-26 14:32 30次 阅读
在学习STM32时为什么要学习汇编?

嵌入式Linux系统CPU控制常见办法测试

01 测试环境 Xilinx ZCU106 单板 Xilinx VCU TRD2020.1 02 介....
的头像 FPGA开发圈 发表于 11-26 14:17 254次 阅读
嵌入式Linux系统CPU控制常见办法测试

一图读懂惠普游戏本全新控制中心,支持 CPU 智能降压

IT之家 11 月 25 日消息 根据惠普官方的消息,惠普游戏本全新控制中心发布,支持 CPU 智能....
的头像 工程师邓生 发表于 11-26 11:48 110次 阅读
一图读懂惠普游戏本全新控制中心,支持 CPU 智能降压

联发科MT6893曝光:业界首款6nm A78芯片

联发科发布的MT6893采用了八核三集群的CPU组合,其中包括一个3.0GHz的Cortex-A78....
的头像 我快闭嘴 发表于 11-26 11:45 487次 阅读
联发科MT6893曝光:业界首款6nm A78芯片

俄罗斯将研发基于Elbrus VLIW架构的32核处理器

据报道,俄罗斯联邦工业和贸易部已竞标开发基于Elbrus VLIW架构的32核处理器。CPU将针对各....
的头像 我快闭嘴 发表于 11-26 10:31 73次 阅读
俄罗斯将研发基于Elbrus VLIW架构的32核处理器

基于AT89C55WD单片机和编程语言实现继电保护实验系统的设计

其中控制系统采用单片机控制,包含以下4个部分:数据处理单元,即微机主系统;数据采集单元,即模拟量输入....
的头像 电子设计 发表于 11-26 10:10 187次 阅读
基于AT89C55WD单片机和编程语言实现继电保护实验系统的设计

AMD如何用牺牲性能来换取电池续航时间?

不知道大家在使用笔记本电脑时是否注意过,插电和不插电的情况下,笔记本性能的反应是不是不一样。比如在插....
的头像 lhl545545 发表于 11-26 09:08 155次 阅读
AMD如何用牺牲性能来换取电池续航时间?

如何使用6个芯片实现组装一台计算机

电子发烧友网站提供如何使用6个芯片实现组装一台计算机资料免费下载
发表于 11-26 07:50 14次 阅读
如何使用6个芯片实现组装一台计算机

RTX 3060 Ti在DX12游戏跑分曝光:性能看齐RTX 2080S

在下月正式发布前,RTX 3060 Ti在DX12游戏《奇点灰烬(Ashes of the Sing....
的头像 工程师邓生 发表于 11-25 16:55 108次 阅读
RTX 3060 Ti在DX12游戏跑分曝光:性能看齐RTX 2080S

单片机上电复位后端口的状态详细概述

 在 MSP430 单片机的手册中,对于端口复位后的状态,是这样描述的:复位后,所有端口处于输入状态....
发表于 11-25 16:30 42次 阅读
单片机上电复位后端口的状态详细概述

单片机整体的CPU使用情况详细介绍

打开电脑的任务管理器,看着跳动的 CPU 使用率,发现很舒服。每一个线程占用了多少 CPU 清清楚楚....
发表于 11-25 15:58 40次 阅读
单片机整体的CPU使用情况详细介绍

英特尔自研芯片的新战略解读

英特尔(Intel Corp.)比任何一家公司都更有资格代表「硅谷」这个名称中富有历史感的「硅」字。....
的头像 我快闭嘴 发表于 11-25 15:10 340次 阅读
英特尔自研芯片的新战略解读

苹果M1芯片如此厉害的三个原因分析

苹果今年的发布会三部曲终于落下了帷幕。这场压轴大戏上,发布了苹果自研芯片Apple Silicon的....
的头像 我快闭嘴 发表于 11-25 15:05 451次 阅读
苹果M1芯片如此厉害的三个原因分析

Intel为何不怕AMD抢夺桌面CPU市场?

AMD的锐龙处理器从去年的锐龙3000系列开始才真正具备正面刚酷睿的实力,今年的锐龙5000在单核、....
的头像 如意 发表于 11-25 12:17 251次 阅读
Intel为何不怕AMD抢夺桌面CPU市场?

FPGA加速的厉害之处在哪里?

轰轰烈烈的双十一落下了帷幕,2020年的双十一成绩依旧斐然。天猫11月11日0点刚过,天猫双11的订....
的头像 EDA365 发表于 11-25 11:17 172次 阅读
FPGA加速的厉害之处在哪里?

CPU温度过高?教你如何关闭超线程功能

CPU散热是很多玩家极为关注的问题,温度高了不仅对CPU性能不利,还会影响使用寿命等。如果发觉自己的....
发表于 11-25 11:12 43次 阅读
CPU温度过高?教你如何关闭超线程功能

中国联通日前开启5G消息中心联合公开测试

中国电信、中国联通日前开启5G消息中心联合公开测试,为后续中国电信、中国联通组织5G消息平台采购提供....
的头像 lhl545545 发表于 11-25 11:08 153次 阅读
中国联通日前开启5G消息中心联合公开测试

同方CPU卡安全门禁系统的功能及认证实现方式

依据“指南”,系统将带有SM1算法密码模块,内嵌于读卡器中,利用内部认证机制,完成读卡器与用户卡之间....
发表于 11-25 11:02 52次 阅读
同方CPU卡安全门禁系统的功能及认证实现方式

为什么不能使用单片机取代PLC

单片机可以替代 PLC 吗? 这个问题如同面粉能代替面条一样,答案是否定的。第一次听到这个答案可能很....
发表于 11-25 10:58 97次 阅读
为什么不能使用单片机取代PLC

单片机到底有什么作用PDF文件讲解

1. uC/OS 是个什么鬼?在一些朋友的留言和大神的文章中多次提到了 uC/OS,相信很多朋友看到....
发表于 11-25 10:57 43次 阅读
单片机到底有什么作用PDF文件讲解

关于进程与线程的解析PDF文件资料

电子发烧友为你提供关于进程与线程的解析PDF文件资料免费下载
发表于 11-25 10:42 15次 阅读
关于进程与线程的解析PDF文件资料

C语言预处理命令的分类和工作原理详细说明

C 语言编程过程中,经常会用到如 #include、#define 等指令,这些标识开头的指令被称为....
发表于 11-25 10:34 18次 阅读
C语言预处理命令的分类和工作原理详细说明

AI简化P图 CPU智能P图就是这么简单

什么才是生产力?除了Office办公之外,很多人还能想到的就是图像处理了,PhotoShop已经是很....
的头像 工程师邓生 发表于 11-25 10:17 145次 阅读
AI简化P图 CPU智能P图就是这么简单

爆料苹果预计推出第二颗Apple Silicon CPU,用于苹果桌面Mac

苹果第一代M1处理器已经面向新款MacBook Air、MacBook Pro两款笔记本以及Mac ....
的头像 工程师邓生 发表于 11-25 10:12 233次 阅读
爆料苹果预计推出第二颗Apple Silicon CPU,用于苹果桌面Mac

Switch对模拟器Yuzu代码进行重构

日前,知名的Switch模拟器Yuzu再次进行了一次底层代码重构,这次涉及的是软件的纹理缓存模块。
的头像 lhl545545 发表于 11-25 09:44 94次 阅读
Switch对模拟器Yuzu代码进行重构

单片机实现按键触发设计的方案和电路图分析

在学习单片机的时候想必大家都接触过按键,按键是一个人机交互的接口设备,在刚开始接触的时候最简单也是最....
发表于 11-25 09:34 37次 阅读
单片机实现按键触发设计的方案和电路图分析

工业物联网的无线网络WiFi单片机的方案详细概述

正如 Microchip 所看到的一样,随着物联网从家庭自动化领域拓展到如供暖、通风与空调(HVAC....
发表于 11-25 08:20 24次 阅读
工业物联网的无线网络WiFi单片机的方案详细概述

Linux内核开发框架的学习资料说明

包括了所有和体系结构相关的核心代码。它下面的每一个子目录都代表一种Linux 支持的体系结构, 例如....
发表于 11-24 18:08 29次 阅读
Linux内核开发框架的学习资料说明

51单片机的C语言编程基础及实例教程

基础知识:51单片机编程基础   单片机的外部结构:   1. DIP40双列直插; ....
发表于 11-24 18:08 64次 阅读
51单片机的C语言编程基础及实例教程

使用单片机实现独立按键依次输入数据的C语言程序免费下载

本文档的主要内容详细介绍的是使用单片机实现独立按键依次输入数据的C语言程序免费下载。
发表于 11-24 17:57 33次 阅读
使用单片机实现独立按键依次输入数据的C语言程序免费下载

使用单片机实现按键从右至左输入的C语言程序免费下载

本文档的主要内容详细介绍的是使用单片机实现按键从右至左输入的C语言程序免费下载。
发表于 11-24 17:57 37次 阅读
使用单片机实现按键从右至左输入的C语言程序免费下载

使用单片机实现多位数按键加减不闪烁的C语言程序免费下载

本文档的主要内容详细介绍的是使用单片机实现多位数按键加减不闪烁的C语言程序免费下载。
发表于 11-24 17:50 25次 阅读
使用单片机实现多位数按键加减不闪烁的C语言程序免费下载

使用单片机实现多位数按键加减闪烁数码管显示的C语言程序免费下载

本文档的主要内容详细介绍的是使用单片机实现多位数按键加减闪烁数码管显示的C语言程序免费下载。
发表于 11-24 17:50 18次 阅读
使用单片机实现多位数按键加减闪烁数码管显示的C语言程序免费下载

TMS320VC5501 定点数字信号处理器

TMS320VC5501(5501)定点数字信号处理器(DSP)基于TMS320C55x™DSP生成CPU处理器内核。 C55x™DSP架构通过增加并行性和全面关注降低功耗来实现高性能和低功耗。 CPU支持内部总线结构,该结构由一个程序总线,三个数据读总线,两个数据写总线以及专用于外设和DMA活动的附加总线组成。这些总线能够在一个周期内执行最多三次数据读取和两次数据写入。并行,DMA控制器可以独立于CPU活动执行数据传输。 C55x™CPU提供两个乘法累加(MAC)单元,每个单元能够进行17位×17位乘法运算。单循环。额外的16位ALU支持中央40位算术/逻辑单元(ALU)。 ALU的使用受指令集控制,提供优化并行活动和功耗的能力。这些资源在C55x CPU的地址单元(AU)和数据单元(DU)中进行管理。 C55x DSP代支持可变字节宽度指令集,以提高代码密度。指令单元(IU)从内部或外部存储器执行32位程序提取,并为程序单元(PU)排队指令。程序单元解码指令,将任务指向AU和DU资源,并管理完全受保护的管道。预测分支功能可避免执行条件指令时的管道刷新。 5501外设...
发表于 10-09 14:55 279次 阅读
TMS320VC5501 定点数字信号处理器