`
isiqi
  • 浏览: 16565231 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

【.Net Micro Framework PortingKit - 05】SRAM初始化&设置NVIC中断表偏移

阅读更多

上篇《修改启动代码&重写向量表》文章中我们介绍了中断向量表的编写,这次我们编写SRAM初始化代码,在《调试初步:点亮LED》文章中,我们提到了MDK脚本代码,其实这部分代码和MDK脚本代码实现类似的功能。

1、编写PreStackInit代码

我们从.\DeviceCode\Drivers\Stubs\Processor\stubs_PreStackInit目录到.\DeviceCode\Targets\Native\CortexM3\DeviceCode,并修改目录的名字为PreStackInit,下一步我们在子目录RVD_S下的PreStackInit.s中添加如下汇编代码:

EXPORT PreStackInit

IMPORT PreStackInit_Exit_Pointer

PRESERVE8

AREA SectionForBootstrapOperations, CODE, READONLY

ENTRY

PreStackInit

; 初始化SRAM

; 使能FSMC时钟

; Enable FSMC clock

LDR R0,= 0x00000114

LDR R1,= 0x40021014

STR R0,[R1]

; 使能FSMC相关的GPIO的时钟

; Enable GPIOD, GPIOE, GPIOF and GPIOG clocks

LDR R0,= 0x000001E0

LDR R1,= 0x40021018

STR R0,[R1]

; SRAM Data lines, NOE and NWE configuration

; SRAM Address lines configuration

; NOE and NWE configuration

; NE3 configuration

; NBL0, NBL1 configuration

LDR R0,= 0x44BB44BB

LDR R1,= 0x40011400

STR R0,[R1]

LDR R0,= 0xBBBBBBBB

LDR R1,= 0x40011404

STR R0,[R1]

LDR R0,= 0xB44444BB

LDR R1,= 0x40011800

STR R0,[R1]

LDR R0,= 0xBBBBBBBB

LDR R1,= 0x40011804

STR R0,[R1]

LDR R0,= 0x44BBBBBB

LDR R1,= 0x40011C00

STR R0,[R1]

LDR R0,= 0xBBBB4444

LDR R1,= 0x40011C04

STR R0,[R1]

LDR R0,= 0x44BBBBBB

LDR R1,= 0x40012000

STR R0,[R1]

LDR R0,= 0x44444B44

LDR R1,= 0x40012004

STR R0,[R1]

; FSMC Configuration

; Enable FSMC Bank1_SRAM Bank

LDR R0,= 0x00001000

LDR R1,= 0xA0000010

STR R0,[R1]

LDR R0,= 0x00000200

LDR R1,= 0xA0000014

STR R0,[R1]

LDR R0,= 0x0FFFFFFF

LDR R1,= 0xA0000114

STR R0,[R1]

LDR R0,= 0x00001001

LDR R1,= 0xA0000010

STR R0,[R1]

; 重设向量表的地址 (定位到SRAM起始地址 0x20000000)

IF TargetLocation="RAM"

LDR R0,= 0x20000000

LDR R1,= 0xE000ED08

STR R0,[R1]

ENDIF

PreStackEnd

B PreStackInit_Exit_Pointer

END

其中下面的代码很重要,如果你通过RAM进行调试,并且该中断表位于RAM其实位置,则需要执行该命令。

IF TargetLocation="RAM"

LDR R0,= 0x20000000

LDR R1,= 0xE000ED08

STR R0,[R1]

ENDIF

2、修改.\Solutions\STM3210E\NativeSample\NativeSample.proj文件

NativeSample.proj文件中作如下修改:

<ItemGroup>

<RequiredProjects Include="$(SPOCLIENT)\DeviceCode\Drivers\Stubs\Processor\stubs_PreStackInit\dotNetMF.proj" />

<DriverLibs Include="cpu_prestackinit_stubs.$(LIB_EXT)" />

</ItemGroup>

修改为:

<ItemGroup>

<RequiredProjects Include="$(SPOCLIENT)\DeviceCode\Targets\Native\CortexM3\DeviceCode\PreStackInit\dotNetMF.proj" />

<DriverLibs Include="PreStackInit.$(LIB_EXT)" />

</ItemGroup>

3、修改.\Solutions\STM3210E\NativeSample\Scatterfile_tools_mdk.xml文件

<ExecRegion Name="ER_RAM_RO" Base="0x00000000" Options="ABSOLUTE" Size="0x0005ffe0">

修改为:

<ExecRegion Name="ER_RAM_RO" Base="0x20000000" Options="ABSOLUTE" Size="">

4、编译测试

上一篇文章和本篇文章所完成的操作其实只是铺垫,外在并没有什么效果表现。不过我们下一步将要做的设置芯片时钟将是重要一步,经过初始化时钟后,我们的开发板将会运行在72M的最高频率上,这时我们原先做LED闪烁节奏将大大提速。

分享到:
评论

相关推荐

    TFT7.0-SSD1963模块FSMC-TFTLCD显示实验--(适用于T100&T200&T300开发板).zip

    3. 初始化脚本:可能是一个单独的初始化函数或者一个配置文件,用于设置FSMC和SSD1963。 4. 示例代码:演示如何使用驱动函数在屏幕上显示图像。 总的来说,这个压缩包提供的资源可以帮助你理解和实践如何利用STM32...

    S3C2440片内SRAM初始化片外SDRAM

    在Keil为S3C2440A自动生成的代码上简单修改而来 功能:在片内SRAM中初始化片外SDRAM。bin文件目前只能在NandFlash模式下运行。若要在NorFlash模式下,需修改scatter文件。在keil下不知道怎么编译位置无关的代码。

    DE2-35 SRAM简单读写VHDL源码

    DE2-35 SRAM简单读写VHDL源码主要涉及的是数字逻辑设计领域,具体是使用硬件描述语言VHDL对静态随机访问存储器(SRAM)进行读写操作的设计。在嵌入式系统和FPGA(Field Programmable Gate Array)应用中,SRAM是一种...

    512-Bit-SRAM-master_SRAM_SRAMdesign_memory_

    《512-Bit-SRAM-master:深入理解6T SRAM设计与内存技术》 在电子工程领域,静态随机存取存储器(Static Random-Access Memory,简称SRAM)是广泛应用的一种内存类型,尤其在高性能计算和嵌入式系统中扮演着重要...

    TSOP-48N Cadence footprint& LPWizard

    TSOP-48引脚封装,LPWizard封装定制软件。本文件内有LPWizard10.4的安装包和相关的库,破解程序等一套文件...使用LPWizard可以生成自己想要的大部分pcb元器件封装,如电阻、电容、电感、LED、LDO、FPGA、SRAM、SDRAM等

    LPC2478mdk例程SRAM.

    在研究这个压缩包时,应重点关注代码中的初始化函数、内存分配策略、数据存取模式以及中断处理中的SRAM操作。同时,结合MDK的编译和调试工具,能更深入地理解代码运行过程,提升嵌入式系统的开发能力。

    从Flash和SRAM中触发中断的过程示例

    ### 从Flash和SRAM中触发中断的过程示例 #### 概述 ...从初始化硬件资源、配置定时器到编写中断服务程序,每一步都至关重要。理解这些原理有助于开发者更好地利用嵌入式系统的资源,优化应用程序的性能。

    行业分类-设备装置-改善SRAM单元可写性.zip

    在IT行业中,SRAM(Static Random-Access Memory)是一种常见的半导体存储器类型,以其高速读取和写入能力而著称。"行业分类-设备装置-改善SRAM单元可写性.zip"这个压缩包文件主要关注的是如何提高SRAM单元的可写性...

    16x4-6T-SRAM-Memory-Block-master_SRAM_SRAMdesign_

    标题中的“16x4-6T-SRAM-Memory-Block-master”暗示了这是一个关于设计16位宽、4字深度的6晶体管(6T)静态随机存取存储器(SRAM)内存块的项目。SRAM是集成电路中常用的高速缓存存储技术,它在不需要刷新的情况下能...

    TEST-TFT SRAM.zip

    2. **SRAM配置**:在STM32的寄存器配置中,设置外部SRAM的起始地址、大小以及访问模式,以便处理器能正确地读写外部SRAM。 3. **驱动适配**:针对ATK4.3寸屏幕,可能需要编写或修改LCD驱动程序,使其能够通过STM32...

    DRAM--SRAM--SDRAM的区别

    存储器(Memory)是计算机系统中的记忆设备,用来存放程序和数据。计算机中全部信息,包括输入的原始数据、计算机程序、中间运行结果和最终运行结果都保存在存储器中。它根据控制器指定的位置存入和取出信息。...

    FSMC-access-SRAM.rar_SRAM_SRAM STM32_STM32 SRAM_fsmc_stm32 fsm

    总结,通过STM32的FSMC总线访问SRAM是一种常见的扩展存储方式,它涉及到硬件连接、FSMC控制器的初始化、地址映射以及优化策略等多个环节。正确理解和运用这些知识点,能够帮助开发者充分利用STM32的资源,构建高效、...

    ARM嵌入式系统初始化过程

    ### ARM嵌入式系统初始化过程详解 #### 一、引言 ARM嵌入式系统作为现代电子设备的核心组件之一,在物联网、智能硬件等领域扮演着重要角色。为了确保系统的正常运行和高效性能,ARM嵌入式系统的初始化过程至关重要...

    NIOS教程4---使用起SRAM

    此外,还需编写相应的驱动程序,用以处理与SRAM的交互,包括初始化、数据读写等操作。 #### 7. 程序烧录 完成设计和编程后,下一步是将编译好的程序烧录至EPCS4配置存储芯片中。这一过程通常涉及生成配置文件、...

    ·IP项目实践:AHB-SRAM设计与验证 (AMBA 2.0 AHB 可以写入简历)

    ### IP项目实践:AHB-SRAM设计与验证 #### 背景介绍 在系统级芯片(SoC)设计领域,内存子系统的设计是至关重要的一个环节。内存接口的性能直接影响到整个系统的运行效率和可靠性。其中,高级微控制器总线架构...

    STM32F103_初始化程序_STM32F103_

    4. **系统内存和外设初始化**:包括SRAM的初始化、Flash存储区的设置,以及如ADC、SPI、I2C、UART等外设的初始化。例如,对于一个使用串口通信的应用,需要设置USART的波特率、数据位、停止位、奇偶校验等参数。 5....

    ARM系统初始化过程 bootloader

    在初始化异常向量表时,需要将中断向量表的每个入口点设置为对应的中断处理程序,同时也需要设置中断优先级和中断屏蔽位等。在 ARM 微处理器中,一共有 7 种中断类型,每种中断类型都有其对应的中断向量表入口点。 ...

Global site tag (gtag.js) - Google Analytics