MINI2440裸机实验之SDRAM

发布者:huanhui最新更新时间:2021-11-08 来源: eefocus关键字:MINI2440  裸机实验  SDRAM 手机看文章 扫描二维码
随时随地手机看文章

程序编写

本次实验将实现初始化SDRAM并将程序自身复制到SDRAM中然后跳转至SDRAM中继续执行流水灯。

依然是在上次程序的基础上进行修改,本次需要修改的文件包括”start.S”和”Makefile”,修改后的文件内容如下:


/* start.S */

.text

.global _start

_start:

#define MDIV  0x7f << 12

#define PSDIV 0x21


    ldr r0, =0x53000000

    mov r1, #0x00

    str r1, [r0]    /* disable the watchdog timer */


    bl mpll_setup

    bl mem_setup

    bl relocate

    ldr pc, =on_sdram


on_sdram:

    ldr sp, =0x34000000    /* set stack pointer */

    b  main


relocate:

    ldr r0, =0x30000000

    ldr r1, =0x40000000

    add r2, r0, #1024*4

1:

    ldr r3, [r1], #4

    str r3, [r0], #4

    cmp r2, r0

    bne 1b

    mov pc, lr


mpll_setup:

    ldr r0, =0x4c000000

    mov r1, #0xffffffff

    str r1, [r0]    /* set locktime register */


    ldr r0, =0x4c000014

    mov r1, #5

    str r1, [r0]    /* set CLKDIVN register */


    mrc  p15, 0, r1, c1, c0, 0   

    orr  r1, r1, #0xc0000000     

    mcr  p15, 0, r1, c1, c0, 0    /* change bus mode */


    ldr r0, =0x4c000004

    mov r1, #MDIV

    add r1, r1,#PSDIV

    str r1, [r0]    /* set MPLLCON register */

    mov pc, lr


mem_setup:

    ldr r0, =0x48000000

    adr r1, mem_cfg_val

    add r2, r0, #13*4

1:

    ldr r3, [r1], #4

    str r3, [r0], #4

    cmp r2, r0

    bne 1b

    mov pc, lr


.align 4

mem_cfg_val:

    .word   0x22000000  /* BWSCON   */

    .word   0x00000700  /* BANKCON0 */

    .word   0x00000700  /* BANKCON1 */

    .word   0x00000700  /* BANKCON2 */

    .word   0x00000700  /* BANKCON3 */

    .word   0x00000700  /* BANKCON4 */

    .word   0x00000700  /* BANKCON5 */

    .word   0x00018005  /* BANKCON6 */

    .word   0x00018005  /* BANKCON7 */

    .word   0x008C04F5  /* REFRESH  */

    .word   0x000000B1  /* BANKSIZE */

    .word   0x00000030  /* MRSRB6   */

    .word   0x00000030  /* MRSRB7   */


@Makefile

objs := start.o led.o


led.bin:$(objs)

    arm-linux-ld -Ttext 0x30000000 -o led_elf $^

    arm-linux-objcopy -O binary -S led_elf $@

    arm-linux-objdump -D -m arm led_elf > led.dis

%.o:%.c

    arm-linux-gcc -c -o $@ $<

%.o:%.S

    arm-linux-gcc -c -o $@ $<

clean:

    rm -f led_elf *.o


为了使程序更加直观,在”start.S”中采用标号将程序进行了分段。


和之前的Makefile进行比较可以发现链接地址由原来的0x40000000变为了0x30000000。


修改完成编译后,仍然使用JLINK将程序下载至内部SRAM(0x40000000)处执行,可以看到流水灯仍正常执行,说明SDRAM控制寄存器初始化成功且程序搬移成功。


有关程序跳转至SDRAM执行的原理可参考《嵌入式应用开发完全指南》或者自行搜索”位置无关代码”以及”装载地址和运行地址”。


关键字:MINI2440  裸机实验  SDRAM 引用地址:MINI2440裸机实验之SDRAM

上一篇:MINI2440 MPLL
下一篇:u-boot添加yaffs2烧写功能代码分析

推荐阅读最新更新时间:2024-11-12 14:53

ARM JTAG仿真器调试方法之SDRAM
之前介绍了使用ARM JTAG仿真器将映像文件加载到ARM处理器内部SRAM中进行程序调试的方法,而在实际操作中,将映像文件加载到外部SDRAM中进行调试的方式更为常见。 要把映像文件加载到SDRAM中,除了要正确设置好映像文件的RO段基地址外(对于一个加载时域和运行时域相同的映像文件来说,RO段基地址实际上就是该映像文件在存储空间的起始地址),更关键的是要对SDRAM进行初始化。因为在上电时,SDRAM是没有被初始化的,所谓初始化SDRAM,就是要设置处理器的SDRAM空间以及读写SDRAM的时序参数,因而SDRAM在初始化之前是不能进行读写操作的。 对于PXA270处理器,初始化SDRAM的工作
[单片机]
移植uboot到mini2440(一)
出来半年了,感觉学到的关于技术方面的东西很少很少,更多的是对软件大环境和行业有了更多的了解,为了巩固以前学过的知识和学习新的知识,我决定移植一个uboot到我的mini2440开发板上。 一、准备工作:包括两方面,一方面是知识储备,也即是移植uboot前必须清楚明白的一些基本原理和常识。另一方面是搭建环境。 首先 知识储备,uboot是什么?U-Boot 是bootloader的一种,是 Das U-Boot 的简称,其含义是 Universal Boot Loader,是遵循 GPL 条款的开放源码项目。最早德国 DENX 软件工程中心的 Wolfgang Denk 基于 8xxROM 和 FADSR
[单片机]
移植uboot到<font color='red'>mini2440</font>(一)
高分辨率视频图像处理中 SDRAM 控制器的设计
本文介绍了一种基于FPGA的用于高分辨率视频图像处理的SDRAM控制器的设计方法。通过设置SDRAM的工作状态,使其工作在猝发模式。在视频时序信号控制下,用多行连续的SDRAM存储空间,存取视频数据。并在数据接口部分增加FIFO,缓存一行视频,在像素时钟控制下,实现视频数据实时的存储和读取。通过改变相关参数,能对所有VESA分辨率视频流进行操作。具有通用性强、系统复杂度低、可靠性高、可扩展等特点。在某型号的机载大屏显示器系统中,用该SDRAM控制器实现了图像的翻转等功能,也验证了该控制器的实用性。 0引言 随着人们对视频图像的清晰度和细节显示要求的不断提高,高分辨率、高bit位的视频标准相继被推出。 造成了数据处理速度和数据处理量
[电源管理]
高分辨率视频图像处理中 <font color='red'>SDRAM</font> 控制器的设计
STM32上的SDRAM硬件电路设计
SDRAM简介 SDRAM(synchronous dynamic random-access memory)即同步动态随机存取内存。在介绍SDRAM前,我们先了解下DRAM(Dynamic random-access memory),DRAR中文译为动态随机存取内存,也叫动态随机存取器,为什么叫动态随机存取器,原因是它的实现原理跟静态存储器SRAM不一样,DRAM是在芯片里集成很多个阵列的电容,DRAM存储二进制数据0和1就是通过给这些阵充放电荷实现。一个简单的单个DRAM存储单元示例图如下图所示。 单个DRAM单元实现电容充放电原理 电容C用来存储电荷,信号WRITE 1、WRITE 0控制开关晶体管Q1和Q2给电容充电和
[单片机]
STM32上的<font color='red'>SDRAM</font>硬件电路设计
S3C2440之SDRAM
前言 本文记录的是内存控制器如何访问SDRAM 测试程序:如果能成功访问SDRAM,就把LED点亮 一、思维导图 二、代码 关键代码 init.c(示例): #include S3C2440.h void sdram_init(void) { BWSCON = 0x22000000; BANKCON6 = 0x18001; BANKCON7 = 0x18001; REFRESH = 0x8404F5; BANKSIZE = 0xb1; MRSRB6 = 0x20; MRSRB7 = 0x20; } int sdram_test(void) { volat
[单片机]
S3C2440之<font color='red'>SDRAM</font>
移植 Linux 2.6.32.2 到 mini2440
先介绍一下此次移植的主要目标对象: 平台:Windows 7 旗舰版 And Fedora 9 目标板:mini2440 目标系统: linux-2.6.32.2 交叉编译链: arm-liunux-gcc 4.4.3 busybox版本: busy.1.13.3 yaffs2版本: yaffs2-20100330(友善那坑爹的文档说光盘有这个压缩包……我有你妹啊……这个是我从官网下载的) 本来以为吧,有友善的移植文档作为参考,只要一步一步来,应该会比较顺利的……不过很快我发现我真是太天真了……友善那坑爹的移植文档实在是让我火大……一个简单的移植过程,在有参考文档的前提下,足足搞了哥4天时间,期间因为按部就班地按照友善的移植文档而
[单片机]
移植 Linux 2.6.32.2 到 <font color='red'>mini2440</font>
S3C2440-裸机篇-06 | UART数据发送接收实验(扫描模式)
实验 —— UART数据收发实验 1. 看原理图确定UART硬件如何连接 由原理图可以看出,JZ2440开发板上将三个串口全部引出,其中UART0设置了板载的USB转串口电路,只需连接板上的USB口就可以,所以接下来我们使用UART0进行数据收发实验。 2. 看芯片手册设置引脚复用功能(GPHCON)、开启片内上拉(GPHUP) 由原理图可以看出,UART0的引脚是: GPH2:TXD0 GPH3:RXD0 这两个引脚都是普通的GPIO口,所以需要设置引脚复用功能,作为串口UART0的引脚: 在【【嵌入式系统通信协议②】EIA RS-232C串口总线标准】一文中讲解通信协议的时候讲过,串口的两根信号线在空闲的时候
[单片机]
S3C2440-<font color='red'>裸机</font>篇-06 | UART数据发送接收<font color='red'>实验</font>(扫描模式)
Linux-2.6.32.2内核在mini2440上的移植(十八)---将UART2更成普通串口
移植环境 1,主机环境:VMare下CentOS 5.5 ,1G内存。 2,集成开发环境:Elipse IDE 3,编译编译环境:arm-linux-gcc v4.4.3,arm-none-linux-gnueabi-gcc v4.5.1。 4,开发板:mini2440,2M nor flash,128M nand flash。 5,u-boot版本:u-boot-2009.08 6,linux 版本:linux-2.6.32.2 7,参考文章: 嵌入式linux应用开发完全手册,韦东山,编著。 Mini2440 之Linux 移植开发实战指南 【1】硬件原理 S3C2440 芯片具有3 个串口:UART0,1,2,我们下载的L
[单片机]
Linux-2.6.32.2内核在<font color='red'>mini2440</font>上的移植(十八)---将UART2更成普通串口
热门资源推荐
热门放大器推荐
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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