欢迎光临散文网 会员登陆 & 注册

(基于ARM的)微机原理与接口技术笔记(3)

2021-09-26 22:01 作者:会整活的剑人  | 我要投稿

咕了几天,不好意思.先说个题外话,专栏不能插入markdown有亿些难受.树莓派pico可以整活,国庆节考虑整个好活.

下面言归正传.先从一些计算机的存储系统说起.

某个A/D手册输出24位

这样的问题需要使用位运算去解决.假设输入A/D的数据存到变量a里面了,先检查符号位,然后去取原码,最后输出.

  • 一个数用什么类型表示是个严肃的问题,它影响了计算机如何存储,数据范围,精度.

  • 注意字符串求长strlen求的东西是什么.如果是宽字符wchar_t型的,求长wcslen

  • 一组固定大小的bit称为字(WORD)

    在《微机》中先默认一个字WORD字长32位

    但是Windows.h中有下面的定义typedef unsigned short WORD;即1个字16位)

  • 大小端

    • Big-Endian 高字节放低地址,低字节放高地址

    • Little-Endian 低字节放低地址,高字节放高地址

  • 查看内存:

    • 首地址是0x20002000地址从上到下增长.一个地址里面是一个byte

    • 如果在0x20002008取个东西.设想是下面C语言定义

    • 先看地址,再看地址增长方向,然后看一个格子多大.

    • 地址,可以灵活的折腾它.字节是什么样的先不变

    • 拿下面的内存片段举例:


内存片段


vs2019查看二进制文件,不是所有的二进制文件都能正常打开.

ARM概述

1.ARM及其应用

  • 处理器架构包括指令集,寄存器,处理器时序.

  • ARM (Advanced RISC Machines)公司成立于1990.11 ARM不生产处理器只生产IP,授权给生产商.

  • 还开发软件工具,调试器,总线结构,外设等.

  • 900片ARM/秒 700万片ARM/天

2.处理器体系

  • 《微机》用的ARM7/ARM7TDMI STR710F

  • STM32: ARM Cortex M3/M4

  • 树莓派4B: ARM Cortex A72

  • A系列追求高性能可以运行操作系统(android,linux等),R系列追求实时和性能,M系列低功耗用于单片机

  • 智能手机有>=10片ARM

ARM天梯图
转载某个公众号

同样是32位单片机,ST R710F的核是个比较老的ARM7TDMI. STM32和树莓派pico是相对比较新的Cortex-M核.树莓派4B则是4个64位Cortex-A72核.

3.ARM的工作状态

  • 32位架构

  • byte(字节) 8bit

  • halfword(半字) 16bit

  • word(字) 32bit

  • ARM状态 32位ARM指令集 处理32位

  • Thumb状态 16位Thumb指令集(是ARM指令集的子集)

  • ARM状态和Thumb状态可以互相切换 区别是指令长度不一样

  • 7个基本工作模式

    • User:非特权模式(其它的称为特权模式)

    • FIQ:快中断模式

    • IRQ:中断模式

    • Supervisior:管理模式 操作系统调用 复位/软中断 上电复位

    • Abort:存取异常

    • Undef:未定义指令异常

    • System:系统模式

4.ARM的寄存器

31个通用寄存器 6个状态寄存器

实际用的是16+2

r0到r7是共用的

r8-r12除了快中断以外通用,快中断有专用的r8-r12目的是加速快速响应

r13,r14有6组

r13 栈指针(stack pointer)表示当前执行

r14 链接寄存器 保存返回的地址

r15 程序计数器 正在"取指"的指令 要考虑三级流水线的问题

cpsr 当前程序状态寄存器

spsr 程序状态保存寄存器(异常状态时用于恢复)

ARM7TDMI的寄存器表


  • 程序状态寄存器(cpsr)

    • 31位到28位 条件位

    • 7位中断禁止位

    • 6位快中断禁止位

  • 程序计数器(pc)

    • 16位指令 按半字对齐

    • pc值bit[31:1]决定

    • bit[0]未定义

    • 32位指令 按字对齐

    • pc值bit[31:2]决定

    • bit[1:0]未定义

    • ARM状态

    • Thumb状态

  • 异常处理

    • 改变arm状态

    • 改变异常模式

    • 屏蔽中断

    • copy cpsr到spsr

    • 设置cpsr相应位

    • 存储返回地址

    • 修改pc指向终端入口

  • 异常后返回

    • 从spsr恢复cpsr

    • 恢复pc值


(基于ARM的)微机原理与接口技术笔记(3)的评论 (共 条)

分享到微博请遵守国家法律