stm32f767自举

news2024/11/27 8:44:51

仅作笔记

一,自举。

        在M0,M3,M4内核中,是通过boot0和boot1两个引脚的电平组合来确定启动地址的,启动的介质可以是系统存储器,SRAM,主Flash等。

        在M7内核中,是通过boot0的电平加 Flash 选项控制寄存器的值来决定的:

 

 总的来说,

 总结:stm32启动方式可以有flash,RAM,系统存储器三种。stm32f767只有一个boot引脚,自举(启动方式)模式由boot引脚 和BOOT_ADD0[15:0]和BOOT_ADD1[15:0]  来决定,默认状态下,boot=0,在flash启动,boot=1,在系统存储器启动。

 2,使用stm32CubeIDE在RAM中调试。

如果stm32如果想在RAM中调试,需要有以下几步

1,自举方式。

        在M0,M3,M4内核中,是通过boot0和boot1两个引脚决定。在M7内核中,只有boot0及boot引脚,是通过boot0的电平加 Flash 选项控制寄存器的值来决定的.

       stm32f767在RAM中调试,BOOT0保持低就可以了,不需修改。

2,要选用正确的链接脚本。分别对应于从flash启动和sram启动的脚本。

 

 3,中断向量表在SRAM定位。

从system_stm32f7xx.c程序中可以看出,如果想在ram中调试,需要宏定义USER_VECT_TAB_ADDRESS,VECT_TAB_SRAM这两个变量。


/************************* Miscellaneous Configuration ************************/

/* Note: Following vector table addresses must be defined in line with linker
         configuration. */
/*!< Uncomment the following line if you need to relocate the vector table
     anywhere in Flash or Sram, else the vector table is kept at the automatic
     remap of boot address selected */
/* #define USER_VECT_TAB_ADDRESS */

#if defined(USER_VECT_TAB_ADDRESS)
/*!< Uncomment the following line if you need to relocate your vector Table
     in Sram else user remap will be done in Flash. */
/* #define VECT_TAB_SRAM */
#if defined(VECT_TAB_SRAM)
#define VECT_TAB_BASE_ADDRESS   RAMDTCM_BASE    /*!< Vector Table base address field.
                                                     This value must be a multiple of 0x200. */
#define VECT_TAB_OFFSET         0x00000000U     /*!< Vector Table base offset field.
                                                     This value must be a multiple of 0x200. */
#else
#define VECT_TAB_BASE_ADDRESS   FLASH_BASE      /*!< Vector Table base address field.
                                                     This value must be a multiple of 0x200. */
#define VECT_TAB_OFFSET         0x00000000U     /*!< Vector Table base offset field.
                                                     This value must be a multiple of 0x200. */
#endif /* VECT_TAB_SRAM */
#endif /* USER_VECT_TAB_ADDRESS */
/******************************************************************************/

定义方法


 

4,中间由于没有定义USER_VECT_TAB_ADDRESS,报错

从上边的程序可以看出, 没有定义USER_VECT_TAB_ADDRESS的话,那段代码不执行。

 5,如果退回flash调试的话,复原回去就可以了。

参考文章:

1,原子开发板手册;

2,【NuttX】在STM32F767平台上的启动过程分析 - 知乎 (zhihu.com)

3,(9条消息) STM32系列--启动模式(boot0、boot1)_ora___的博客-CSDN博客

4,在cubeide中,设置成从SRAM启动程序 (stmicroelectronics.cn)

5,STM32CubeMX在SRAM中调试的设置-电子工程世界 (eeworld.com.cn)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/92175.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux内核调试技术之动态调试

前言 使用printk的打印方式只能通过设置输出等级来进行控制&#xff0c;具备一定的局限性。在实际系统运行过程中&#xff0c;我们更希望能选择性地打开某些子系统或者模块的输出&#xff0c;为此内核提供了动态调试技术。内核中包括pr_debug、dev_dbg接口都使用了动态调试技术…

javax.crypto.BadPaddingException: Decryption error

问题描述 使用Postman调用Java api解密token时 token值为iRdLmVEYUUvoH1oDF2QhSVhJxXYMRCxzbtJsL01Iun2OLHY/FxNQOrAwF4Bj2cdp1vhsXt9BQtcxmiyuCvyi2Itl2qlvlCT6VwRM6UgQ5SBIiInGlLYCrzDfOoQ74zhxwW7M43vIuLs6W0y7Rt86uZgmAR8gYwMLfvGnRg 执行时报错如下&#xff1a; 原因分析…

Redis框架(十二):大众点评项目 阻塞队列+异步处理 实现秒杀优化

大众点评项目 阻塞队列异步处理 实现秒杀优化需求&#xff1a;阻塞队列异步处理 实现秒杀优化为什么使用异步处理&#xff1f;为什么使用阻塞队列&#xff1f;为什么使用Lua&#xff1f;业务逻辑及其实现原有逻辑代码 / 优化后逻辑代码完整优化业务代码原有优化业务代码总结Spr…

Traefik整理

entryPoints配置 defaultEntryPoints ["oneway"][entryPoints]# 代表traefik的监听端口为90[entryPoints.oneway]address ":90"#90端口接收到的请求先进行鉴权&#xff0c;traefik会先访问跳转到http://127.0.0.1:51001/t/test1进行权限验证[entryPoint…

如何使用加密sqlite数据库

如何使用加密sqlite数据库&#xff0c;起始有开源的sqlcipher 可以去开源网站搜索一下&#xff0c;如码云&#xff0c;github等&#xff0c;那么如何编译呢&#xff0c; 这是我的虚拟机版本和 config参数 然后就会生成Makefile 直接make即可生成 sqlcipher可执行程序&#xff…

有关Monaco的使用疑惑

前言 学习monaco editor已经有三个多月了。阅读了大部分的的文档&#xff0c;也看了很多相关文章&#xff0c;也调研了一些使用它做的大型开源项目。 一开始的疑惑已经逐渐解开&#xff0c;但随着学习的深入&#xff0c;也遇到了比较奇怪的问题。这篇文件就来聊一聊&#xff0…

软考考试多少分通过?

当然是45&#xff01;45&#xff01;45&#xff01;而且是各科45&#xff01; 初级和中级考两科 综合知识&#xff1a;考试时间为 150 分钟&#xff0c;笔试&#xff0c;选择题&#xff08;上午 9:00-11:30&#xff09;案例分析&#xff1a;考试时间为 90 分钟&#xff0c;笔…

Divide by Zero 2021 and Codeforces Round #714 (Div. 2) C. Add One

Problem - C - Codeforces 翻译&#xff1a; 给你一个整数&#x1d45b;。您必须对其应用&#x1d45a;操作。 在单个操作中&#xff0c;必须将该数字的每个数字&#x1d451;替换为整数&#x1d451;1的十进制表示形式。例如&#xff0c;在应用一次操作后&#xff0c;1912变…

安利一个Python大数据分析神器!

对于Pandas运行速度的提升方法&#xff0c;之前已经介绍过很多回了&#xff0c;里面经常提及Dask&#xff0c;很多朋友没接触过可能不太了解&#xff0c;今天就推荐一下这个神器。 1、什么是Dask&#xff1f; Pandas和Numpy大家都不陌生了&#xff0c;代码运行后数据都加载到…

项目里接入了MQ消息中间件以后,我摸鱼的时间更长了~

V-xin&#xff1a;ruyuanhadeng获得600页原创精品文章汇总PDF 一、前情回顾 之前给大家聊了一下&#xff0c;面试时如果遇到消息中间件这个话题&#xff0c;面试官上来可能问的两个问题&#xff1a; 你们的系统架构中为什么要引入消息中间件&#xff1f;系统架构中引入消息中…

零跑汽车股价终于盼来了期望

近期零跑股价上涨&#xff0c;给其它汽车产业带来了危机。9月29日&#xff0c;零跑汽车作为第四位登陆港股的新势力车企&#xff0c;终于胜利敲钟。但是&#xff0c;紧接着等待零跑的却是刷新新势力纪录的开盘破发。 继开盘首日暴跌33%之后&#xff0c;9月30日收盘&#xff0c;…

Linux权限---用户权限切换与文件权限更改(附目录,哪里不懂点哪里)--- 第一期

目录 1. Linux权限的概念 1.1 什么是权限 1.2 所以权限的操作一共分为两类 1.3 Linux中&#xff0c;默认有两类用户 2. root与普通用户切换指令 2.1 如果想从普通用户转为超级用户可以进行下面操作 2.2 如果想从超级用户转为普通用户可以进行下面操作 2.3 禁止来回切换用…

阿里技术官耗时半年总结出“满分”架构笔记,拿捏分布式到微服务

第 1 章&#xff1a;深入理解网络 讲解分布式的基础一-网络&#xff0c; 对国际互联网、NIO、AIO、网络传输中的对象序列化问题、HTTP 的前世今生、TCP/IP、从 CDN 到 SD-WAN 等知识进行深入讲解。 详细章节介绍&#xff1a; 从国际互联网开始 NIO, 一本难念的经 AIO,大道至…

Redis 非关系型数据库

关系型数据库与非关系型数据库 Redis支持的键值数据类型 Redis中文网 2. 哈希类型 hash 删除&#xff1a;hdel key field 3. 列表类型 list:可以添加一个元素到列表的头部&#xff08;左边&#xff09;或者尾部&#xff08;右边&#xff09; 列表类型相当于队列 4. 集合…

Vue--》vue-router的导航守卫使用讲解

目录 前言 vue-router中编程式导航API 导航守卫 全局守卫 独享路由守卫 组件路由守卫 前言 在浏览器中点击链接实现导航的方式&#xff0c;叫做声明式导航。例如&#xff1a;普通网页中点击<a>链接、vue项目中点击<router-link>都属于声明式导航。 在浏览器…

0基础转软件测试该学些什么?

有很多人员会不断问自己&#xff0c;自己到底要不要学测试&#xff0c;或者要不要转行做测试&#xff0c;测试的职业发展到底怎么样&#xff1f;如果你还在迷茫&#xff0c;在到处找各种大牛问类似的问题&#xff0c;我希望这篇文章&#xff0c;你看完能够结束你的这个烦恼&…

从 0 到 1 搞一个 Compose Desktop 版本的玩天气之踩坑

从 0 到 1 搞一个 Compose Desktop 版本的玩天气之踩坑 大家好&#xff0c;好久不见&#xff0c;接下来一段时间我会系统性地写一套关于 Compose Desktop 的文章&#xff0c;带大家从头到尾写一个桌面版的天气应用&#xff0c;并且打好包让别人也可以进行使用&#xff0c;接下…

java判断选择的日期是否在某个时间区间

效果展示&#xff1a; 具体代码&#xff1a; String startTimeZoom "08:00";//时间区间-开始时间 String endTimeZoom "22:00";//时间区间-结束时间String startTimeChoice "08:00";//时间区间-选择的开始时间 String endTimeChoice "2…

Java中的异常(Exception)

目录 一、什么是异常(Exception)&#xff1f; 二、解决方案&#xff1a;try-catch 三、异常的概念 四、异常的体系图(重点) 小结&#xff1a; 五、常见的五大运行时异常 1、NullPointerException空指针异常 2、ArithmeticException数学运算异常 3、ArrayIndexOutOfBounds…

【MySQL进阶】浅谈InnoDB中的BufferPool

【MySQL进阶】浅谈InnoDB中的BufferPool 文章目录【MySQL进阶】浅谈InnoDB中的BufferPool一、前言——缓存的重要性二、InnoDB的Buffer Pool1&#xff1a;BufferPool 简介2&#xff1a;BufferPool内部组成3&#xff1a;free链表的管理4&#xff1a;flush链表的管理5&#xff1a…