[国嵌攻略][039][我从内部看内存]

内存分类

1.DRAM(动态RAM)

它的基本原件是小电容,电容可以在两极板上保留电荷,但是需要定期的刷新,否则数据会丢失。缺点是由于要定期刷新存储介质,存取速度较慢

DRAM分类:

1.1.SDRAM 同步动态随机存储器

同步:内存工作时需要有同步时钟,内部的命令的发送与数据的传输都是以该时钟为基准的

动态:存储阵列需要不断的刷新来保证数据不丢失

随机:是指数据不是线性依次存储,而是自由指定地址进行数据读写

1.2.DDR(Double Data Rate SDRAM双倍速率同步动态随机存储器)

DDR除了可以在时钟脉冲的上升沿传输数据,还可以在下降沿传输数据

1.3.DDR2

DDR2的传输速率是DDR传输速率的两倍

2.SRAM(静态RAM)

它是一种具有静止存取功能的内存,不需要定期刷新电路就能保存它内部存储的数据。优点是存取速度快,但缺点是功耗大,成本高

内存内部结构

1.表结构

内存的内部如同表格,数据存放在每个单元格中。数据读写时,先指定行号,再指定列号,就可以准确的找到需要的单元格。这张表格称为Logical Bank(L-Bank)。现在一个内存芯片通常有4个L-Bank

2.内存寻址

1.选择L-Bank 2.选择行地址 3.选择列地址

3.内存容量

内存容量 = L-Bank数目*单元格数目*单元格容量

时间: 2024-08-05 02:25:15

[国嵌攻略][039][我从内部看内存]的相关文章

[国嵌攻略][060][LCD工作原理解析]

LCD硬件体系 1.LCD液晶屏 液晶属于一种有机化合物,分子形状为长棒状,在不同的电流作用下,分子会有规律旋转,这样对光线产生一定的控制形成一个像素,而很多像素右可以构成完整的图像. LCD是Liquid Crystal Display的简称.液晶显示器按驱动方式可以分为TFT.GF.STN等种类,其中TFT屏在嵌入式系统中经常使用. 2.LCD驱动芯片 LCD驱动芯片是控制液晶分子发生变化的模块,它为液晶分子的偏转提供电压.通常情况下,LCD驱动芯片都与液晶屏面板做到一块电路板上. 3.LC

[国嵌攻略][162][USB协议分析]

USB设备逻辑结构 在USB设备的逻辑组织中,包含设备.配置.接口和端点4个层次.设备通常有一个或多个配置,配置通常有一个或多个接口,接口通常有零个或多个端点. USB设备描述符 当我们把USB设备(例如USB鼠标)插到我们的PC时,主机能够自动识别出我们的USB设备类型.在每一个USB设备内部,包含了固定格式的数据,通过这些数据,USB主机就可以获取USB设备的类型.生产厂商等信息.这些固定格式的数据,我们称之为USB描述符.标准设备有5种USB描述符:设备描述符.配置描述符.接口描述符.端点

[国嵌攻略][050][2440按键中断编程]

程序结构优化 1.把不同的功能放到不同的文件里面 2.一般在bootloader中不使用MMU,所以关掉MMU 按键初始化 1.打开开发板的原理图,找到按键 2.把对应的GPIO配置成中断,对中断源进行初始化 初始化中断控制器 1.SUBMASK和MASK必须要保证没有屏蔽中断,GPIO是不属于子中断,所以不用设置SUBMASK,MODE和Priority保存默认值即可,设置INTMSK(0x4A000008) 2.EINT4_7对应4个中断,分开设置需要设置EINTMASK(0x560000A

[国嵌攻略][042][代码搬移不可少]

ARM启动流程 1.处理器内部RAM的大小有限,不能拷贝全部的Bootloader,所以需要用内部RAM BL1的代码来拷贝BL2的代码到内存中.规范的方式的代码搬移的起点是flash,终点是内存.但是由于nand flash还没有初始化,所以先从内部ram中把BL1搬移到内存中.等到初始化nand flash后在采用规范的代码搬移方式. 2.起点SRAM地址:2440 0x00000000,6410 0x0C000000,210 0xD0020000 3.链接起始地址决定了程序第一行代码在内存

[国嵌攻略][155][I2C用户态驱动设计]

用户态驱动模型 用户态驱动模型首先是一个应用程序,其次是在这个用户程序中通过内核调用来驱动设备. IIC通用驱动代码 IIC通用驱动程序的代码在/drivers/i2c/i2c-dev.c中.一次读操作或者一次写操作就是一条消息. EEPROM用户态驱动 IIC通用设备对应/dev/i2c-0设备文件. 1.打开通用设备驱动 2.构造写数据到eeprom的消息 3.使用ioctl写入数据 4.构造从eeprom读数据的消息 5.使用ioctl读出数据 6.关闭设备 配置IIC驱动 make me

[国嵌攻略][057][串口控制台建立]

控制台分类 1.菜单型控制台,通过选择菜单来执行命令 2.解析型控制台,通过输入命令来执行命令 printf().scanf()函数移植 1.函数采用变参 2.打印信息到串口 3.关键在于把变参转换成字符串,相关函数需要从Linux内核或标准C库中移植 va_list args; va_start(args, fmt); vsprintf(buf, fmt, args); va_end(args); /***********************************************

[国嵌攻略][117][LED驱动程序设计]

LED程序设计 1.编写内核模块 2.搭建字符驱动框架 3.实现设备方法 头文件 <linux/io.h> writel() leddev.h //设备命令 #define LED_MAGIC 'L' //LED幻数 #define LED_ON _IO(LED_MAGIC, 0) //打开LED #define LED_OFF _IO(LED_MAGIC, 1) //关闭LED leddev.c /***********************************************

[国嵌攻略][112][使用字符设备驱动]

编译/安装驱动程序 在Linux系统中,驱动程序通常采用内核模块的程序结构来进行编码.因此编译/安装一个驱动程序,其实就是编译/安装一个内核模块. 示例: make insmod memdev.ko 创建设备文件 应用程序->设备文件->驱动程序 通过字符设备文件,应用程序可以使用相应的字符设备驱动程序来控制字符设备.创建字符设备文件的方法一般有两种: 1.使用mknod命令 mknod /dev/文件名 c 主设备号 次设备号 驱动程序通过主设备号与字符设备文件一一对应,驱动程序的主设备号可

[国嵌攻略][102][内核驱动开发环境搭建]

服务器环境搭建 1.配置tftp服务器 1.1.设置tftp目录 vim /etc/xinetd.d/tftp server_args             = -s .../tftp disable                 = no 1.2.启动tftp服务 /etc/init.d/xinetd restart 2.配置nfs服务器 2.1.设置nfs目录 vim /etc/exports .../nfs *(rw,sync,no_root_squash) 2.2.启动nfs服务 /