• 内存模块 --- 基础扫盲


    SDRAM

    synchronous dynamic random-access memory
    同步动态随机存储器
    同步:需要同步时钟支持工作,内部命令的发送与数据的传输都是以这个时钟为基准
    动态:内部的存储阵列需要不断地刷新来保证数据不丢失
    随机:可以自由地在指定地址上进行数据读写

    一般开发板上常见多块SDRAM芯片来组成一大块可用存储空间的情况。mini2440开发板就是由两块32MB的SDRAM芯片来组成一块64MB的存储空间。SDRAM是实际的存储实体,而存储控制单元位于S2C2440A芯片内部,CPU通过它来控制SDRAM的存储器的访问与控制
    在这里插入图片描述
    存储控制单元支持的功能:
    1) 可通过软件选择大端、 小端。2) 总共8个存储器Bank, 每个Bank有128MB, 总共1GB地址空间。
    3) 除了Bank0( 16/32位) , 其他全部Bank都可编程访问宽度
    ( 8/16/32位) 。
    4) 6个存储器Bank为ROM、 SRAM等。 其余2个存储器Bank为
    ROM、 SRAM、 SDRAM等。
    5) 7个固定的存储器Bank起始地址, 1个可变的存储器Bank起始地
    址, 并且Bank大小可编程。
    6) 所有存储器Bank的访问周期可编程。
    7) 支持外部等待扩展总线周期。
    8) 支持SDRAM自刷新和掉电模式

    实际连接图片:
    mini2440开发板使用了两片外接的32MB的SDRAM芯片, 型号为HY57V561620或者MT48LC16M16A2, 它们并接在一起形成32位的总线数据宽度, 这样可以增加访问的速度, 并且它们的物理起始地址为0x30000000。
    在这里插入图片描述
    SDRAM内部是一个存储阵列,类似一个表格,有行有列,要访问这个阵列需要指定哪行哪列才能准确访问到表格中具体的一个单元。

    HY57V561620是32M的SDRAM芯片,4banks4MB16bit的SDRAM(4个逻辑块 Logic Bank)

    SDRAM一般包含4个bank,每个bank4MB大小

    操作系统内核、 应用软件、 数据, 都是放在这个里面的, CPU就能通过内存地址运行其中的程序和操作其中的数据

    Flash

    Flash存储器称为闪存
    ROM和RAM的优点它都有,不仅支持电子可擦除,可编程。而且还可以快速读写数据,而且数据不会因为断电而丢失。
    主要分为两种

    Norflash

    1) 有22根地址信号线和16根数据信号线。
    2) 掉电不会丢失数据。
    3) 支持“片上运行”。

    PC上的BIOS系统, CPU运行的第一个程序就是BIOS程序, 那个时候连内存都还没初始化呢。 再就是mini2440嵌入式开发板的上引导程序, 也可以说是BIOS, 它也完成了BIOS绝大部分工作, 只是叫法不同而已。 mini2440开发板在上电时,S3C2440芯片时钟和SDRAM芯片控制器都还没有初始化呢。 所以要借助Norflash存储技术。

    Norflash芯片内部的实现细节我们不需要知道, 我们只要知道mini2440开发板上有2MB的Norflash芯片, 它就相当于掉电不丢失数据的内存, 当然它的速度赶不上内存, 它里面存放的是一个引导程序。 我们还可以通过拨动mini2440开发板上一个开关从Norflash芯片开始启动, 并且将它连接在S3C2440A的Bank0上, 开始的物理地址是0,S3C2440A中的ARM920TCPU, 一上电就是从地址0开始执行第1条指令, 这样刚好就运行了Norflash芯片中的引导程序。

    Nandflash

    Nandflash也是Flash闪存的一种, 其内部采用非线性单元设计模式, 为固态大容量闪存的实现提供了廉价有效的解决方案。 Nandflash存储器具有容量较大、 改写速度快等优点, 适用于大量数据的存储, 广泛应用于嵌入式产品中。

    由于内部结构相对简单, Nandflash芯片使用复杂的I/O口来串行地存取数据, 各个产品或厂商的方法可能各不相同。 8个引脚用来传送控制、 地址和数据信息。 所以不能像Norflash、 SDRAM等芯片, 可以直接和CPU等设备相连并且寻址到每个存储字节。 因此Nandflash芯片需要为它设计专门的控制器才能和其他设备进行通信。

    对S3C2440A芯片上的Nandflash控制器的编程步骤如下:
    写命令寄存器, 向Nandflash控制器写入相关命令, 对应于
    Nandflash芯片的命令周期。
    写地址寄存器, 向Nandflash控制器写入相关地址, 比如上面输入的读写命令是需要读写地址的, 对应于Nandflash芯片的地址周期。
    读/写数据寄存器, 读/写入数据到Nandflash存储器, 根据上面相应的命令做相应的动作, 可能是读也可能是写数据, 对应于Nandflash芯片的读/写周期。
    读Nandflash控制器的主ECC寄存器和备份ECC寄存器。 对数据进行校验。

  • 相关阅读:
    ClickHouse基本原理
    2.摄像机标定
    java成员等讲解
    高新技术企业申报条件
    KASan介绍
    Pytorch 转ONNX详解
    Ubuntu源码编译gdal3.6.2
    vue2/3vuecli4项目中axios-mock-adapter和axios搭配使用,前端自己mock数据
    移动端研发技术的进化历程
    20、Python -- 变量作用域、局部函数
  • 原文地址:https://blog.csdn.net/weixin_43604927/article/details/127999379