嵌入式linux开发 (九) RAM(3) s3c2440外扩sdram

发布者:csw520最新更新时间:2022-08-08 来源: csdn关键字:RAM  s3c2440  外扩sdram 手机看文章 扫描二维码
随时随地手机看文章

- JZ2440  S3C2440 ARM920T

-内置

Steppingstone (4K-Byte SRAM)

无rom

-外扩

EM63A165TS-6G:32MB/片,SDRAM,共两片


soc

The S3C2440A is developed with ARM920T core, 0.13um CMOS standard cells and a memory complier.

The ARM920T implements MMU, AMBA BUS, and Harvard cache architecture with separate 16KB instruction and 16KB data caches, each with an 8-word line length.


The integrated on-chip functions that are described in this document include:

Around 1.2V internal, 1.8V/2.5V/3.3V memory, 3.3V external I/O microprocessor with 16KB I-Cache/16KB D-Cache/MMU

External memory controller (SDRAM Control and Chip Select logic)


SOC端 内存(存储)控制器

内存控制器接口及内存映射

在 soc 内存控制器看来,sram,sdram,rom,srom 对于 soc存储控制器都是一样的,统一编制


cpu进行sdram数据读写

CPU发送一个地址

cpu根据地址发出片选信号(如果地址在sdram中,则片选sdram)


内存控制器做的事

1.它需要根据你外接的SDRAM进行设置(定义了这些通信格式之后才能找到相应的地址进行存储。)

外接芯片的位宽,容量,等,

还需要分出几个逻辑块(L-BANK)以及分行(ROW)列(Colum),

2.发出时序


寄存器

#define MEM_CTL_BASE    0x48000000

看样子有13个寄存器

 BWSCON BANKCON0 BANKCON1 BANKCON2 BANKCON3 BANKCON4 BANKCON5 BANKCON6 BANKCON7 REFRESH BANKSIZE MRSRB6 MRSRB7

在这里插入图片描述

引脚

------------------------- sclk

SCLK[1:0] SDRAM clock

SCKE SDRAM clock enable


------------------------- data and addr

DQ[0-15]

A[0-12]

------------------------- bank select

与BA0与BA1 连接的线,在s3c2440中没这个概念,直接用addr线代替

------------------------- control

nGCS[7:0] (General Chip Select) are activated when the address of a memory is within the address region of each bank. The number of access cycles and the bank size can be programmed. // nSCS[1:0] SDRAM chip select


nSRAS SDRAM row address strobe

nSCAS SDRAM column address strobe


nWE nWE (Write Enable) indicates that the current bus cycle is a write cycle


DQM0[3:0] Data Input/Output Mask: Controls output buffers in read mode and masks Input data in write mode.

#### 以下没用到

nWBE[3:0] Write byte enable


时序

在这里插入图片描述

设备端SRAM芯片(EM63A165TS-6G)

连线

在这里插入图片描述

代码

初始化


// 初始化13个寄存器,寄存器都是对soc侧控制器进行初始化的,并没有涉及到SDRAM的初始化


#define MEM_CTL_BASE    0x48000000


/* 3. 初始化SDRAM */

ldr r0, =MEM_CTL_BASE // r0 开始地址

add r3, r0, #(13*4) // 结束地址

adr r1, sdram_config    // 配置数据开始地址 /* sdram_config的当前地址 */

1:

ldr r2, [r1], #4 // 将 配置信息存储到 r2,r1+4

str r2, [r0], #4 // 将 r2 配置到 r0,r0+4

// 综上,是将 配置信息放置到 MEM_CTL_BASE   地址中去

cmp r0, r3 // 看 r0 (是否)等于r3,等同于看配置(是否)完成 

bne 1b // 没结束,则继续配置

sdram_config:

.long 0x22011110 //BWSCON 0x48000000

.long 0x00000700 //BANKCON0 0x48000004

.long 0x00000700 //BANKCON1 0x48000008

.long 0x00000700 //BANKCON2 ...

.long 0x00000700 //BANKCON3  

.long 0x00000700 //BANKCON4

.long 0x00000700 //BANKCON5

.long 0x00018005 //BANKCON6

.long 0x00018005 //BANKCON7

.long 0x008C04F4 // REFRESH

.long 0x000000B1 //BANKSIZE

.long 0x00000030 //MRSRB6

.long 0x00000030 //MRSRB7


读写sdram

// 类似于这样来读写sdram.

// dest[i] 是 sdram 中的地址.

dest[i] = src[i];


/* 4. 重定位 : 把bootloader本身的代码从flash复制到它的链接地址去 */

ldr sp, =0x34000000


bl nand_init


mov r0, #0 /*src*/

ldr r1, =_start /*dest*/

ldr r2, =__bss_start 

sub r2, r2, r1 /*len*/

bl copy_code_to_sdram

bl clear_bss


void copy_code_to_sdram(unsigned char *src, unsigned char *dest, unsigned int len)

{

int i = 0;

/* 如果是NOR启动 */

if (isBootFromNorFlash())

{

while (i < len)

{

dest[i] = src[i];

i++;

}

}

else

{

//nand_init();

nand_read((unsigned int)src, dest, len);

}

}


关键字:RAM  s3c2440  外扩sdram 引用地址:嵌入式linux开发 (九) RAM(3) s3c2440外扩sdram

上一篇:jz2440烧写u-boot并使用
下一篇:嵌入式linux开发 (二十三) 内存管理(5) s3c2440内存管理

推荐阅读最新更新时间:2024-11-08 10:18

一加6信息汇总:配置8GB内存+骁龙845
    价格方面,64GB在33999卢比~36999卢比之间,约合人民币3299元到3590元之间。128GB在38999卢比到42999卢比之间,约合人民币3785元到4173元;8+256GB顶配则是44999卢比到48999卢比之间,约合人民币4367元到4755元。对于即将到来的一加手机6,除了已经确认的高通骁龙845处理器之外,更多的规格信息可以借鉴参考刚刚发售的OPPO R15。外媒推测今年的一加手机6会装备分辨率为2220*1080,长宽比为19:9的6.0英寸屏幕,配8GB的LPDDR4X内存,会提供64GB/128GB/256GB,相机方面会装备2000万像素f/1.7和1600万像素f.1.7双摄像头,指纹会
[手机便携]
S3C2440裸机学习[2] - LCD驱动原理及代码分析[一]
1. LCD工作的硬件需求: 要使一块LCD正常的显示文字或图像,不仅需要LCD驱动器,而且还需要相应的LCD控制器。在通常情况下,生产厂商把LCD驱动器会以COF/COG的 形式与LCD玻璃基板制作在一起,而LCD控制器则是由外部的电路来实现,现在很多的MCU内部都集成了LCD控制器,如S3C2410/2440等。通 过LCD控制器就可以产生LCD驱动器所需要的控制信号来控制STN/TFT屏了。 2. S3C2440内部LCD控制器结构图: 我们根据数据手册来描述一下这个集成在S3C2440内部的LCD控制器: a:LCD控制器由REGBANK、LCDCDMA、TIMEGEN、VIDPRCS寄存器组成; b:REGBAN
[单片机]
<font color='red'>S3C2440</font>裸机学习[2] - LCD驱动原理及代码分析[一]
I2C总线驱动程序
#include linux/kernel.h #include linux/module.h #include linux/i2c.h #include linux/init.h #include linux/time.h #include linux/interrupt.h #include linux/delay.h #include linux/errno.h #include linux/err.h #include linux/platform_device.h #include linux/pm_runtime.h #include linux/clk.h #include linux/cpuf
[单片机]
I2C总线驱动程序
双口RAM通讯在电机控制中的应用
引言 在冶金行业中,绝大部分控制信息的传递基本上都是依靠总线进行的,通过总线还可以实现对各个生产加工环节的实时监控,所以总线技术无处不在,其中VME计算机因其支持多个CPU,64位的寻址和数据传输能力,IEC 297 欧卡标准,机械性能可靠和稳定,并具有可靠的接插件,带电热插拔,多厂商支持等优点得到广泛应用。这里介绍一个用双口RAM实现变频器和VME通讯的实际例子。 1 总体结构 如图所示,整个通讯由三部分组成:DSP,VME双口RAM。 1.1 DSP部分 这部分是整个电机控制系统的核心。DSP主要被用来产生控制电机的PWM脉冲,本项目使用的芯片是德州仪器的TMS320LF2407A芯片,它内部有两个事件管理器
[传感技术]
在STM32中将变量或代码设定在指定内存地址的方法
各个编译器有自己不同的语法 对于arm_none_eabi_gcc: // Sampling variables #define ADC_SAMPLE_MAX_LEN 2000 __attribute__((section( .ram4 ))) static volatile int16_t m_curr0_samples ; __attribute__((section( .ram4 ))) static volatile int16_t m_curr1_samples ; __attribute__((section( .ram4 ))) static volatile int16_t m_ph1_samples ;
[单片机]
内存扩展测试
AT91SAM9263EK IAR 内存容量从64M扩展到128M basic-lcd-project-at91sam9263-ek-iar\basic-lcd-project-at91sam9263-ek\at91lib\boards\at91sam9263-ek\at91sam9263\sdram.icf /*-Memory Regions-*/ define symbol __ICFEDIT_region_SDRAM_start__ = 0x20000000; define symbol __ICFEDIT_region_SDRAM_end__ = 0x27FFFFFF; basic-lcd-project-at
[单片机]
了解S3C2440触摸屏驱动的原理及其应用
一、开发环境 主 机:VMWare--Fedora 9 开发板:Mini2440--64MB Nand, Kernel:2.6.30.4 编译器:arm-linux-gcc-4.3.2 二、前提知识 1、Linux输入子系统(Input Subsystem): 在Linux中,输入子系统是由输入子系统设备驱动层、输入子系统核心层(Input Core)和输入子系统事件处理层(Event Handler)组成。其中设备驱动层提供对硬件各寄存器的读写访问和将底层硬件对用户输入访问的响应转换为标准的输入事件,再通过核心层提交给事件处理层;而核心层对下提供了设备驱动层的编程接口,对上又提供了事件处理层的编程接口;而事件处理层就为我们用
[单片机]
了解<font color='red'>S3C2440</font>触摸屏驱动的原理及其应用
30.2440内存的知识
首先看2440的地址线:mini2440原理图.pdf 2440的芯片提供了27根地址线=128M。 S3c2440芯片对外提供的引脚上,只给出了27根地址线addr .这27根引脚地址线,只能访问128M的外设空间。 为了扩大外设的访问范围,S3c2440芯片又提供了8个片选信号nGCS0~nGCS7。当某个片选信号nGCSx有效时,则可以通过27根地址线去访问对应这个片选的128MB空间。由于有8个片选,所以2440芯片能访问的外设空间总共为8*128MB=1GB.而1G(0x40000000)以上的空间,则安排给了2440内部的寄存器,访问这些内部的寄存器,则是通过32位的处理器内部总线来完成的。 8个片选信号引脚:
[单片机]
30.2440<font color='red'>内存</font>的知识
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved