当前位置: 首页 > news >正文

S3C2440-SDRAM

哈尔滨理工大学软件工程专业08-7李万鹏原创作品,转载请标明出处

http://blog.csdn.net/woshixingaaa/archive/2010/12/14/6075190.aspx

我板子的SDRAM是64M,从0x30000000~0x3fffffff,被BANK6选中。

//64MB
// 0x30000000 ~ 0x30ffffff : Download Area (16MB) Cacheable
// 0x31000000 ~ 0x33feffff : Non-Cacheable Area
// 0x33ff0000 ~ 0x33ff47ff : Heap & RW Area
// 0x33ff4800 ~ 0x33ff7fff : FIQ ~ User Stack Area
// 0x33ff8000 ~ 0x33fffeff : Not Useed Area
// 0x33ffff00 ~ 0x33ffffff : Exception & ISR Vector Table

我的开发板要求在0x32000000这个地址运行,也就是在Non-Cacheable Area这段内存区域。SDRAM内部是一个存储阵列,阵列就如同表格一样,将数据“填进去”。和表格的检索原理一样,先指定一个行(Row),再指定一个列(Column),就可以准确的找到所需要的存单元格,这就是SDRAM寻址的基本原理。这个单元格被成为存储单元,这个表格就是逻辑BANK(Logic Bank,下文称L-Bank),SDRAM一般含有4个L-Bank。SDRAM有13个控制寄存器。

  1. BWSCON总线宽度与等待状态控制寄存器
  2. BANKCON0~BANKCON7,BANK控制寄存器
  3. REFRESH,刷新控制寄存器
  4. BANKSIZE寄存器
  5. MRSRB6,MRSRB7,模式寄存器集寄存器

下面完成一个程序让跑马灯程序在0x0地址运行,如果是Nandflash启动,也就是在steppingstone中运行,把它搬到SDRAM中运行。程序还是有问题有待于改进。

SADD EQU 0x30000000 BWSCONS EQU 0x48000000 AREA |DATA|,CODE,READONLY ENTRY IMPORT LedMain bl disableWTD bl initmem bl Copy_Sdram ldr pc,=on_sdram on_sdram ldr sp,=0x34000000 bl LedMain disableWTD mov r1,#0x53000000 mov r2,#0 str r2,[r1] mov pc,lr initmem ldr r1,=SDRAM_add ldr r2,=BWSCONS add r3,r2,#52 cp1 ldr r4,[r1],#4 str r4,[r2],#4 cmp r2,r3 bne cp1 mov pc,lr Copy_Sdram mov r1,#0 add r2,r1,#4096 ldr r4,=SADD cp2 ldr r3,[r1],#4 str r3,[r4],#4 cmp r1,r2 bne cp2 mov pc,lr ALIGN 4 SDRAM_add DCD 0x22011110 ;BWSCON DCD 0x00000700 ;BANKCON0 DCD 0x00000700 ;BANKCON1 DCD 0x00000700 ;BANKCON2 DCD 0x00000700 ;BANKCON3 DCD 0x00000700 ;BANKCON4 DCD 0x00000700 ;BANKCON5 DCD 0x00018005 ;BANKCON6 DCD 0x00018005 ;BANKCON7 DCD 0x008c07a3 ;REFRESH DCD 0x000000b1 ;BANKSIZE DCD 0x00000030 ;MRSRB6 DCD 0x00000030 ;MRSRB7 END

#define GPFCON (*(volatile unsigned *)0x56000050) #define GPFDAT (*(volatile unsigned *)0x56000054) #define GPFUP (*(volatile unsigned *)0x56000058) int LedMain() { void Delay(unsigned int); unsigned char ledtab[]={0xf7,0xef,0xdf,0xbf}; int i; GPFUP&=0XFFFFFF87; //使能上拉F3-6 GPFCON&=0XC03f; GPFCON|=0X1540; //将F3-6设为输出口 while(1) { for(i=0;i<4;i++) { GPFDAT=ledtab[i]; Delay(670); } } return(0); } void Delay(unsigned int x ) { unsigned int i,j,k; for(i=0;i<=x;i++) for(j=0;j<=0xff;j++) for(k=0;k<=0xff;k++); }

相关文章:

  • css布局模型
  • 延长笔记本电脑寿命的四个简单方法
  • 用 PHP 读取文件的正确方法
  • 如何开启Centos6.4系统的SSH服务
  • myEclipse和eclipse修改或复制项目名称后-更新部署名称
  • 编译静态expect现undefined reference to `openpty' 错误解决方法
  • css布局
  • [分类整理I]微软等100题系列V0.1版:c/c++基础面试题集锦
  • iOS项目开发中的知识点与问题收集整理②(Part 二)
  • [分类整理II]微软等100题系列V0.1版:链表面试题集锦
  • 网游定位人群应当有底线!
  • iOS进阶学习笔记
  • TCP/IP协议原理与应用笔记02:断点续传
  • sync_inodes和sync_filesystems
  • hdu 1575 Tr A
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • (三)从jvm层面了解线程的启动和停止
  • Angular6错误 Service: No provider for Renderer2
  • create-react-app项目添加less配置
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • vue脚手架vue-cli
  • 从重复到重用
  • 前端临床手札——文件上传
  • 前端面试总结(at, md)
  • Prometheus VS InfluxDB
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • (07)Hive——窗口函数详解
  • (1)(1.9) MSP (version 4.2)
  • (4)logging(日志模块)
  • (k8s中)docker netty OOM问题记录
  • (二)丶RabbitMQ的六大核心
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (原創) 物件導向與老子思想 (OO)
  • (转)Oracle存储过程编写经验和优化措施
  • (轉貼) UML中文FAQ (OO) (UML)
  • .Net 6.0 处理跨域的方式
  • .net core使用ef 6
  • .Net的DataSet直接与SQL2005交互
  • ::
  • @Tag和@Operation标签失效问题。SpringDoc 2.2.0(OpenApi 3)和Spring Boot 3.1.1集成
  • [ C++ ] STL---string类的模拟实现
  • [Android Studio 权威教程]断点调试和高级调试
  • [BZOJ4554][TJOI2016HEOI2016]游戏(匈牙利)
  • [BZOJ5125]小Q的书架(决策单调性+分治DP+树状数组)
  • [CentOs7]搭建ftp服务器(2)——添加用户
  • [ERROR] Plugin 'InnoDB' init function returned error
  • [HTML]Web前端开发技术18(HTML5、CSS3、JavaScript )HTML5 基础与CSS3 应用——喵喵画网页
  • [IE编程] 多页面基于IE内核浏览器的代码示例
  • [Json.net]快速入门
  • [LeetCode] Verify Preorder Sequence in Binary Search Tree 验证二叉搜索树的先序序列
  • [LeetCode系列]3元素最近和问题的O(n^2)解法