软件编程控制硬件的关键——寄存器
为什么软件能操控硬件?
1、 什么是寄存器?寄存器属于CPU外设的硬件组成部分。
2、 CPU可以像访问内存一样访问寄存器(IO与内存统一编址)
3、 寄存器是CPU硬件设计者制定的,目的是留作外设被编程控制的“活动开关”后台操作。
一个寄存器的地址是多少,某个地址属于那个外部设备,作用是什么?要查看硬件数据手册。
4、 正如汇编指令是CPU的编程接口API一样,寄存器是外设硬件的软件编程接口API。使用软件编程控制某一硬件其实就是编程读写该硬件的寄存器。程序(自己写的代码)能够操控硬件主要是操作寄存器。
5、 寄存器中每个bit位都有特定含义,因此编程操作需要对应数据手册用位操作来实现。
6、 单个寄存器位宽(一个寄存器能够设置的位数)一般和CPU的位宽一样,以实现最佳访问效率。
7、 寄存器分类:(两类)
通用寄存器(类似于C语言中定义的变量):在设计CPU(我的理解是CPU的变量)时功能没有确定,ARM中含有37个,是CPU的组成部分,CPU的很多活动都需通用寄存器的支持和参与,每个bit没有确定的特殊含义,编程人员读写修改来确定。通用寄存器通过用自己的名来访问。
特殊功能寄存器(special function register)SFR:特殊功能寄存器是外设的组成部分,也就是不在CPU中,在外设中。我们通过访问外设的SFR来编程操控这个外部设备。这就是编程控制的方法(IO与地址通一编址)。
SFR特殊理解为两方面:
每个几个bit位设计死了某种确定功能,不能编程改变;
不是通用的,是专门给某个外部设备定制的,和某个外部设备绑定的,通过设置SFR中某几位可以实现特定功能;
编程访问寄存器的方法:
ldr r1, =0xE0200280
str r0, [ r1 ]
mov r0, #0
int * p = ( int * )0x30008000;
*p = 16;
软件编程控制硬件的关键——寄存器相关推荐
- 软件如何控制硬件、编译器和操作系统是否需要编译
软件如何控制硬件.编译器和操作系统是否需要编译 ----作者:山野子 QQ:814577355 注:相信很多人都会有跟我一样的疑问,那就是软件如何控制硬件.编译器和操作系统是 否需要编译?为了解决这个 ...
- 5.计算机发展个人理解-电路终究是电路 软件如何控制硬件 代码如何操作硬件 硬件是怎么执行代码 代码如何执行 软件与硬件如何交互 计算机思维 抽象 封装 规范 屏蔽 协议分层...
计算机只是逻辑电路 除了电路还是电路 计算机就是一堆逻辑电路 他并不知道你到底想要干什么,他也不会理解什么是文件,什么是进程 通电的瞬间,就好像你打开开关,灯泡发光一样 所有的一切都是通过通电来启动的 ...
- KEIL5软件编程中遇到很多关键固件库函数报错如
问题:keil5软件编程遇到固件库文件报许多错误 出错原因:首先库文件基本不会错误,原因在于编译器版本选择不对,这里肯定选择了编译器6版本以上 解决办法:恢复到编译器5版本 解决步骤: 1.点击魔法棒 ...
- 利用usb远程控制linux,Linux编程控制硬件(5) ---- 操作USB手柄
Andrew Haung 转载请注明作者及联络方式 学员项目需要用到JoyStick来远程控制云台.以前在用SDL在游戏中很简单的就可以控制.但是现在需要在Linux C下直接调用C来控制JoySti ...
- 多余的读写端口什么时候会对程序造成影响_程序员需要了解的硬核知识之控制硬件...
应用和硬件的关系 我们作为程序员一般很少直接操控硬件,我们一般通过 C.Java 等高级语言编写的程序起到间接控制硬件的作用.所以大家很少直接接触到硬件的指令,硬件的控制是由 Windows 操作系统 ...
- 程序员需要了解的硬核知识之控制硬件
应用和硬件的关系 我们作为程序员一般很少直接操控硬件,我们一般通过 C.Java 等高级语言编写的程序起到间接控制硬件的作用.所以大家很少直接接触到硬件的指令,硬件的控制是由 Windows 操作系统 ...
- c语言软件如何控制机器,硬件和软件是如何结合的?代码如何控制机器?
原标题:硬件和软件是如何结合的?代码如何控制机器? 我们不妨从最底层开始往上走. 1. 二进制理论 众所周知,电脑,手机以及其他大量的电子设备,都是基于复杂的数字电路进行工作的.而数字电路则通过循环往 ...
- 软件项目开发流程以及人员职责 实行软件工程项目管理: ▲ 项目经理(负责人):项目经理(负责人)对整个项目负完全责任,是指导、控制、管理和规范某个软件和软/硬件系统建设的人,项目经理(负责人)是最终
转载自csdn(danieldaniel19851023的专栏) 软件项目开发流程以及人员职责 实行软件工程项目管理: ▲ 项目经理(负责人):项目经理(负责人)对整个项目负完全责任,是指导.控制.管 ...
- 软件是怎样控制硬件的?
软件是怎样控制硬件的? ★当你往计算机设备里看时,能看到一大推电路.芯片.电线,扬声器.接口和其他东西,这些都是硬件,你看不见摸不着的就是软件. 软件是计算机上所有的程序,或运行在机器上的代码.软件可 ...
最新文章
- javascript 遍历对象
- inno打包软件出现 main方法找不到
- mysql中int最大多少,int(11)最大長度是多少,MySQL中varchar最大長度是多少(轉)
- Python实训day10pm【os模块-处理Excel统计学生观看直播时长】
- linux中关闭归档备份,RMAN在归档/非归档,库关闭/mounted/开启状态下的备份
- Leetcode 22. 括号生成(递归+去重)
- 小学数学四年级上册计算机教案,新人教版四年级上册数学教案
- 蛋白工厂(rRNA)和物流系统(tRNA)的识别鉴定-Barrnap,Infernal和tRNA-scan-SE
- IT冷知识(持续更新中)
- 商务网站建设与维护【6】
- 用React Hooks与Web Animation API实现动效组件
- python中abs和fabs的区别_Python - abs vs fabs
- 物联网毕设 -- 基于STM32的心率检测
- hdu6194 string string string
- 云运维是什么?具体有什么服务内容?
- 无需注册账号从官网下载VMware Workstation
- UnityShader学习之路(01) 漫反射
- 1024——依然是写给你
- JQuery之Ajax方法
- java字符流 加密文件和解密文件