为什么软件能操控硬件?
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;

软件编程控制硬件的关键——寄存器相关推荐

  1. 软件如何控制硬件、编译器和操作系统是否需要编译

    软件如何控制硬件.编译器和操作系统是否需要编译 ----作者:山野子 QQ:814577355 注:相信很多人都会有跟我一样的疑问,那就是软件如何控制硬件.编译器和操作系统是 否需要编译?为了解决这个 ...

  2. 5.计算机发展个人理解-电路终究是电路 软件如何控制硬件 代码如何操作硬件 硬件是怎么执行代码 代码如何执行 软件与硬件如何交互 计算机思维 抽象 封装 规范 屏蔽 协议分层...

    计算机只是逻辑电路 除了电路还是电路 计算机就是一堆逻辑电路 他并不知道你到底想要干什么,他也不会理解什么是文件,什么是进程 通电的瞬间,就好像你打开开关,灯泡发光一样 所有的一切都是通过通电来启动的 ...

  3. KEIL5软件编程中遇到很多关键固件库函数报错如

    问题:keil5软件编程遇到固件库文件报许多错误 出错原因:首先库文件基本不会错误,原因在于编译器版本选择不对,这里肯定选择了编译器6版本以上 解决办法:恢复到编译器5版本 解决步骤: 1.点击魔法棒 ...

  4. 利用usb远程控制linux,Linux编程控制硬件(5) ---- 操作USB手柄

    Andrew Haung 转载请注明作者及联络方式 学员项目需要用到JoyStick来远程控制云台.以前在用SDL在游戏中很简单的就可以控制.但是现在需要在Linux C下直接调用C来控制JoySti ...

  5. 多余的读写端口什么时候会对程序造成影响_程序员需要了解的硬核知识之控制硬件...

    应用和硬件的关系 我们作为程序员一般很少直接操控硬件,我们一般通过 C.Java 等高级语言编写的程序起到间接控制硬件的作用.所以大家很少直接接触到硬件的指令,硬件的控制是由 Windows 操作系统 ...

  6. 程序员需要了解的硬核知识之控制硬件

    应用和硬件的关系 我们作为程序员一般很少直接操控硬件,我们一般通过 C.Java 等高级语言编写的程序起到间接控制硬件的作用.所以大家很少直接接触到硬件的指令,硬件的控制是由 Windows 操作系统 ...

  7. c语言软件如何控制机器,硬件和软件是如何结合的?代码如何控制机器?

    原标题:硬件和软件是如何结合的?代码如何控制机器? 我们不妨从最底层开始往上走. 1. 二进制理论 众所周知,电脑,手机以及其他大量的电子设备,都是基于复杂的数字电路进行工作的.而数字电路则通过循环往 ...

  8. 软件项目开发流程以及人员职责 实行软件工程项目管理: ▲ 项目经理(负责人):项目经理(负责人)对整个项目负完全责任,是指导、控制、管理和规范某个软件和软/硬件系统建设的人,项目经理(负责人)是最终

    转载自csdn(danieldaniel19851023的专栏) 软件项目开发流程以及人员职责 实行软件工程项目管理: ▲ 项目经理(负责人):项目经理(负责人)对整个项目负完全责任,是指导.控制.管 ...

  9. 软件是怎样控制硬件的?

    软件是怎样控制硬件的? ★当你往计算机设备里看时,能看到一大推电路.芯片.电线,扬声器.接口和其他东西,这些都是硬件,你看不见摸不着的就是软件. 软件是计算机上所有的程序,或运行在机器上的代码.软件可 ...

最新文章

  1. javascript 遍历对象
  2. inno打包软件出现 main方法找不到
  3. mysql中int最大多少,int(11)最大長度是多少,MySQL中varchar最大長度是多少(轉)
  4. Python实训day10pm【os模块-处理Excel统计学生观看直播时长】
  5. linux中关闭归档备份,RMAN在归档/非归档,库关闭/mounted/开启状态下的备份
  6. Leetcode 22. 括号生成(递归+去重)
  7. 小学数学四年级上册计算机教案,新人教版四年级上册数学教案
  8. 蛋白工厂(rRNA)和物流系统(tRNA)的识别鉴定-Barrnap,Infernal和tRNA-scan-SE
  9. IT冷知识(持续更新中)
  10. 商务网站建设与维护【6】
  11. 用React Hooks与Web Animation API实现动效组件
  12. python中abs和fabs的区别_Python - abs vs fabs
  13. 物联网毕设 -- 基于STM32的心率检测
  14. hdu6194 string string string
  15. 云运维是什么?具体有什么服务内容?
  16. 无需注册账号从官网下载VMware Workstation
  17. UnityShader学习之路(01) 漫反射
  18. 1024——依然是写给你
  19. JQuery之Ajax方法
  20. java字符流 加密文件和解密文件

热门文章

  1. c语言怎么做步骤循环,C语言基础教程之循环
  2. linux bug 管理工具,【原创】Cynthia问题Bug管理软件2.0版发布啦
  3. 解决微信小程序ios端滚动卡顿的问题
  4. eSIM物联网卡促进物联网生态体系构建 开启智能新风向
  5. 腾讯企业邮箱登录入口在哪?知名企业邮箱品牌登录方法大全!
  6. today JavaScript 笔记和案例
  7. cad展点插件lisp使用_CAD自动画杆路插件Autolisp该怎么使用?
  8. Regsvr 32命令的用处
  9. 在线考试视频学习平台
  10. 华为机考108题(c++)(52-61)