硬汉嵌入式论坛

 找回密码
 立即注册
查看: 410|回复: 5
收起左侧

关于F429的双Bank启动疑问。

[复制链接]

13

主题

52

回帖

91

积分

初级会员

积分
91
发表于 2024-2-2 16:14:18 | 显示全部楼层 |阅读模式
以前没了解过,这几天研究了一下。我看了手册,发现与之相关的有三个参数。
首先是要设置Option bytes。这个实际就是一段用户配置参数flash。这里面有两个相关参数
1.DB1M 用来开启双Bnak
2.BFB2   用来设置从哪个Bank启动
这两个参数我的理解是这样的:首先肯定是要设置 DB1M 开启双bank。然后比我我当前固件APP1运行在bank1区,然后我执行升级,将固件APP2写入在bank2区,写入完成后对 BFB2 进行设置让系统下次从bank2启动,然后执行一次复位。
对这两个参数的设置实际就是写flash操作,然后芯片内部自举的时候会读用户设置参数,根据用户设置参数进行启动。

但是还有个FB_MODE,这个是在  SYSCFG memory remap register (SYSCFG_MEMRMP)中,FB_MODE的说明如下
Bit 8 FB_MODE: Flash Bank mode selection
       Set and cleared by software. This bit controls the Flash Bank 1/2 mapping.
      0: Flash Bank 1 is mapped at 0x0800 0000 (and aliased at 0x0000 0000) and
          Flash Bank 2 is mapped at 0x0810 0000 (and aliased at 0x0010 0000)
      1: Flash Bank 2 is mapped at 0x0800 0000 (and aliased at 0x0000 0000) and
          Flash Bank 1 is mapped at 0x0810 0000 (and aliased at 0x0010 0000)

如果我在bank2启动,但是我的固件我不想改向量表(也就是同一份代码来升级)则需要设置映射,相当于将bank2起始映射到0x0800 0000。

但是这个 FB_MODE 应该在什么时间设置呢?


回复

使用道具 举报

13

主题

52

回帖

91

积分

初级会员

积分
91
 楼主| 发表于 2024-2-2 17:00:33 | 显示全部楼层
看了AN4826文档,有如下说明
4.2 闪存存储区交换:
一旦激活双启动模式且启动地址有效,自举程序便会设置闪存存储区交换位( SWP_FB =1),生成以下映射。
4.2.1 1 MB闪存存储区交换
– 闪存存储区2基址映射在0x08000000( AXI)
– 闪存存储区1基址映射在0x08000000( AXI)

这意思是说映射bit不需要用户软件去设置吗?是由芯片的自举程序去设置?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106856
QQ
发表于 2024-2-3 08:29:43 | 显示全部楼层
Hzzz 发表于 2024-2-2 17:00
看了AN4826文档,有如下说明
4.2 闪存存储区交换:
一旦激活双启动模式且启动地址有效,自举程序便会设置 ...

1、FB_MODE 这个就是BANK1和BANK2地址映射,应用效果来看到就是两个BANK的实际地址交换了下。
2、这个一般都是配置选项字节来设置的。

回复

使用道具 举报

13

主题

52

回帖

91

积分

初级会员

积分
91
 楼主| 发表于 2024-2-3 13:49:40 | 显示全部楼层
eric2013 发表于 2024-2-3 08:29
1、FB_MODE 这个就是BANK1和BANK2地址映射,应用效果来看到就是两个BANK的实际地址交换了下。
2、这个一 ...

也就是芯片自举到时候根据想选字节选择的bank1还是bank2,自举会自动设置这个映射吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106856
QQ
发表于 2024-2-3 16:37:22 | 显示全部楼层
Hzzz 发表于 2024-2-3 13:49
也就是芯片自举到时候根据想选字节选择的bank1还是bank2,自举会自动设置这个映射吗?

对,根据选项字节的配置,使能相应的映射。
回复

使用道具 举报

13

主题

52

回帖

91

积分

初级会员

积分
91
 楼主| 发表于 2024-2-5 10:07:45 | 显示全部楼层
eric2013 发表于 2024-2-3 16:37
对,根据选项字节的配置,使能相应的映射。

确实,今天放假了,做了个测试。我写了个串口程序,然后定义为APP1,烧录在0x0800 0000,这个时候OPT设置DB1M=1;BFB2=0;然后跑的是BANK1区的,然后我做一个APP2的bin文件,使用Cubemxprg把APP2烧录在
0x0808 0000,将BFB2=1;然后上电跑的就是BANK2的程序。最后祝硬汉哥新年快乐!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-7 22:15 , Processed in 0.183787 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表