嵌入式基础知识笔记

Posted 想成为大师啊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了嵌入式基础知识笔记相关的知识,希望对你有一定的参考价值。

边学习,边了解


基地址和偏移地址

  • 打个比方,你找一个403房间,你要先到4楼,然后找第三个房间,那就是403。在这里,4楼就是基地址,3就是偏移地址。在arm中也是一样的,实际的地址就是基地址+偏移地址

然后我们在详细的讲解一下:

首先必须明白 cpu和内存的区别:

  • cpu是中央处理器,内存是物理数据存放的地方。cpu不直接存放数据而是通过内存来存放数据。
  • cpu和内存之间通过20条地址总线相连接,地址总线就是cpu通过地址找到对应的内存的物理数据的传递工具。
  • 计算机只能处理0,1 二进制数据,每一条线可以处理 0,1 两种类型数据,所以20根线总共能够组成
    2^20=1048576个不相同的地址,也就是能搜索
    1048576个地址范围内的内存。我们直到一个地址代表一个存储单元,一个存储单元能够存储
    1byte数据,那么也就是1048576个地址能够找到
    1048576个1byte数据=1M的数据,即20根地址总线总共能处理1M的内存数据。

疑问?cpu的寻址能力只能16位而达不到20位,这怎么办呢?

  • cpu的地址都是使用16进制表示的,最多也能够寻址2^16=65536,说明只能处理64K的内存数据。天啦,64K内存的计算机,能用?当然不能用啦,于是,段的概念横空出世。段,理解起来可以是假设将1G的数据划分为
    n个段,每一个段是64K(65536个地址),那么16位的寻址就能找到了这65536个地址了。

肯定还是不理解,对吧。那就说说段地址吧!!!

开始介绍段地址:

  • 每一个段的开头也就是每隔一个64K就是一个基地址(逻辑上基地址等于段地址),段内的数据的地址就是当前基地址的偏移地址。这时,段地址+偏移地址就能够找到真正的内存数据了。

cpu表示的地址为:基地址:偏移地址(偏移地址相当于在首地址的基础上 移动的距离)

插播:(起始地址顾名思义;相对地址和偏移地址的概念差不多;只不过用在不同的场合;偏移地址就是相对于基地址的偏移量就像是相对距离;基地址是一个段的起始地址,一般的20位地址总线,基地址为16位;逻辑地址就是基地址和偏移地址的复合形式,逻辑地址= 基地址 : 偏移地址;线性地址只是一个概念,表示地址成线性递增;物理地址要通过基地址和偏移地址的计算才能得出,一般的20位地址总线,其物理地址为:基地址 X 16(十进制)(相当于在基地址后面添一个0)+ 偏移地址)

比如,0BAC:0100

  • 0BAC是基地址,0100是偏移地址。0BAC是4位的十六进制,将它表示为16位的二进制数据为:0000 1011 1010
    1100。在这里,我们必须要把它转换成20位(也就是5位的16进制) 才能在20位地址总线中传递,也才能达到1G的数据访问范围。

那怎么转换成20位就能让数据传递到内存中找到物理数据了呢?

内存的物理地址 = 基地址*16(十进制)+偏移地址

内存的物理地址 = 0BAC16+0100 = 0BAC0 + 0100 = 0BBC0H;你看,0BBC0就是5位的十六进制数了,满足20位(45=20bit)就可以传递到内存了。所以,实际传递的二进制就是:0000 1011 1011 1100 0000,这样的话20根地址总线就能处理它了。

注意了,32位汇编,32根地址总线,它总共能够直接就找到2^32个地址,(即4294967296 byte数据 = 4G的内存),而且不再将内存分成一段一段的,所有的内存区域都是连续的呢!

附读:

  • 1.基地址 = 段地址 × 16
  • 2.一个大小为64KB的段
  • 起始地址 = 段寄存器的值(段地址) × 16 + 0
  • 结束地址 = 段寄存器的值(段地址) × 16 + 0ffffh
  • 3.8086cpu为16位,ip为16位寄存器,2^16 = 64(2^6) × 1024(2^10) = 64KB

·逻辑上,基地址 = 起始地址,理论上不等于。

一般我们所的物理地址指的是某个单位的起始地址。这个某个单位是字节、字、或者某一段。

  • a.对于字节单元的物理地址:因为只有一个存储单元,所以其物理地址就是该单元的编号。
  • b.对于字单元的物理地址:因为只有两个存储单位,所以其物理地址就该单元的低字节单元地址(起始地址=小编号,结束地址=起始地址+2-1=大编号)。
  • c.对于段的物理地址:段的内容大小为"容量",所以其物理地址(起始地址)就是该段的低字节单元的编号,结束地址=起始地址+容量-1.

以上是关于嵌入式基础知识笔记的主要内容,如果未能解决你的问题,请参考以下文章

嵌入式基础知识笔记

Linux系统基础知识-嵌入式迅为4412开发板学习笔记

《嵌入式操作系统内核调度》笔记:1 操作系统基础知识

驱动开发读书笔记. 0.06 嵌入式linux视频开发之预备知识

嵌入式Linux学习笔记基础命令。——Arvin

软考-嵌入式系统设计师-笔记:信息化和知识产权基础知识