前面我们实验的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 sdramfor (i = 0; i < 1000; i++)p[i] = 0x55;// read sdramfor (i = 0; i < 1000; i++)if (p[i] != 0x55)return -1;return 0;
}

上面是sdram的初始化和测试,直接通过地址访问sdram,我们对sdram进行写入,并且再读出来,看看是否相等。这样可以测试是否成功配置sdram。

#include "s3c2440_soc.h"#include "init.h"int main(void)
{sdram_init();if (sdram_test() == 0)led_test();return 0;
}

如果测试通过,返回0,led被点亮,屏蔽掉sdram初始化之后,led不会再闪烁。

昨天实验到这里的时候以为韦老大代码有bug,其实是由于下载器有时候保持一直连接会让新下载的程序无响应,可以拔下下载器或再重启单板就可以看到现象了。

需要注意的是,如同sdram 这样的内存,访问地址时加上volatile能够让你少点烦恼。。。

转载于:https://www.cnblogs.com/yangguang-it/p/7858121.html

s3c2440内存控制器与SDRAM基本测试相关推荐

  1. 新1期_012课_内存控制器与SDRAM

    一.基础知识 各种外设有各自的控制器.例如GPIO控制器可控制GPIO输入输出,UART 控制器可以控制不同脉冲的产生 等.而CPU的作用是向各种控制器写入数据,CPU是通过地址线区别不同的外设控制器 ...

  2. 韦东山ARM第一期作业(三)内存控制器和SDRAM

    文章目录 01 - 作业所在路径 02 - 作业描述 03 - 作业解答 01 - 作业所在路径   ARM裸机1期加强版\源码文档图片\文档图片\第012课_内存控制器与SDRAM 02 - 作业描 ...

  3. 内存控制器与SDRAM

    S3C2440统一编址包含了GPIO,串口.I2C.SDRAM等设备类型,但是这个芯片Nandflash不是在统一编址范围内,Nandflash控制器是在统一编址中的.其中Nandflash的地址线也 ...

  4. 韦一之内存控制器,2440地址空间,NOR flash和SDRAM(012课)

    大部分内容来自韦东山老师视频及博客:https://blog.csdn.net/thisway_diy/article/details/79389530 一个可参考的很好很详细的博客文档:https: ...

  5. 内存技术:入门和测试挑战

    人们一直希望计算机内存变得容量更大.速度更快.功率更低.物理尺寸更小.这些需求正推动着 DRAM 技术不断发展.在过去几年中,多次技术增强已经推进了主流DRAM 的发展,如 SDRAM (同步 DRA ...

  6. 内存控制器与SDRAM_内存接口概念

    辅线1_硬件知识_内存接口概念 如图是S3C2440是个片上系统,有GPIO控制器(接有GPIO管脚),有串口控制器 (接有TXD RXD引脚). 配置GPIO控制器相应的寄存器,即可让引脚输出高低电 ...

  7. 存储控制器(SDRAM操作)

    什么是存储控制器 2440是32位单片机,进行数据访问时通过32位地址访问. CPU发出32位地址信号给存储控制器,存储控制器根据地址信号设置片选信号及地址总线,将相应数据通过数据总线传回存储控制器, ...

  8. XLINX系列之Zynq-7000系列DDR内存控制器详解

    1DDR内存控制器介绍 DDR内存控制器支持DDR2,DDR3,DDR3L和LPDDR2设备,包括三个主要块:AXI存储器端口接口(DDRI),带有交易调度器(DDRC)的核心控制器和具有数字PHY( ...

  9. memcpy()内存拷贝和赋值操作效率测试

    比较memcpy()内存拷贝和"="赋值操作效率,测试代码如下 #include <stdio.h> #include <malloc.h> #includ ...

最新文章

  1. react 子组件获取变量属性值
  2. 鉴智机器人高薪诚聘 | 3D视觉、SLAM、SLAM/VIO融合定位算法工程师等多个岗位
  3. 3D-HEVC视频编码技术
  4. C语言基本数据结构之二(二叉树的三种遍历,节点数以及深度算法)
  5. opencv 直线检测笔记
  6. java的知识点27——lambda推导
  7. 【深度学习】网络中隐含层神经元节点的个数(需要学习的特征数目)
  8. CSS 实现文字、图片垂直对齐(vertical-align)
  9. python随机图片api_抓取随机图片
  10. ARCore:从Android Studio开始
  11. sde mysql_ArcSDE:企业级地理数据库概述
  12. 北京市中小学信息学竞赛汇总 徐于铃
  13. 安卓Dalvik VM虚拟机
  14. win11如何快速关机 windows11快捷键关机的设置方法
  15. R语言 cor与lm
  16. python调用百度地图API爬取西安市POI数据
  17. Unity中的网络编程
  18. 旋转编码器EC11调试心得
  19. Unity3D 录音功能 音频保存
  20. 巴比特 | 元宇宙每日必读:粤港澳大湾区出台首个“元宇宙10条”,“三个五百万”将扶持哪些赛道?...

热门文章

  1. sqoop——将mysql数据库的数据表导入到hdfs上
  2. 验证二叉搜索数—leetcode98
  3. Android安卓APK反编译逆向
  4. hibernate报错 net.sf.json.util.CycleDetectionStrategy$StrictionStrategyRepeatedReferenceAsObject
  5. 启动ucosii之OSInit()
  6. C++ 程序内存泄漏检测方法
  7. 今天在网上看到一个帖子,怎么样锻炼自己的大脑
  8. CPP中的this指针
  9. linux, configure --prefix=/有什么用
  10. 硬件加速会使电脑黑屏吗?