Advertisement

Keil MDK STM32 SRAM调试

  • 5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:PDF


简介:
KEIL MDK在STM32开发中采用SRAM作为主要的调试内存,并提供详细的调试方案和步骤说明。在嵌入式系统快速发展的背景下,STM32作为一款高性能、低成本的微控制器(MCU),已成为各种嵌入式系统设计中不可或缺的关键元件。Keil MDK作为开发STM32等ARM系列微控制器的一套非常流行的工具 IDE,在提升开发效率方面发挥了重要作用。任何试图深入掌握STM32开发技术的工程师都需要熟练运用 Keil MDK 这一强大的开发平台来完成程序设计与调试工作。本文将深入探讨如何借助 Keil MDK 在 STM32 系列微控制器上实现 SRAM 基础上的调试方法。这种方法能够有效缓解因频繁重写 FLASH 而导致的 MCU 寿命缩短的问题。#### 二、基础知识简介 - **STM32**: 采用ARM Cortex-M核心设计的32位微控制器系列。该系列以其高性能和灵活性著称,广泛应用于嵌入式系统开发中。 - **Keil MDK**: 提供一套完整的开发环境,专为基于ARM架构的微控制器而设计。它集成了一系列工具和服务,帮助开发者高效地完成项目。 - **SRAM (Static Random Access Memory)**: 具有持久性的静态随机存取存储器,其特点是即使在进行读写操作期间,数据也不会丢失或损坏。 - **FLASH**: 一种非易失性存储器技术,通常用于存储程序代码和用户数据。然而需要注意的是,其擦写次数存在一定的限制。#### 三、准备工作 - **硬件准备**: - 具体采用128KB存储容量的STM32F103RBT6开发板,并配备其20K字节的快速访问静态存储器(SRAM)。 - 提供集成的J-Link调试工具。 - **软件准备**: - 采用最新开发版的Keil MDK开发环境,支持该调试工具的官方驱动程序。第1步 拷贝`RAM.ini`文件 - 将位于Keil MDK安装目录下的`RAM.ini`文件(例如:C:\Keil\ARM\Boards\KeilMCBSTM32STLIB_Blinky)放入项目目录。步骤2: 新增新目标在步骤三中,在配置选项卡“SRAM”中设置IROM1的起始地址为$0x20000000$,大小设定为4KB;IRAM1则从地址$0x20004000$开始,大小为1KB。这将使用16KB的SRAM模拟Flash功能,并用4KB的SRAM实现RAM功能。 步骤4 在`Debug`选项卡中设置Cortex-M3 J-LINK作为仿真器并指定初始化文件为之前复制的$...$文件。取消`Load Application at Startup`复选框以避免应用在启动时加载。 步骤6: 进行仿真器的进一步配置 在软件界面的设置菜单中单击[Settings]按钮以进入详细设置页面。请将[Interface]选项设置为USB接口。在Flash Download功能模块中避免进行erase操作,这有助于保护数据不被意外删除。接下来,您需要从内存地址0x20004000开始分配存储空间长度为十六进制1000字节。同样地,在RAM算法配置部分将起始地址设置为内存地址范围的最前段,并指定大小参数以定义数据块的空间需求。如果当前选项列表中未包含此型号的闪存配置项,则应进行手动添加操作以完成设置。**步骤7**:配置闪存编程序工具。在`Utilities`选项卡中选择Cortex-M3 J-LINK作为闪存编程序工具,并相应地进行设置。**步骤8**: 开始调试 在调试过程中应避免调用Flash菜单中的下载功能。请牢记以下关键地址与容量:该内存块的起始地址设定在$0x20000000,其存储容量为16KB;模拟Flash功能时所使用的存储容量为16KB;模拟RAM的功能则由起始地址$0x20004000控制。当程序需要处理中断时,请确保在代码中加入相应的宏定义来支持这一功能。经过这些步骤,能够有效利用STM32单片机的SRAM存储器进行调试操作。这种做法不仅有效地防止了FLASH存储器因频繁擦写而造成的寿命缩短问题,同时也帮助初学者更加轻松地掌握STM32开发的基本技能。

全部评论 (0)

还没有任何评论哟~
客服
客服
  • STM32系列 Keil MDK
    优质
    STM32系列Keil MDK包是一款专为基于ARM Cortex-M内核的STM32微控制器开发的应用软件套装,提供高效的代码编写、编译及调试环境。 由于上传大小限制,包提供通过百度云下载。以下是需要的文件:Keil.STM32F0xx_DFP.2.0.0.pack、Keil.STM32F1xx_DFP.2.2.0.pack、Keil.STM32F4xx_DFP.2.13.0.pack和Keil.STM32F7xx_DFP.2.10.0.pack。
  • STM32 Keil MDK安装包
    优质
    STM32 Keil MDK安装包是一款专为基于ARM Cortex-M系列内核的STM32微控制器开发的应用程序开发环境,支持C/C++编程语言,集成了编译器、调试器和仿真工具,帮助开发者高效地进行嵌入式系统应用设计与测试。 安装 Keil MDK 后需要下载并安装对应硬件的 pack 包才能使用,但直接通过 MDK 下载会很慢。请到官网或其他可靠来源下载所需的 pack 文件,然后在 MDK 安装目录下找到 PackInstaller.exe 并运行它来导入这些包。常用的 pack 包包括: - STM32F0xx_DFP.2.1.0 - STM32F1xx_DFP.2.3.0 - STM32F2xx_DFP.2.9.0 - STM32F3xx_DFP.2.1.0 - STM32F4xx_DFP.2.14.0 - STM32F7xx_DFP.2.13.0 - STM32W1xx_DFP.1.0.0 - ARM.CMSIS.5.7.0 - CMSIS-Driver.2.6.1 请确保下载的 pack 文件来源可靠。
  • STM32 SRAM启动的Keil配置
    优质
    本文章详细介绍如何在Keil开发环境中为基于STM32系列微控制器设置SRAM作为启动内存的步骤和注意事项。适合嵌入式开发者参考学习。 为了使STM32微控制器从SRAM启动而不是默认的Flash存储器启动,在硬件层面需要将BOOT0引脚设置为高电平(即1),同时保持BOOT1同样为高电平,这样设备会在上电或复位时直接进入SRAM模式并执行其中的第一条指令。 在软件配置方面,如果使用的是STMicroelectronics提供的标准库函数版本3.5及以上,则可以在`system_stm32f10x.c`文件中进行相应的设置。在这个文件里定义了宏`#define VECT_TAB_SRAM 2.x`,这指示中断向量表的位置被设定在SRAM区域。 对于动态切换中断向量表的地址位置,可以使用STM32微控制器内置的Nested Vectored Interrupt Controller (NVIC) 提供的功能。以下两个函数分别用于将IVT设置为Flash或SRAM起始地址: 1. `NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x00);` 将中断向量表的位置设在Flash存储器的开始位置,即0x00000000。这是默认配置,在从Flash启动时使用。 2. `NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x2000000);` 将中断向量表的位置设在SRAM起始地址处,即地址为内存映射的开始位置(通常是0x2000000)。当从SRAM启动时需要调用此函数。 使用Keil MDK IDE配置STM32工程以支持SRAM启动的过程如下: 1. 打开项目属性对话框。 2. 在Target选项卡中,找到“Startup”类别,并将“Vector Location”的设置更改为Internal RAM。这指示编译器生成的中断向量表应位于SRAM区域而非Flash存储区。 3. 确保Code Location被正确配置为Internal FLASH, 以保证程序代码依然存放在Flash中,因为启动时需要加载到SRAM中的只是初始化数据和运行所需的少量代码片段而已。 完成上述设置后,Keil将生成一个适合从SRAM启动的映像文件。当编译并下载该映像至STM32设备上之后,在BOOT引脚配置正确的情况下,微控制器将会在复位时直接进入SRAM模式,并执行存储于其中的程序代码。 值得注意的是,由于SRAM本身不包含任何初始化信息,从SRAM启动的应用需要在其启动函数(例如`SystemInit()`)中自行加载Flash中的初始设置到内存并进行必要的跳转操作。这样可以确保在运行期间能够顺利访问和利用Flash中的完整应用程序库或数据结构。 综上所述,配置STM32微控制器以实现其从SRAM而非默认的Flash启动涉及硬件引脚设定、软件函数调用以及Keil IDE项目设置等多方面的知识和技术细节。这些步骤对于开发人员来说非常重要,能够帮助他们灵活地在不同存储介质之间切换启动方式,并根据具体需求选择最合适的解决方案。
  • Keil MDK STM32系列的PACK包
    优质
    Keil MDK STM32系列的PACK包是为基于ARM Cortex内核的STM32微控制器提供的集成开发环境插件,包含了一系列硬件支持和软件库,便于开发者进行高效编程与调试。 Keil MDK STM32系列 PACK包包含以下内容: 1. 包含STM32F0xx、F1xx、F2xx、F3xx、F4xx等型号的PACK,包括最新版本及历史版本。 2. 含有Keil其他所有系列pack(如RTOS、Kinetis、MCB、STBlue、LPC、V2M、EFM等)高速下载教程。 * 所有pack均来自Keil官网且未作任何改动。由于官网直接下载速度较慢,提供了一个更快的下载方式。 * 压缩包大小超过640MB,请确保有足够的存储空间进行下载和安装。
  • STM32 IAR工程转Keil MDK详解
    优质
    本文详细介绍了如何将基于IAR开发环境的STM32工程项目转换到Keil MDK平台的过程和注意事项,帮助开发者高效迁移项目。 大多数STM32示例程序都是使用IAR开发环境编写的,但我认为Keil MDK更便于操作,并且可以利用RVMDK的强大外设仿真功能来加速STM32的开发工作。我在之前的博客文章中介绍过如何在RVMDK环境中建立一个STM32工程以及如何运用其软件仿真功能,接下来我将详细说明怎样把现有的IAR项目迁移到Keil MDK。 无论是使用IAR还是RVMDK进行编程时都基于相同的STM32固件函数库。唯一的区别在于启动文件的不同:在创建一个新的STM32项目时,RVMDK会自动生成名为`STM32F10x.s`的启动文件;而IAR则使用的是`cortexm3_macro.s`作为其启动文件。 此外,在中断向量表管理方面两者也有所不同。当从IAR环境迁移至Keil MDK时,首先需要确认原项目是否已经利用了中断功能。这可以通过检查工程中的stm32f10x_it.c文件内的各个中断函数来实现:如果这些函数为空,则说明没有使用到任何中断;反之,若发现它们被修改过,并且在main函数中对NVIC进行了相应的设置,则表明确实存在中断的应用。
  • STM32 Keil MDK启动代码分析
    优质
    本文章深入解析了基于STM32微控制器使用Keil MDK开发环境时的启动代码工作原理和实现细节,旨在帮助开发者更好地理解和利用嵌入式系统编程中的关键步骤。 这段代码是用于ARM处理器的汇编语言程序的一部分,主要用于实现复位处理函数(Reset_Handler)。下面是对你提到的两个概念的具体解释: 一:PROC 和 ENDP 是 ARM 汇编中定义子过程或子例程的关键字。 - `PROC` 用来标记一个新过程或者子程序开始; - `ENDP` 标记该过程结束。 二:[WEAK] 关键词表示在链接阶段如果存在同名的其他函数,那么这个特定声明为弱类型的函数会被忽略。也就是说,在定义 Reset_Handler 这个标号时加上 [weak] 选项意味着如果有别的文件中同样定义了 Reset_Handler,则编译器会使用那个版本而不是这里的。 具体代码解释如下: ```assembly Reset_Handler PROC ; 定义一个名为 Reset_Handler 的过程开始 EXPORT Reset_Handler [WEAK]; 导出该标号,同时声明它为弱类型(即可以被其他定义覆盖) IMPORT __main; 从外部导入 __main 函数地址 LDR R0, =__main ; 将 _main 地址加载到寄存器R0 BX R0 ; 跳转至R0所指向的地址,开始执行C程序入口函数 ENDP ; 结束过程定义 ``` 这段代码的主要功能是设置系统复位时调用 C 语言运行库中的初始化函数(__main),从而启动应用程序。
  • Keil MDK 中利用虚拟串口进行
    优质
    本简介介绍如何在Keil MDK开发环境中使用虚拟串口进行嵌入式系统的调试方法,帮助开发者更有效地测试和优化代码。 题目有点拗口,想利用串口调试Modbus、GPS等功能,但手头缺少硬件设备。其实通过使用字节KEIL MDK和VSPD这两个软件就可以实现方便的串口调试功能(这两个软件在网上很容易就能找到)。我已经查阅了很多相关文章,发现它们介绍的方法都很简单(实际上确实很简单)。 如果需要一个更详细的教程,请告诉我你的具体需求或问题点,我会尽量提供帮助。
  • Keil MDK-5.36
    优质
    Keil MDK-5.36是基于ARM架构微控制器开发的集成软件开发环境,集成了编译器、调试器和一整套工具,帮助开发者高效构建嵌入式系统应用。 该资源包含一个STM32F10x的芯片包,下载无需积分且不需额外付费。若官方进行调整,请理解我无法控制这些变化。
  • Keil MDK 5.38a
    优质
    Keil MDK 5.38a是一款功能强大的开发工具套件,专为基于ARM架构的微控制器设计,支持C/C++编程语言和实时操作系统,适用于嵌入式系统开发。 Keil MDK5.38a是一款常用的嵌入式系统开发软件工具。