【记录】存储管理器

发布者:创新脑细胞最新更新时间:2022-07-19 来源: csdn关键字:存储管理器  地址线 手机看文章 扫描二维码
随时随地手机看文章

1. 概要

存储管理器负责管理2440的所有内存设备。2440的地址线ADDR0~ADDR26,即最大执行寻址2^27=128M空间。


CPU通过8根片选信号nGCS0~nGCS7,控制bank0~bank7,每个bank大小为128M,这样就实现了须知1G地址空间。

这里写图片描述
除此之外,0x4800~0x5FFFFFFF,地址空间为特殊寄存器地址范围,控制不同的硬件单元模块。

这里写图片描述

存储器与外设

不同的bank可以接不同的外设设备,2440对多允许接入8个外设。CPU寻址时,向内存管理器发送地址,内存管理器负责访问不同的外设。
开发板上的外设连接。

这里写图片描述

使用SDRAM

访问SDRAM芯片,需要的配置信息
1. 地址线
2. 数据线,8/16/32位,需要设置数据宽度
3. 时钟频率
4. 芯片相关

应用程序与上节的LED程序完全相同,不同的是上节程序在SRAM上运行,此次程序在SDRAM上运行。


启动流程

  1. 复位后,NAND控制器将NAND FLASH中前4k内容复制到片内SRAM中(steppingstone,地址0x0000,0000)

  2. 初始化,关看门狗,初始化存储控制器

  3. 将Steppingstone中的代码全部复制到SDRAM中

  4. 跳转到SDRAM中,继续执行

这里写图片描述

汇编程序

@*************************************************************************

@ File:head.S

@ 功能:设置SDRAM,将程序复制到SDRAM,然后跳到SDRAM继续执行

@*************************************************************************       


.equ        MEM_CTL_BASE,       0x48000000

.equ        SDRAM_BASE,         0x30000000


.text

.global _start

_start:

    bl  disable_watch_dog               @ 关闭WATCHDOG,否则CPU会不断重启

    bl  memsetup                        @ 设置存储控制器

    bl  copy_steppingstone_to_sdram     @ 复制代码到SDRAM中

    ldr pc, =on_sdram                   @ 跳到SDRAM中继续执行

on_sdram:

    ldr sp, =0x34000000                 @ 设置堆栈

    bl  main

halt_loop:

    b   halt_loop


disable_watch_dog:

    @ 往WATCHDOG寄存器写0即可

    mov r1,     #0x53000000

    mov r2,     #0x0

    str r2,     [r1]

    mov pc,     lr      @ 返回


copy_steppingstone_to_sdram:

    @ 将Steppingstone的4K数据全部复制到SDRAM中去

    @ Steppingstone起始地址为0x00000000,SDRAM中起始地址为0x30000000


    mov r1, #0

    ldr r2, =SDRAM_BASE

    mov r3, #4*1024

1:  

    ldr r4, [r1],#4     @ 从Steppingstone读取4字节的数据,并让源地址加4

    str r4, [r2],#4     @ 将此4字节的数据复制到SDRAM中,并让目地地址加4

    cmp r1, r3          @ 判断是否完成:源地址等于Steppingstone的未地址?

    bne 1b              @ 若没有复制完,继续

    mov pc,     lr      @ 返回


memsetup:

    @ 设置存储控制器以便使用SDRAM等外设


    mov r1,     #MEM_CTL_BASE       @ 存储控制器的13个寄存器的开始地址

    adrl    r2, mem_cfg_val         @ 这13个值的起始存储地址

    add r3,     r1, #52             @ 13*4 = 54

1:  

    ldr r4,     [r2], #4            @ 读取设置值,并让r2加4

    str r4,     [r1], #4            @ 将此值写入寄存器,并让r1加4

    cmp r1,     r3                  @ 判断是否设置完所有13个寄存器

    bne 1b                          @ 若没有写成,继续

    mov pc,     lr                  @ 返回



.align 4

mem_cfg_val:

    @ 存储控制器13个寄存器的设置值

    .long   0x22011110      @ BWSCON

    .long   0x00000700      @ BANKCON0

    .long   0x00000700      @ BANKCON1

    .long   0x00000700      @ BANKCON2

    .long   0x00000700      @ BANKCON3  

    .long   0x00000700      @ BANKCON4

    .long   0x00000700      @ BANKCON5

    .long   0x00018005      @ BANKCON6

    .long   0x00018005      @ BANKCON7

    .long   0x008C07A3      @ REFRESH

    .long   0x000000B1      @ BANKSIZE

    .long   0x00000030      @ MRSRB6

    .long   0x00000030      @ MRSRB7


效果

LED的闪烁效果比在SRAM上执行时,速度慢,原因是SDRAM的访问速度比SRAM慢。
既然如此,为什么还要使用SDRAM呢?主要原因是SRAM虽然性能很好,但价格还是很高的,所以2240片内只内置了4k的SRAM,当我们的程序超过4k时,就无法单独在片内的SRAM内执行了。此时SRAM只负责一部分的初始化工作以及将NAND FLASH中的代码复制到SDRAM中,程序的执行则完全在SDRAM中进行。


关键字:存储管理器  地址线 引用地址:【记录】存储管理器

上一篇:【记录】NAND FLASH控制器
下一篇:【记录】启动文件

推荐阅读最新更新时间:2024-11-06 23:20

u-boot-2009.08在mini2440上的移植(十)---增加I2C EEPROM功能
移植环境 1,主机环境:VMare下CentOS 5.5 ,1G内存。 2,集成开发环境:Elipse IDE 3,编译编译环境:arm-linux-gcc v4.4.3,arm-none-eabi-gcc v4.5.1。 4,开发板:mini2440,2M nor flash,128M nand flash。 5,u-boot版本:u-boot-2009.08 6,参考文章: http://blogimg.chinaunix.net/blog/upfile2/100811115954.pdf 10.1,实现u-boot的I2C EEPROM功能 mini2440开发板上的AT24C08A芯片提供了8kbyte的非易失的EEP
[单片机]
使用J-Link烧写一U-boot的烧写+裸板程序烧写(JZ2440-S3C2440
一、使用J-Link 烧写NOR Flash 注意:J-Link 只支持NOR Flash,不支持NAND Flash。 1、安装J-link 驱动(在Windows 下) 在JZ2440 开发板JLINK 使用手册(JZ2440开发板JLINK使用手册jlink安装驱动程序目录)中,驱动名为:Setup_JLinkARM_V436e.exe。 双击即可进行安装,安装完成后,桌面上显示两个图标J-Flash和J-Link: 2、使用JLINK 烧写Uboot 到NOR Flash (1)开发板设置为NOR (将NAND/NOR 开关打到NOR一侧)启动,接好J-Link 后,最后启动上电。 (2)启动上电。打开J-Flas
[单片机]
使用J-Link烧写一U-boot的烧写+裸板程序烧写(JZ<font color='red'>2440</font>-S3C<font color='red'>2440</font>)
s3c2440的IIC控制
在tq2440和mini2440上都连接着EEPROM 它们作用也不过測试I2C总线能否用。 当中在mini2440上EEPROM型号是 AT24C08,在tq2440上这个型号是 AT24C02A。 它们之间容量不同。地址线也不一样。 S3C2440A RISC 微处理器能够支持一个多主控 IIC 总线串行接口。一条串行数据线(SDA)和一条专用时钟线(SCL) 连接到 IIC 总线的总线主控和外设之间。SDA 和 SCL 线都为双向的。都连接到GPE14(SCL) GPE15(SDA)。 为了控制多主控 IIC 总线操作,必须写入值到下面寄存器中: – 多主控 IIC 总线控制寄存器,IICCON – 多主控
[单片机]
s3c<font color='red'>2440</font>的IIC控制
S3C2440的GPIO在作为输入用时上拉电阻的设置
GPIO做输出使用时要加上拉电阻,因为默认的是漏极开路,高阻态,无法输出高电平。 而在输入时要根据外围电路选择是否设置上拉电阻: 在外接电路能提供高低电平时可不加上拉电阻,比如作为第二功能的ADC输入,或作为地址总线时;而且作为ADC输入时若加上上拉电阻,还会影响ADC的测量。 当外接电路能不能提供高和低电平时加上拉电阻,比如作为按键输入时,如不加上拉电阻,只能输入低电平,无法输入高电平。
[单片机]
TQ2440移植u-boot-2010.06-rc1---6usb下载
以前做过usb下载的东东,现在把它搞到u-boot-2010.06-rc1上去. 网上有usb下载的代码,可以在这儿下载: http://blogimg.chinaunix.net/blog/upfile2/100109001526.bz2 一. 先编译过再说 1.下载后,解压到u-boot-2010.06-rc1/drivers/usb/slave目录 并在顶层Makefile中添加: LIBS += drivers/usb/slave/libusb_slave.a 2. 将driver/usb/slave/目录下所有C文件所个替换 a. #if defined(CONFIG_S3C2400) #include s
[单片机]
TQ<font color='red'>2440</font>移植u-boot-2010.06-rc1---6usb下载
S3C2440 启动和点亮第一盏LED
1、S3C2440 内存映射图 从S3C2440 User Manual可以知道S3C2440 可以从nand flash方式启动和不从nand flash.如下图: 2、启动方式选择 1、S3C2440是从0x0000 0000取出第一条指令并且执行。 2、OM0=0,OM1=0时,S3C2440从nand flash 启动;S3C2440的 0x0000 0000 地址会被映射到 芯片内部4KB的iram;芯片上电启动的时候nand flash的前4Kb的数据会自动被copy到到iram里面。而S3C2440会从iram里面取指并且执行。 3、OM0=0,OM1=1或者OM0=1,OM1=0,S3C2440从nor f
[单片机]
S3C<font color='red'>2440</font> 启动和点亮第一盏LED
GNU ARM汇编--(七)s3c2440的串口控制
在配置完s3c2440的系统时钟后,我们来控制串口.之所以将串口放在这么靠前,是因为串口会给我们带来更多的信息.在没有串口的时候,uboot启动阶段只能靠led来显示一些信息.那么有了串口,debug就方便很多了.在工作中,一般情况下,很少有机会用jtag口加上昂贵的codeviser工具进行debug,也很少用gdb进行远程debug的,用的最多的还是打开debug的define来分析确定问题. 还是从s3c2440的datasheet开始: s3c2440A的UART提供3个独立的异步串行IO口,每一个都支持中断和DMA.换句话来说,UART可以产生中断请求或DMA请求来在CPU和UART之间传输数据.
[单片机]
GNU ARM汇编--(七)s3c<font color='red'>2440</font>的串口控制
FFmpeg移植S3C2440
FFmpeg移植过程: FFmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPL或GPL许可证。它的移植同样遵循LGPL或GPL移植方法:configure、make、make insatll。 1.下载ffmpeg开源库(ffmpeg-0.5.tar.bz2)放到相应文件夹。 #tar jxvf ffmpeg-0.5.tar.bz2 #cd ffmpeg-0.5 2.配置编译选项 #./configure --cross-prefix=/usr/local/arm/3.4.1/bin/arm-linux- --enable-cross-compile --target-os=linux --cc=arm-l
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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