首页 > 其他分享 >F407在RAM中调试

F407在RAM中调试

时间:2024-07-01 20:53:31浏览次数:1  
标签:RW SRAM RAM 地址 F407 address ANY 调试

在RAM中调试代码

一.软硬件操作

硬件方面需要先修改BOOT0和BOOT1的引脚的高低电平。SRAM运行模式BOOT0和BOOT1都是高电平。

软件方面:

1.需要先取消勾选Use Memory Layout from Target Dialog,点击下方的Edit编辑.sct


2.修改.sct分散加载文件
原始文件

LR_IROM1 0x08000000 0x00080000  {    ; load region size_region
  ER_IROM1 0x08000000 0x00080000  {  ; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
   .ANY (+XO)
  }
  RW_IRAM1 0x20000000 0x00020000  {  ; RW data
   .ANY (+RW +ZI)
  }
}

修改后的文件

LR_IROM1 0x20000000 0x00010000  {    ; load region size_region
  ER_IROM1 0x20000000 0x00010000  {  ; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
   .ANY (+XO)
  }
  RW_IRAM1 0x20010000 0x00010000  {  ; RW data
   .ANY (+RW +ZI)
  }
}

3.添加宏更改中断向量表的地址

pkckYoq.png

  /* Configure the Vector Table location add offset address ------------------*/
#ifdef VECT_TAB_SRAM
  SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */
#else
  SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */
#endif

不直接在文件中添加宏定义是因为工程保留了SRAM和FLASH二种下载方式

pkckUYV.png

4.修改文件下载设置

pkckaWT.png

这里的地址需要和修改后的.sct文件的地址对应起来,不然会下载失败的

pkckwSU.png

在debug界面需要勾选Verify Code Download

pkck0lF.png

在.map文件下可以看到,地址变了0x20000000地址偏移,而不是FLASH的0x08000000地址。

这样就可以进行SARM的配置,直接通过JLINK下载即可。SARM下载会在断电后丢失程序。

二、原理

STM32在系统上电在某个地址下取出栈指针地址和程序指针地址,而BOOT引脚的不同电平,会将地址映射到不同的地址去取值。

6fmuh4k2TbWYeQt.png

三种启动方式的区别

image.png

视频链接:野火F407-在RAM中调试代码

标签:RW,SRAM,RAM,地址,F407,address,ANY,调试
From: https://www.cnblogs.com/qianXiaoHei/p/18278820

相关文章

  • Appium+python自动化(三十三)- 本地调试测试代码,远程控制测试环境-Remote(超详解)
    简介在前边所有涉及启动app的时候有这样一行代码driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps),很多小伙伴们和同学们不知道这个ip和端口哪里来的,我觉得有必要给小伙伴解释一下,于是宏哥决定写一篇关于这个appium的服务器ip文章!来给大家答答疑......
  • 前端页面防止它人代码调试
    今天分享一段JS 代码片段,是防止代码被调试或篡改的基础。老规矩,先阅读代码片段并思考,再看代码解析再思考,最后评论区留下你的见解!(()=>{function ban(){   setInterval(()=>{debugger;}, 50);   try {      ban();   } catch(err){}}ban();})(......
  • 在React项目中使用iframe嵌入一个网站
    在React项目中使用iframe嵌入一个网站非常简单。以下是如何在页面中嵌入百度网站的步骤:1.创建一个新的组件用于嵌入iframe首先,在src/components文件夹中创建一个新的文件Baidu.js。在Baidu.js文件中,编写如下代码://src/components/Baidu.jsimportReactfrom'react'......
  • 7月1日 STM32F407VET6对Flash的入门学习(记录)
    1、Flash的使用之前必须对Flash进行擦除,不能直接写入进行覆盖。其原因是Flash的工作原理存储二进制的0和1,且只能实现从1到0的变化。这就意味着但Flash中已经烧入由0和1组成的文件后,无法直接再次烧入其他二进制文件。必须使用特定的函数将Flash中已存在的0和1全部转换成1,这个就......
  • 可计算离散整体几何结构的 MeshDGP使用——基于C#的geometry processing framework几
    目录引出MeshDGP项目下载和打开遇到的报错解决如何运行使用打开使用函数工具菜单等总结其他CAD/CAE/CAM几何引擎-软件概述郝建兵CAD/CAE/CAMCADCAECAM几何模型内核ACIS两个老大之一OpenCascadeParasolid两个老大之一Autodesk的内核各种CAD自定义信号和槽1.自定......
  • C语言--vs使用调试技巧
     1.什么是bug?1.产品说明书中规定要做的事情,而软件没有实现。2.产品说明书中规定不要做的事情,而软件确实现了。3.产品说明书中没有提到过的事情,而软件确实现了。4.产品说明书中没有提到但是必须要做的事情,软件确没有实现。5.软件很难理解,很难使用,速度超慢,测试人员站在......
  • Paper Reading: Genetic programming for multiple-feature construction on high-dim
    目录研究动机文章贡献预备知识本文方法MCIFC:一种多类无关的特征构建方法CDFC:一种多类相关特征构建方法实验结果数据集和实验设置多特征构造与单特征构造对比多树GP对比单树GPfilter对比混合方法类依赖对比类独立非GP对比基于GP的特征构建优点和创新点PaperReading是从......
  • 《Programming from the Ground Up》阅读笔记:p1-p18
    《ProgrammingfromtheGroundUp》学习第1天,p1-18总结,总计18页。一、技术总结1.fetch-executecyclep9,TheCPUreadsininstructionsfrommemoryoneatatimeandexecutesthem.Thisisknownasthefetch-executecycle。2.general-purposevsspecial-purpose(......
  • 【重写SpringFramework】第一章beans模块:本章小结(chapter 1-13)
    1.前言在Spring框架中,beans模块是仅次于core模块的基础模块。我们知道,IOC机制是Spring框架的两大基石之一,beans模块的主要任务就是实现控制反转和依赖注入的功能。从具体实现来说,BeanFactory接口是整个模块的核心接口,几乎所有功能都是围绕对象展开的。BeanFacto......
  • PCA + Hclust Dendrogram
    library(factoextra)#可视化library(FactoMineR)#PCA聚类library(tidyverse)df<-iris%>%select(-Species)%>%na.omit()%>%scale()%>%scale(center=TRUE,scale=FALSE)res.pca<-PCA(df,ncp=3,graph=FALSE)res.hcpc&l......