用C语言和ARM汇编语言设置SDRAM的惯用方法

发布者:Yaqi最新更新时间:2016-07-28 来源: eefocus关键字:用C语言  ARM  汇编语言  设置SDRAM 手机看文章 扫描二维码
随时随地手机看文章
用C语言设置SDRAM的惯用方法

/* SDRAM regisers */

#define    MEM_CTL_BASE               0x48000000    // BWSCON的地址

#define    SDRAM_BASE                0x30000000     // SDRAM的起始地址

 

/* SDRAM 13个寄存器的值 */

/* 定义了一个数组,把13个寄存器的设置值存到一个数组里面 */

unsigned long  const      mem_cfg_val[]={   // 注意unsigned long  const   的含义…

                            0x22111110,                //BWSCON

                                               0x00000700,              //BANKCON0

                                               0x00000700,              //BANKCON1

                                               0x00000700,              //BANKCON2

                                               0x00000700,              //BANKCON3   

                                               0x00000700,              //BANKCON4

                                               0x00000700,              //BANKCON5

                                               0x00018005,              //BANKCON6

                                               0x00018005,              //BANKCON7

                                               0x008e07a3,              //REFRESH

                                               0x000000b2,              //BANKSIZE

                                               0x00000030,              //MRSRB6

                                               0x00000030,              //MRSRB7

                                                };

 

 

/* 设置控制SDRAM的13个寄存器 */

/* for循环总共13次,刚好对13个寄存器赋值完毕 */

void memsetup()

{

         int    i = 0;

         unsigned long *p = (unsigned long *)MEM_CTL_BASE;

         for(; i < 13; i++)

                   p[i] = mem_cfg_val[i];

}

 

 

用ARM 汇编语言设置SDRAM的惯用方法

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

@ File:head.s

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

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

 

.equ           MEM_CTL_BASE,                0x48000000

.equ           SDRAM_BASE,                     0x30000000

 

.text

 

.global _start

 

_start:

             bl       disable_watch_dog

             bl       memsetup

             bl       copy_steppingstone_to_sdram

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

 

halt_loop:

             b        halt_loop

 

memsetup:

         @ initialize the static memory

         @ set memory control registers

 

         mov     r1,       #MEM_CTL_BASE

         adrl  r2, mem_cfg_val               @ adrl用于搬运地址

         mov    r3, #0x0                     @ 给r3清零(自己加上的一条指令)

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

1:     

  ldr r4,    [r2], #4

         str     r4,    [r1], #4

         cmp r1,    r3

         bne  1b                            @每次递增4个字节,共循环13次(设置13个寄存器)

 

         mov  pc,   lr

关键字:用C语言  ARM  汇编语言  设置SDRAM 引用地址:用C语言和ARM汇编语言设置SDRAM的惯用方法

上一篇:单片机程序中为什么要禁止看门狗
下一篇:一条进程的栈区、堆区、数据区和代码区在内存中的映射

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

ARM裸机开发bootloader汇编语言
一、汇编语言概述 1、为什么要使用汇编 一般情况下我们不会用到汇编,但有两种情况下,我们要用到汇编。 1、启动代码。编写bootloader和内核时使用,主要是对cpu和内存进行初始化时使用,因为这个时候还没有c语言的环境(堆栈还没有建立),所以不能用c语言。 2、高效率的特殊需求。因为汇编语言的执行效率要高于c语言,所以对某些对效率要求高的程序要用到汇编,可以是汇编与c语言的混合编程。 2、汇编分类 1、ARM标准汇编,适用于windows平台下ARM公司开发的汇编器ADS。 2、GNU汇编,linux平台下GNU交叉编译工具链中的汇编器。它与ARM标准的一点不同是GNU汇编要在段标记符前加点,例如 .text。而AR
[单片机]
意法半导体的ARM7电机控制开发套件简化成本敏感设备的向量驱动设计
包含硬件和固件的工具套件简化面向磁场的PMSM和三相交流感应电机驱动器的评估和开发过程 中国,2007年2月27日 — 意法半导体(纽约证券交易所代码:STM)今天针对注重成本的电器、工业设备和HVAC(供暖通风空调)市场推出一套新的电机控制开发工具。以最近推出的32位STR750微控制器为内核,新套件有助于快速开发高性能的采用永磁同步电机(PMSM)和三相感应交流电机的向量控制应用。这套工具含有让用户在数分钟内做好开发准备和完成目标应用开发所需的全部固件和硬件,其中包括一个初步评估用的24V直流永磁电机。 向量(或面向磁场)控制算法广泛用于高性能驱动器,具有速度控制精确和响应速度快的特点,保证效率在瞬变工作期间得到优化。这套
[新品]
ARM申请Full Profile OpenCL认证 实现图形计算
ARM公司近日宣布,已为ARM® Mali™-T604  图形处理器(GPU)向Khronos*申请OpenCL™ 1.1 Full Profile 符合性认证,为移动应用、嵌入式应用以及智能电视市场带来桌面级的GPU计算强大特性。ARM是首家申请Full Profile OpenCL标准符合性认证的GPU知识产权(IP)供应商。通过为开发者提供一致而有效的设计构建平台来帮助实现图形计算,并为终端用户设备性能与电池寿命方面的切实利益,这项行动预计将有助于视觉计算落实至日常生活中。 GPU计算已经成为一种趋势,它可利用GPU原本用于图形处理的计算性能来协助增强主处理器(或CPU)处理一些在GPU架构下更为高效的特定应用。如此一来
[单片机]
ARM9中断调试(1)
/*************************************************** *说 明 :ARM9中断调试(1) ***************************************************/ 一般情况下,在ARM9调试程序都是下载到RAM中执行的,当然,只要没有中断产生程序看似能够正常执行,但是一旦中断发生,程序必然会跑飞,原因在于程序中断后,PC默认指向0x00-0x1C处,但是RAM的起始地址是0x30000000,中断向量表默认在0x30000018处,很明显,中断服务程序是不能够正常执行的,同时ARM内核会通过串口打印 Dummy_isr error..
[单片机]
基于ARM核的GPS接收机的设计与实现
0 引言 全球定位系统(GPS)作为一种成熟的导航定位技术,以其全天候、高精度、自动化、高效率等显著特点及所独具的定位导航、授时授频、精密测量等多方面的强大功能,使其用途越来越广泛。传统的使用8位单片机设计的GPS接收机,在数据处理、系统性能提升以及功能扩展等方面存在较大的不足。随着嵌入式技术的发展,以ARM为代表的32位微处理器凭借其高性能、低功耗、低成本、体积小等优点,在现实中获得了广泛的应用。 本文介绍了一种GPS接收机的整体设计方案,该方案采用Atmel公司生产的ATR0600和ATR0620芯片。其中ATR0600芯片作为接收机的射频前端,内嵌ARM7TDMI处理器核的ATR0620芯片作为接收机的数字基带处理器。该
[单片机]
基于<font color='red'>ARM</font>核的GPS接收机的设计与实现
嵌入式ARM下的触摸屏驱动系统设计
文章首先介绍了触摸屏的实现原理,然后介绍了触摸屏芯片AD7873的特性,在此基础上设计了ad7873与i.MX27和触摸屏的连接PCB图,最后依照硬件连接图设计了嵌入式Linux下的驱动,并成功通过了tclib触摸屏专业测试软件的测试,在家庭智能网关系统的测试中也成功运行,实现了从硬件到软件的嵌入式下触摸屏的驱动系统设计。 1引言 随着计算机技术的发展和普及,触摸屏技术得到了越来越广泛应用,在各种手持设备中,如手机、MP4、掌上游戏机、掌上PDA等,由于其方便、舒适,使其完全摆脱了键盘和鼠标的束缚,使人机交互更为直截了当。而在微软最新开发的windows7操作系统中,就有其值得骄傲并加以推广的多点触摸技术,并成为一大卖点。
[电源管理]
嵌入式<font color='red'>ARM</font>下的触摸屏驱动系统设计
基于ARM9的SD/MMC卡控制器的ASIC设计
引言   如今多媒体数码产品的迅猛发展,其中,各种音频视频等功能的不断增强,使得系统对于存储介质的性能,容量,安全等方面的要求与日俱增。MMC卡和SD卡均是基于flash的存储设备,近年来,它们以高存储容量,快速的数据传输速率,加上极大的移动灵活性和更高的安全性已经成为闪存市场的标准,其广泛应用于手机,MP3,MP4,掌上电脑等各种产品中。可见,其已经成为面向便携式数码电子产品的SOC芯片中通用的功能接口。   文章设计的SD/MMC控制器基于一款3G手机基带芯片,其内核采用ARM926EJ,系统总线架构为AMBA,控制器连接到APB总线上。通过分析SD卡和MMC卡的规范,利用Verilog HDL实现了符合该规范的SD/MM
[工业控制]
基于<font color='red'>ARM</font>9的SD/MMC卡控制器的ASIC设计
ARM与微软扩大合作范围 左右嵌入式市场格局
ARM 与微软(Microsoft)日前共同宣布签署了新的 ARM 架构许可协议,扩展双方合作关系。自1997年以来,微软与 ARM 开始合作开发嵌入式、消费性及行动相关领域的软硬件,俾使许多公司得以推出以ARM为核心的多样化产品。 ARM 技术长 Mike Muller 表示,微软多年来一直是ARM 产业生态系中的重要成员,此次架构授权让微软得以在发展各种以ARM技术应用领域的业务时走在最前端,这也与其关注多种应用领域的业务相符。 微软总经理 KD Hallman 表示,ARM 是 Microsoft 的重要合作伙伴,运用该公司的架构推出多种操作系统,其中最广为人知的就是 Windows Embedded
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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