s3c2440内存控制器与SDRAM基本测试
前面我们实验的LED和串口程序,是cpu发送地址给特定的寄存器,在寄存器中写相应的位,达到控制要求。
第一类是GPIO门电路如LED,第二类是协议类如串口,这些都不是cpu直接给地址信息,而是通过寄存器来控制的。
第三类是内存接口,cpu发出的地址可以直接传递给这种设备如nor flash,sdram,网卡。注意nand flash不属于这种类型。
关于SDRAM,可以参考这篇文章,这对于了解sdram很重要,非常有必要阅读一波。
《高手进阶,终极内存技术指南(完整/进阶版)》
这篇文章能够让你了解sdram这个内存介质。
然后,查看2440的芯片资料:

2440已经有针对sdram的控制器,2440可以直接通过地址线和sdram通信。
关于寄存器方面的东西就不再贴出来了。需要注意的是,操作sdram还是比较繁琐的,时序要求需要根据2440手册和所对应的sdram芯片手册进行配置。
现在,我们开始编写程序。
void sdram_init(void)
{
BWSCON = 0x22000000; BANKCON6 = 0x18001;
BANKCON7 = 0x18001; REFRESH = 0x8404f5; BANKSIZE = 0xb1; MRSRB6 = 0x20;
MRSRB7 = 0x20;
} int sdram_test(void)
{
volatile unsigned char *p = (volatile unsigned char *)0x30000000;
int i; // write sdram
for (i = ; i < ; i++)
p[i] = 0x55; // read sdram
for (i = ; i < ; i++)
if (p[i] != 0x55)
return -; return ;
}
上面是sdram的初始化和测试,直接通过地址访问sdram,我们对sdram进行写入,并且再读出来,看看是否相等。这样可以测试是否成功配置sdram。
#include "s3c2440_soc.h" #include "init.h" int main(void)
{ sdram_init(); if (sdram_test() == )
led_test(); return ;
}
如果测试通过,返回0,led被点亮,屏蔽掉sdram初始化之后,led不会再闪烁。
昨天实验到这里的时候以为韦老大代码有bug,其实是由于下载器有时候保持一直连接会让新下载的程序无响应,可以拔下下载器或再重启单板就可以看到现象了。
需要注意的是,如同sdram 这样的内存,访问地址时加上volatile能够让你少点烦恼。。。
s3c2440内存控制器与SDRAM基本测试的更多相关文章
- S3C2440内存控制器详解
S3C2440A Memory Map after Reset S3C2440的内存空间划分为不同的块,当CPU向内存控制器发出地址,内存控制器根据地址范围,发出对应片选信号到片选引脚,实现对不同设备 ...
- s3c2440裸机-内存控制器(五、SDRAM编程实现)
配置内存控制器-SDRAM编程配置 2440内存控制器共有13个寄存器. BANK0--BANK5只需要设置BWSCON和BANKCONx(x为0-5)两个寄存器: BANK6.BANK7外接SDRA ...
- s3c2440裸机-内存控制器(一、内存控制器的原理)
1.内存接口概念 S3C2440是个片上系统,有GPIO控制器(接有GPIO管脚(GPA-GPH)),有串口控制器 (接有TXD RXD引脚),有memory controller内存控制器,有Nan ...
- s3c2440裸机-内存控制器(二、不同位宽外设与CPU地址总线的连接)
不同位宽设备的连接 black 我们先看一下2440芯片手册上外设rom是如何与CPU地址总线连接的. 8bit rom与CPU地址线的连接 8bit*2 rom与CPU地址线的连接 8bit*4 r ...
- s3c2440裸机-内存控制器(三、norflash初始化-时序设置)
1.norflash与2440的硬件连接 2.初始化nor,配置nor时序 1.如图是S3C2440的内存控制器的可编程访问周期读写时序,里面的时间参数要根据外部设备的性能进行配置,这里先列出时间参数 ...
- s3c2440存储控制器详解
从上图可知,外部内存类的设备与存储管理器相连,那么CPU是怎样访问到内存的呢?通过存储管理器.CPU比较单纯,只会按照指令执行,CPU只负责发出地址,怎样找到内存类设备呢?这些都交给存储管理器来管理. ...
- 存储控制器和SDRAM 实验
S3C2440 存储控制器(memory controller)提供了訪问外部设备所需的信号,这是一种通过总线形式来訪问扩展的外设. S3C2440 的存储器控制器有下面的特性: 支持小字节序.大字 ...
- 回看《例说FPGA》---DDR2控制器集成与读写测试
回看<例说FPGA> ---DDR2控制器集成与读写测试 1.DDR2 IP核的配置 需要弄清楚的选项主要有: PLL reference clock frequency Memory c ...
- APP的CPU,内存,耗电,流量测试工具
APP的CPU,内存,耗电,流量测试工具下载地址,后续文章会介绍如何使用Emmagee.itest.gt APP应用的CPU,内存,耗电,流量调查 可和同类产品比较,使用GT等工具:CPU靠syste ...
随机推荐
- Git 提交更新到仓库(分布式版本控制系统)
1.Git 文件生命周期 工作目录下的每一个文件都不外乎这两种状态:已跟踪或未跟踪. 已跟踪的文件是指那些被纳入了版本控制的文件,在上一次快照中有它们的记录,在工作一段时间后,它们的状态可能处于未修改 ...
- 清理kafka zookeeper
; ; /; rm -rf /app/zookeeper/logs/*; rm -rf /app/pet_kafka_emds2_cluster/kafka-logs/*; rm -rf /app/p ...
- springboot 与 mybatis 中事务特性讲解
1 MyBatis自动参与到 spring 事务管理中,无需额外配置,只要org.mybatis.spring.SqlSessionFactoryBean引用的数据源与 DataSourceTrans ...
- Centos 二进制安装node.js
一.登录node的官网查看最新的稳定版,以及需要下载的Linux版本,你可以有多种Linux安装方式(源码安装,二进制安装等). 二.Node安装及配置 1.创建安装目录:创建目录node.js [r ...
- 国内高速下载Docker 以及 docker-compose 地址
下载地址: http://get.daocloud.io https://blog.csdn.net/nklinsirui/article/details/80610058
- 全栈开发——动手打造属于自己的直播间(Vue+SpringBoot+Nginx)
前言 大学的学习时光临近尾声,感叹时光匆匆,三年一晃而过.同学们都忙着找工作,我也在这里抛一份简历吧,欢迎各位老板和猎手诚邀.我们进入正题.直播行业是当前火热的行业,谁都想从中分得一杯羹,直播养活了一 ...
- Spring Security教程(四):自定义登录页
在前面的例子中,登陆页面都是用的Spring Security自己提供的,这明显不符合实际开发场景,同时也没有退出和注销按钮,因此在每次测试的时候都要通过关闭浏览器来注销达到清除session的效果. ...
- css animation和keyframes
keyframes应用在animation上,animation应用在元素上. <html> <style type="text/css"> .div1 { ...
- Java经典问题:传值与传引用?
转自:http://developer.51cto.com/art/201104/254715.htm Java到底是传值还是传引用?相信很少有人能完全回答正确.通常的说法是:对于基本数据类型(整型. ...
- Android Lock Pattern 图案解锁
参考链接:http://www.cnblogs.com/dyingbleed/archive/2012/12/03/2800007.html http://blog.csdn.net/way_ping ...