历史上的今天

今天是:2024年10月09日(星期三)

正在发生

2019年10月09日 | FL2440 (2) 裸板程序 SDRAM

发布者:Dingsir1902 来源: eefocus关键字:FL2440  裸板程序  SDRAM 手机看文章 扫描二维码
随时随地手机看文章

以下是jz2440的head.s文件,在FL2440可以使用,不做更改.注意这是NANDFLASH启动方式,FL2440开发板上的J5和J2都要插上.


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

@ 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                 @ 设置堆栈,64M内存

    bl  main

halt_loop:

    b   halt_loop

 

disable_watch_dog:

    @ 往WATCHDOG寄存器写0即可

    mov r1,     #0x53000000

    mov r2,     #0x0

    str r2,     [r1] @将r2寄存器的值写到r1寄存值对应的地址单元

    mov pc,     lr      @// 返回,用bl跳转会把返回地址(bl的下一条指令的地址)保存在lr寄存中

 

copy_steppingstone_to_sdram:

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

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

    

    mov r1, #0

    ldr r2, =SDRAM_BASE @第二参数有"="表示伪指令,r2为读SDRAM_BASE的地址

    mov r3, #4*1024

1:  

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

    @ //将r1寄存器的值做为地址取的的数据存到r4中,并且r1寄存器的值+4

   

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

@ //将r4的数据保存到地址为r2寄存器值,并且r2寄存器的值+4

    

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

    bne 1b              @ 若没有复制完,继续 跳到上个段开始,1的位置  b:back 1表示第一个1标号处

    mov pc,     lr      @ 返回

 

memsetup:

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

 

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

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

@ adrl 这是一条中等范围的地址读取伪指令,它将基于PC的相对偏移的地址值读到目标寄存器中。

@

    

    add r3,     r1, #52             @ 13*4 = 54  r3=r1+52 =0x48000000 +#52 0x48000034

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

我的FL2440开发板的SDRAM是两片 H57V2562GTR-75C 最高主频133,16M*16。


下面是makefile文件,没有改变还是jz2440的.


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

下面是leds.c文件,要对应FL2440的原理图.


 

//FL2440

#define GPBCON (*(volatile unsigned long *)0x56000010)

#define GPBDAT (*(volatile unsigned long *)0x56000014)

 

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

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

#define GPB8_out (1<<(8*2))

#define GPB10_out (1<<(10*2))

 

void  wait(volatile unsigned long dly)

{

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

}

 

 

int main(void)

{

unsigned long i=0;

//     0010 0000

//     0100 0000

//   1 0000 0000

// 100 0000 0000

unsigned long arr[4]={0x20,0x40,0x100,0x400};

GPBCON = GPB5_out|GPB6_out|GPB8_out|GPB10_out; // 将LED0-3对应的GPB 5/6/8/10  output

 

while(1)

{

for(i=0;i<4;i++)

{

//GPBDAT=0x7ff;

//wait(90000);

GPBDAT=~arr[i];

wait(90000);

                 }

}

 

return 0;

}

 

编译环境用的是ubuntu9.10,直接用韦老师的虚拟机文件。

关键字:FL2440  裸板程序  SDRAM 引用地址:FL2440 (2) 裸板程序 SDRAM

上一篇:FL2440(3) 裸板程序
下一篇:FL2440 (1) 裸板程序 LED

推荐阅读

var videoObject = { container: '.video', variable: 'player', autoplay: true, ...
程序主要是JZ2440的,只是改了一下led.c,下载后发现led闪得非常快.head.S@*************************************************************************@ File:head.S@ 功能:设置SDRAM,将第二部分代码复制到SDRAM,设置页表,启动MMU,@ 然后跳到SDRAM继续执行@************************************************************************* ...
在 9 月 23 日的华为全联接大会 2020 上,华为平板和 PC 产品线总裁王银锋对记者确认,华为将推出自有品牌的显示器产品。  现在,IT之家用户 @ Husn 为我们提供了一款华为显示器的商品介绍页面信息,一起来看一下吧。  如上图所示,这款 23.8 英寸的华为 AD80HW 显示器采用了三遍窄边框的设计,背面采用了喷漆工艺。 ...
今年国庆期间,央视报道了一位新能源汽车车主从深圳返回湖南老家的心路历程,而这篇报道也将当前势头正猛的电动车推上了风口浪尖。 根据这位车主的描述,其在出发前查了一下导航,发现国庆期间高速公路没有拥堵。因此才来了一场说走就走的旅行。但不曾想,一路畅通的他,在耒阳服务区的时候,却遇到了充电排队的尴尬。在他排队的4个小时里,这位车主连厕所...

史海拾趣

问答坊 | AI 解惑

要想找工作,换工作的看这里,在冬天找个避风港

大家好,我是上海KT人才的dolphin 我们公司中国最大最专业的集成电路人才咨询公司之一,多年来专注于IC与电子行业中高级人才服务,客户主要为欧美著名半导体公司和美资集成电路设计新公司,客户分布在上海、北京、深圳、新加坡等地,拥有丰富的IC ...…

查看全部问答∨

郁闷,公司财务真是猪!

以前个税才交256RMB,现在一个月差不要交900RMB,一点税都避不了。…

查看全部问答∨

飞思卡尔SC9RS08MZ8单片机中文参考手册

这款属于RS08系列8位单片机,低成本,适合家用电器控制板,遥控器之类的应用。网上找到的中文凡一般手册,转过来。真的要感谢这些无私奉献的人,国内还是很多人不会看英文的资料的。有人翻译确实方便了不少人。但我仍然强调,做技术就一定要过英文 ...…

查看全部问答∨

(急急急)ads下怎么才能使用malloc、free函数??在线等!!(无OS情况下)

  急急急急急急!!!   ads下怎么才能使用malloc、free函数???在无OS情况下。。。。。   请高手指点!!   …

查看全部问答∨

请教:关闭屏幕的问题?

我们想实现这样的效果:关闭屏幕显示(不是仅仅关背景灯),我用下面做法能够实现 ...         HDC gdc;         int iESC=SETPOWERMANAGEMENT;         gdc = ::GetDC(NULL); &nbs ...…

查看全部问答∨

我有一些关于计算机硬件方面的问题

现在鼠标,移动硬盘,键盘都是用USB口了,那计算机如何知道插进去的是鼠标,移动硬盘,和USB键盘呢? 还有就是是不是USB接口的外设都不需要驱动呢?(在XP 2000环境下)?…

查看全部问答∨

如何让用Labview 8.2下编的程序在WinCE 5.0里运行?

已装evc,Labview 8.2及其PDA模块,windows mobil pocket pc 2005 SDK,vs2005等等。 硬件为MOXA的UC7408,操作系统为WinCE 5.0. 在线等,谢谢!…

查看全部问答∨

奇怪,DK-LM3S9B96在KEIL不能仿真,但能下载,是什么原因呢?

KEIL用V3和V4,都是一样,只能下载不能仿真。仿真时,会提示xxx.axf不能加载。另外,工程是用开发板自带的例程。手上还有一个LM3S8962 EVKIT,在KEIL里面又可以下载,又可以仿真的…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

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

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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