JZ2440裸板之SDRAM启动分析

发布者:心愿成真最新更新时间:2018-10-14 来源: eefocus关键字:JZ2440  裸板  SDRAM  启动分析 手机看文章 扫描二维码
随时随地手机看文章

启动文件head.S源码:

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

@ 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

====================================================================

leds.c源码:

#define    GPFCON        (*(volatile unsigned long *)0x56000050)

#define    GPFDAT        (*(volatile unsigned long *)0x56000054)

#define    GPF4_out    (1<<(4*2))

#define    GPF5_out    (1<<(5*2))

#define    GPF6_out    (1<<(6*2))

void  wait(volatile unsigned long dly)

{

    for(; dly > 0; dly--);

}

int main(void)

{

    unsigned long i = 0;

    

    GPFCON = GPF4_out|GPF5_out|GPF6_out;    // 将LED1,2,4对应的GPF4/5/6三个引脚设为输出

    while(1){

        wait(30000);

        GPFDAT = (~(i<<4));                 // 根据i的值,点亮LED1,2,4

        if(++i == 8)

            i = 0;

    }

    return 0;

}

====================================================================

Makefile文件:

sdram.bin : head.S  leds.c

    arm-linux-gcc  -c -o head.o head.S

    arm-linux-gcc -c -o leds.o leds.c

    arm-linux-ld -Ttext 0x30000000 head.o leds.o -o sdram_elf

    arm-linux-objcopy -O binary -S sdram_elf sdram.bin

    arm-linux-objdump -D -m arm  sdram_elf > sdram.dis

clean:

    rm -f   sdram.dis sdram.bin sdram_elf *.o

====================================================================

注意:

       虽然nor flash、网卡和SDRAM的接口一样都是内存类接口,但是SDRAM属于内存类设备,nor flash、网卡不属于内存类设备,叫做RAM Like。


       此实验在测试时不能直接下载到内存中直接运行,要先烧写到nand flash中再运行,否则从片内内存拷贝4k到SDRAM中运行系统会崩溃。


       具体下载方法参见:“JZ2440开发板裸板烧写方法


JZ2440裸板之SDRAM启动分析


关键字:JZ2440  裸板  SDRAM  启动分析 引用地址:JZ2440裸板之SDRAM启动分析

上一篇:JZ2440裸板之MMU操作
下一篇:JZ2440裸板之GPIO操作启动分析

推荐阅读最新更新时间:2024-03-16 16:16

STM32启动流程分析
我们写嵌入式程序,基本上采用C语言来编写,以main( )作为程序的入口。但实际上,mian()并不是最先要执行的,在这之前需要做一些基本的工作,如堆、栈的定义;main函数的复位连接等,这些工作就需要一个专门的启动程序来完成,由于需要做的工作内容不多,并且需要更直接的管理内存,一般采用汇编编写。 无论是STM32、ARM系列的单片机,还是简单的如51,PIC等,都以为上述原因,需要启动程序,只不过51,PIC等单片机的启动程序已经在相应的IDE编译、链接的时候隐含的编译了,故在写单片机程序的时候无需考虑。而STM32的启动有相应的启动文件,本文将采用KEIL MDK自带的启动文件STM32F10x.s进行分析。
[单片机]
FL2440(3) 程序
程序主要是JZ2440的,只是改了一下led.c,下载后发现led闪得非常快. head.S @************************************************************************* @ File:head.S @ 功能:设置SDRAM,将第二部分代码复制到SDRAM,设置页表,启动MMU, @ 然后跳到SDRAM继续执行 @************************************************************************* .text .global _start _start: ldr sp,
[单片机]
汽车运行状况图像监测系统的设计
  众所周知,飞机上的“黑匣子”可以记录飞机的飞行情况,一旦飞机失事,找到“黑匣子”就能知道飞机失事的原因。   汽车上也可以用类似的装置来记录汽车的运行状况,这正是本文要研究的内容,即记录汽车的图像状况,不仅可以记录汽车运行过程中行驶前方或汽车周围的视频图像,而且也可记录汽车静止时前方或周围的视频图像。一旦有交通事故或者人为损坏汽车等情况,利用该系统记录的汽车状况视频图像,可对事故发生时的情况进行分析,就可以准确地认定交通事故发生的原因,也可对损坏汽车的行为加以鉴定。这对于交通事故责任的认定、事故原因的分析、调查和统计等工作以及减少汽车盗窃和汽车破坏事件的发生都具有重要的意义。 系统总体设计方案   汽车运行状况图像监测系统
[嵌入式]
2440裸机-12-1内存控制器与SDRAM_内存接口
1.内存接口介绍 1.1.内存控制器的引入 1.1.1 引入 2440是一个SOC,其中外设分为多种类型: 门电路类:GPIO 协议类接口: UART I2C SPI 内存类设备:nor flash ,SDRAM,NET DM9000 但是对于CPU来说,并不直接控制外设,只需要将值写给相关外设模块的寄存器,CPU通过地址来区分不同的寄存器,因此就需要引入另一个控制单元——内存控制器。 除NAND外,以上外设都是CPU统一编址。 NAND FLASH和外接的存储器不是同一类型的,片内有一个专门的NAND控制来对外接的NAND FLASH硬件进行控制,所以NAND FLASH又属于另外一部分。 nand启动时,cpu认为
[单片机]
2440裸机-12-1内存控制器与<font color='red'>SDRAM</font>_内存接口
高速嵌入式视频系统中SDRAM时序控制分析
在高速数字视频系统应用中,使用大容量存储器实现数据缓存是一个必不可少的环节。SDRAM就是经常用到的一种存储器。 但是,在主芯片与SDRAM之间产生的时序抖动问题阻碍了产品的大规模生产。在数字电视接收机的生产实际应用中,不同厂家的PCB板布线、PCB材料和时钟频率的不同,及SDRAM型号和器件一致性不同等原因,都会带来解码主芯片与SDRAM间访问时序的抖动问题。 本文利用C-NOVA公司数字电视MPEG-2解码芯片AVIA9700内置的SDRAM控制器所提供的时序补偿机制,设计了一个方便使用的内存时序测试软件工具,利用这个工具,开发测试人员可在以AVIA9700为解码器的数字电视接收机设计和生产中进行快速诊断,并解决SDRAM的
[应用]
s32440启动流程 分析(2)
经典 2440启动过程分析 2440启动过程算是一个难点,不太容易理解,而对于2440启动过程的理解,影响了后面裸机代码执行流程的分析,从而看出2440启动过程的重要性。 2440启动方式和启动方式选择 在S3C2440的datasheet《S3C2440A_UserManual_Rev13.pdf》中搜索map,可以在第5章中搜索到下图。 从此图中,可以得知 OM = 01,10,Not using NAND flash for boot ROM OM = 00, Using NAND flash for boot ROM 而OM 又是什么呢? 从S3C2440的datasheet《S3C2440A_UserManual_
[单片机]
s32440<font color='red'>启动</font>流程 <font color='red'>分析</font>(2)
U-boot-2014.04移植到MINI2440(11) 第二启动阶段分析
回顾一下u-boot启动其一阶段做了哪些事: 第一:设置CPU为SVC模式 第二:关闭看门狗 第三:关中断和子中断 第四:设置时钟 第五:MMU关闭,清除cache和TLB,使能地址对齐检查等 第六:初始化SDRAM 在我前面的分析里,第一阶段的最后,通过bl _main,跳到了arch/arm/lib/crt0.S里面去了,从这里开始时第二阶段的入口,下面从这里开始分析。 文件:crt0.S 先看看该文件对_main的描述,在第18行,有一个_main execution sequence is:下面有五步,其实就是对_main的执行流程的一个介绍,我翻译一下: 1
[单片机]
DDR SDRAM在高速数据采集系统中的应用
在数据处理中为了更好地对被测对象进行处理和分析,研究人员们把重点更多的放在高速、高精度、高存储深度的数据采集系统的研究上 由于A/D芯片及高性能的FPGA的出现,已经可以实现高速高精度的数据处理,则进行大批量高存储深度的数据处理成为当前要解决的主要问题 常用存储器的比较 现在用于数据采集系统的存储器常见的有先进先出存储器(FIFO)、静态RAM和SDRAM等 FIFO由于容量和速度的限制,不是实现大容量存储的首选 目前,最为常见的存储器就是静态存储器(SRAM),静态存储器有控制简单、功耗低的优点 当前大容量的SRAM可以达4 MB,存储时钟速率250 MHz 如果要实现单通道32 M的存储深度和200
[测试测量]
DDR <font color='red'>SDRAM</font>在高速数据采集系统中的应用
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved