您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

软件怎么样让硬件动起来的?为什么操作寄存器就能操作硬件?

时间:2023-05-12 14:31:17  来源:今日头条  作者:晓亮Albert

上一篇文章我们讲到,软件其实只需要读写寄存器,就可以实现操作硬件。比如我们要点亮一个led灯,只需要对应的GPIO寄存器位写1,对应引脚就会输出高电平,点亮led灯。

于是出现很多问题,为什么写寄存器就能出高电平等之类的问题?下面就本篇我来串一下,一一解答一下。

我先说明几点:

  • 其实对于软件工程师而言,知道寄存器是软硬件之间的纽带就够了,因为这样你已经就能操控硬件了。
  • 但是学习一下MCU内部 GPIO电路对于高嵌入式或者硬件工程师我觉得有必要,至少加强你对硬件的认知,而且不同芯片内部电路都不一样,所以就有了这篇文章。

进入正题,因为不同的MCU的内部GPIO电路实现不一样,甚至像51单片机的GPIO 不同的组实现都不一样,比如51单片机的P0和P1 IO口内部电路就不一样。所以我们这里仅仅是以51单片机的P0 GPIO内部电路为例来讲解的,其它芯片的大家自己举一反三。

下图是51单片机的P0口的GPIO内部电路框图:

 

 

P0 GPIO部分电路主要有以下构成:

1.P0.x输出锁存器(就是寄存器一个单元,寄存器有多个位,就是D触发器)

2. 2个三态缓冲器,用于控制读引脚还是读锁存器

3.驱动电路,V1,V2两个场效应晶体管

4.输出控制部分,与门、反相器、转换开关MUX各一个

下面我们来走一下流程:

  • 我们知道LED=1这行代码就是告诉CPU将寄存器对应的位设置成1。这行代码编译后转换成二进制码给CPU执行,CPU看到这条指令就知道,你让将P0寄存器某位设置成1。有人可能会问,那个指令码是多少?这个是CPU设计指令集约定的,不同CPU不一样。
  • CPU执行这条指令时,会发出一个0(也就是低电平)到GPIO0 的上图与门控制端,这样会使与门关闭,使地址/数据总线送来的信号无法通过与门。同时控制转换开关MUX,图中虚线部分,使电子转换开关与锁存器的非Q端联通。可能有人会问信号是什么?就是高低电压电信号。
  • 同时,锁存器的CP端会会有写信号,表示要开始往锁存器写数据了,cpu通过内部总线将1这个数据通过D端发给锁存器,锁存器会从非Q端处输出反信号低电平0。
  • 非Q端经过MUX与V2连接,会使场效应管V2截止,这样P0.X引脚就与地断开,如果引脚外接了上拉电阻,就会是P0.X输出是高电平1.
  • 如果P0.X接了个led灯,led N极接了地,就会PN节导通,led就亮了。

这就是整个过程。

总结一下,上面我们将整个脉络讲了一遍。大家发现,其实控制led灯还是MCU内部电路,没错,确实是这样,但是软件代码被CPU执行之后,CPU会使相关寄存器改变状态为1,连带后面整个电路就会连锁反应,导致最后引脚输出高电平。而寄存器和内存一样,CPU通过地址总线寻址是可以找到它并改写它,所以才有上篇文章我说寄存器是软硬件的接口纽带。你只需要操作寄存器就可以操作硬件。

当然强调一点,不同芯片它的实现电路不一样,这里我们举这个例子主要是让你理解软硬件怎么联系起来的这种模式或者方法,至于具体电路都是芯片设计公司的事情。



Tags:软件   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
系统优化工具,Ultimate Windows Tweaker软件体验
电脑上的Windows优化工具年年都有,每年还会翻着花样地出现新东西,都不带重复的。每个人都可以上来折腾一番Windows...从这个角度来说,Windows系统还挺“稳定”的,经得起各种用户...【详细内容】
2024-04-10  Search: 软件  点击:(2)  评论:(0)  加入收藏
Win11 24H2狠心封杀!第三方UI修改软件不能用了
快科技4月8日消息,如果你正在用一些可以修改系统UI界面、功能的第三方软件,一定不要升级Windows 11 24H2 RTM正式版,因为它们都被悄无声息地封杀了。据多位网友反馈,Windows 11...【详细内容】
2024-04-08  Search: 软件  点击:(7)  评论:(0)  加入收藏
即将过时的 5 种软件开发技能!
作者 | Eran Yahav编译 | 言征出品 | 51CTO技术栈(微信号:blog51cto) 时至今日,AI编码工具已经进化到足够强大了吗?这未必好回答,但从2023 年 Stack Overflow 上的调查数据来看,44%...【详细内容】
2024-04-03  Search: 软件  点击:(6)  评论:(0)  加入收藏
知名软件创始人自杀,遗言称被妻子索要千万逼死,最新消息:翟欣欣认罪!
据红星新闻,3月25日,记者从一可靠信源处获悉,翟欣欣被抓后,目前已认罪认罚,本案涉嫌敲诈的金额巨大,翟欣欣或将获刑10年以上。此外,该案开庭时间待定,苏享茂家属或将提起刑事附带民...【详细内容】
2024-03-26  Search: 软件  点击:(9)  评论:(0)  加入收藏
生成式AI将在十个方面改变软件开发
上个世纪90年代,当人们提起软件编程时,通常意味着选择一个编辑器,将代码检入CVS或SVN代码库,然后将代码编译成可执行文件。与之对应的Eclipse和Visual Studio等集成开发环境(IDE)...【详细内容】
2024-03-11  Search: 软件  点击:(12)  评论:(0)  加入收藏
轻松实现Centos系统的软件包安装管理:yum指令实战详解
yum 是一种用于在 CentOS、Red Hat Enterprise Linux (RHEL) 等基于 RPM 的 Linux 发行版上安装、更新和管理软件包的命令行工具。它可以自动解决软件包依赖关系,自动下载并...【详细内容】
2024-02-27  Search: 软件  点击:(54)  评论:(0)  加入收藏
Win10关闭自带杀毒软件教程,两招彻底把Windows Defender关闭
很多玩辅助的小伙伴电脑一般都会安装第三方杀毒软件,如360、火绒,管家等,但是Win10系统的话还自带了Windows Defender得杀毒软件,在打开一些包含EXE程序的时候,Windows Defender...【详细内容】
2024-02-26  Search: 软件  点击:(1)  评论:(0)  加入收藏
ai绘画在线的方法有哪些?一分钟分享5款软件
ai绘画在线的方法有哪些?随着人工智能技术的飞速发展,AI绘画在线软件逐渐成为创意领域的热门话题。这些软件利用先进的算法和机器学习技术,让用户可以轻松地创作出独具特色的艺...【详细内容】
2024-02-07  Search: 软件  点击:(71)  评论:(0)  加入收藏
黑客利用iOS系统中的三个零日漏洞在iPhone上安装间谍软件
2月7日,据谷歌威胁分析小组(TAG)发布的报告,黑客成功利用存在于苹果iOS系统中的三个零日漏洞,在iPhone上安装了由Variston开发的间谍软件。Variston是一家位于巴塞罗那的网络公司...【详细内容】
2024-02-07  Search: 软件  点击:(57)  评论:(0)  加入收藏
手机安全防范指南,帮助你避免手机病毒、恶意软件、诈骗信息的侵害
以下是一些手机安全防范指南,可以帮助你避免手机病毒、恶意软件、诈骗信息的侵害: 谨慎下载未知来源的应用程序:不要随意下载未知来源的应用程序,因为这些应用程序可能包含恶意...【详细内容】
2024-02-01  Search: 软件  点击:(64)  评论:(0)  加入收藏
▌简易百科推荐
即将过时的 5 种软件开发技能!
作者 | Eran Yahav编译 | 言征出品 | 51CTO技术栈(微信号:blog51cto) 时至今日,AI编码工具已经进化到足够强大了吗?这未必好回答,但从2023 年 Stack Overflow 上的调查数据来看,44%...【详细内容】
2024-04-03    51CTO  Tags:软件开发   点击:(6)  评论:(0)  加入收藏
跳转链接代码怎么写?
在网页开发中,跳转链接是一项常见的功能。然而,对于非技术人员来说,编写跳转链接代码可能会显得有些困难。不用担心!我们可以借助外链平台来简化操作,即使没有编程经验,也能轻松实...【详细内容】
2024-03-27  蓝色天纪    Tags:跳转链接   点击:(13)  评论:(0)  加入收藏
中台亡了,问题到底出在哪里?
曾几何时,中台一度被当做“变革灵药”,嫁接在“前台作战单元”和“后台资源部门”之间,实现企业各业务线的“打通”和全域业务能力集成,提高开发和服务效率。但在中台如火如荼之...【详细内容】
2024-03-27  dbaplus社群    Tags:中台   点击:(9)  评论:(0)  加入收藏
员工写了个比删库更可怕的Bug!
想必大家都听说过删库跑路吧,我之前一直把它当一个段子来看。可万万没想到,就在昨天,我们公司的某位员工,竟然写了一个比删库更可怕的 Bug!给大家分享一下(不是公开处刑),希望朋友们...【详细内容】
2024-03-26  dbaplus社群    Tags:Bug   点击:(5)  评论:(0)  加入收藏
我们一起聊聊什么是正向代理和反向代理
从字面意思上看,代理就是代替处理的意思,一个对象有能力代替另一个对象处理某一件事。代理,这个词在我们的日常生活中也不陌生,比如在购物、旅游等场景中,我们经常会委托别人代替...【详细内容】
2024-03-26  萤火架构  微信公众号  Tags:正向代理   点击:(11)  评论:(0)  加入收藏
看一遍就理解:IO模型详解
前言大家好,我是程序员田螺。今天我们一起来学习IO模型。在本文开始前呢,先问问大家几个问题哈~什么是IO呢?什么是阻塞非阻塞IO?什么是同步异步IO?什么是IO多路复用?select/epoll...【详细内容】
2024-03-26  捡田螺的小男孩  微信公众号  Tags:IO模型   点击:(9)  评论:(0)  加入收藏
为什么都说 HashMap 是线程不安全的?
做Java开发的人,应该都用过 HashMap 这种集合。今天就和大家来聊聊,为什么 HashMap 是线程不安全的。1.HashMap 数据结构简单来说,HashMap 基于哈希表实现。它使用键的哈希码来...【详细内容】
2024-03-22  Java技术指北  微信公众号  Tags:HashMap   点击:(11)  评论:(0)  加入收藏
如何从头开始编写LoRA代码,这有一份教程
选自 lightning.ai作者:Sebastian Raschka机器之心编译编辑:陈萍作者表示:在各种有效的 LLM 微调方法中,LoRA 仍然是他的首选。LoRA(Low-Rank Adaptation)作为一种用于微调 LLM(大...【详细内容】
2024-03-21  机器之心Pro    Tags:LoRA   点击:(12)  评论:(0)  加入收藏
这样搭建日志中心,传统的ELK就扔了吧!
最近客户有个新需求,就是想查看网站的访问情况。由于网站没有做google的统计和百度的统计,所以访问情况,只能通过日志查看,通过脚本的形式给客户导出也不太实际,给客户写个简单的...【详细内容】
2024-03-20  dbaplus社群    Tags:日志   点击:(4)  评论:(0)  加入收藏
Kubernetes 究竟有没有 LTS?
从一个有趣的问题引出很多人都在关注的 Kubernetes LTS 的问题。有趣的问题2019 年,一个名为 apiserver LoopbackClient Server cert expired after 1 year[1] 的 issue 中提...【详细内容】
2024-03-15  云原生散修  微信公众号  Tags:Kubernetes   点击:(6)  评论:(0)  加入收藏
站内最新
站内热门
站内头条