Fork Me on GitHub

源码开放学ARM

LASO - Learn ARM with Source Open

首页         目录索引         资料下载         代码下载         联系作者        
下载PDF打印版本

硬件基础知识

处理器

内核

* 主流处理器体系结构
ARM
MIPS
PowerPC
68K/ColdFire
X86

* 冯·诺伊曼结构和哈佛结构
冯·诺伊曼结构
程序指令存储器和数据存储器合并在一起的存储器结构。
程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置,
因此程序指令和数据的宽度相同。

哈佛结构  
	将程序指令和数据分开存储,指令和数据可以有不同的数据宽度。  
	独立的程序总线和数据总线,分别作为 CPU 与每个存储器之间的专用通信路径,具有较高的执行效率。
  • RISC vs CISC RISC
    精简指令集计算机,减少指令条数、指令单周期执行。

    CISC
    复杂指令集计算机,指令复杂,指令周期长。

    控制器和特殊功能寄存器

    * 常用控制器
    内存控制器 MemC
    中断控制器 IntC
    定时器 Timer
    DMA控制器 DMAC
    串口控制器 UARTC

    * 特殊功能寄存器
    控制类 CON, CFG, DIV, MSK
    数据类 DAT, TXH/RXH, CNTO
    状态类 STAT, PND

    存储

    MMU 虚拟地址和物理地址

  • MMU
    Memory Management Unit 存储管理单元

  • CP15
    ARM 协处理器

  • TLB Translation Lookaside Buffer,即转换旁路缓存,是转换表的Cache,因此也经常被称为“快表” 。

    ref: http://blog.sina.com.cn/s/blog_5d6836440100bfgg.html
    http://www.cnblogs.com/timkyle/archive/2012/03/09/2388384.html

  • MMU/Core/SoC/SDRAM 之间的关系
    ProcessCore = ALU + Regsister(PC, R0-R15, CPSR)
    CORE = ProcessCore + CP15 + MMU + Cache
    SoC = CORE + SFR + iROM + iRAM
    SoC <–bus–> SDRAM

    * 重要结论
    无论在用户应用程序,还是在内核模块中,打印出的变量(全局和局部),函数名,代表的都是虚拟地址。
    裸板编程中用到的地址,从数据手册中得到的地址,都是没有启用MMU的,代表的都是物理地址。
    LDR/STR 命令中,涉及到的内存地址,从本质上说,都是虚拟地址;
    当MMU没有启用的情况下,上面的虚拟地址就等于物理地址;如果启动MMU,这些虚拟地址就会被映射为不同的物理地址。

内核空间和用户空间

  1. X86 Linux 内存设计
    0 - 3G 用户空间 (0x0 - 0xC0000000)
    3G - 4G 系统空间 (0xC0000000 - 0xFFFFFFFF)

  2. ARM Linux 内存设计
    0 - (3G-16M) 用户空间 (0x0 - 0xBF000000)
    (3G-16M) - 3G Kernel Modules (0xBF000000 - 0xC0000000)
    3G - 4G 系统空间 (0xC0000000 - 0xFF000000)

ref: http://blog.csdn.net/hzpeterchen/article/details/5363518

常见接口和总线

* 串口

  • I2C总线
  • USB总线
  • ISA总线
  • PCI总线 * 以太网接口

计算机接口大全

http://www.technibble.com/articlecontent/2009/07/computer-hardware-chart1.jpg

上一节 | 目录索引 | 下一节

blog comments powered by Disqus