硬汉嵌入式论坛

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

[BSP视频教程] STM32H7视频教程第7期:MDK专题高级进阶,重要的分散加载使用,通过各种实战案例来学习(2022-02-24)

  [复制链接]

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115490
QQ
发表于 2022-2-24 03:29:35 | 显示全部楼层 |阅读模式
分散加载在IDE开发环境中有着举足轻重的作用,通过分散加载,我们可以方便的指定程序代码和变量的存储位置。特别是像H7这种多个RAM块,外置SDRAM空间,以及内部Flash和外置内存映射的QSPI Flash。
比如我们想把时间关键代码放到ITCM里面运行,而占用空间超大,又不需要快速执行的代码放到QSPI Flash运行,都可以方便的配置。

视频(1080p):

https://www.bilibili.com/video/BV1MR4y157XS




本期视频主要分为三个部分:
第1部分,分散加载基础知识。

第2部分,通过各种实战案例学习:
(1)案例1:像使用通用SRAM一样定义使用STM32H7的所有RAM块和外部SDRAM。
(2)案例2:时间关键代码在 ITCM 执行,同时中断向量表也复制了进来
(3)案例3:STM32H7内部Flash和QSPI Flash混合运行程序的方式。
(4)案例4:字库,图库等通过MDK一键下载到外部QSPI/SPI Flash。

第3部分:AC5和AC6的异同。
(1) 官方文档。
(2) 未初始化变量分散加载配置的不同
(3) 分散加载中添加宏定义和#include头文件。

第4部分,通过官方手册,分散加载稍微深入了解.
(1)根域。
(2).ANY设置不同加载优先级。


参考资料和文件下载:
资料下载:
https://pan.baidu.com/s/1K0eSO25UTzlgqdymQ2rUxw  提取码:oh6l

ARM分散加载文档:
https://developer.arm.com/docume ... using-scatter-files

AC5和AC6未初始化变量定义方法:
https://developer.arm.com/documentation/ka003046/latest

STM32H7的MDK汇编启动代码__main,__initial_sp,__Vectors等在C里面的调用方法
https://www.armbbs.cn/forum.php?mod=viewthread&tid=100050

MDK中根域的含义
https://www.armbbs.cn/forum.php?mod=viewthread&tid=111079




回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115490
QQ
 楼主| 发表于 2022-2-24 03:56:40 | 显示全部楼层
更新完毕。
回复

使用道具 举报

24

主题

131

回帖

203

积分

高级会员

积分
203
发表于 2022-2-24 07:32:19 | 显示全部楼层
白总抽空讲讲RT1052进阶呗,好羡慕用STM32的有这好福利
回复

使用道具 举报

4

主题

1441

回帖

1453

积分

至尊会员

积分
1453
发表于 2022-2-24 08:34:07 | 显示全部楼层
回复

使用道具 举报

0

主题

6

回帖

6

积分

新手上路

积分
6
发表于 2022-2-24 11:23:08 | 显示全部楼层
H7tool的这种app和stack是不是使用这种分散加载的方式呢?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115490
QQ
 楼主| 发表于 2022-2-24 11:32:19 | 显示全部楼层
1132520084 发表于 2022-2-24 11:23
H7tool的这种app和stack是不是使用这种分散加载的方式呢?

H7-TOOL大量使用了分散加载,所有RAM块都做了分配。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115490
QQ
 楼主| 发表于 2022-2-24 11:32:41 | 显示全部楼层
yxydoctor 发表于 2022-2-24 07:32
白总抽空讲讲RT1052进阶呗,好羡慕用STM32的有这好福利



这个是通用的,其它平台也可以用。
回复

使用道具 举报

1

主题

3

回帖

6

积分

新手上路

积分
6
发表于 2022-6-12 17:51:03 | 显示全部楼层
请教:把图库字库等下载到外部SPI_FLASH这种方法在STM32F103系列芯片上是否可以实现?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115490
QQ
 楼主| 发表于 2022-6-12 18:06:46 | 显示全部楼层
heping 发表于 2022-6-12 17:51
请教:把图库字库等下载到外部SPI_FLASH这种方法在STM32F103系列芯片上是否可以实现?

【实战技能】任何支持SWD接口的单片机都可以方便移植的SPI Flash烧写算法制作,含视频说明(2022-05-30)
https://www.armbbs.cn/forum.php? ... 2600&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

1

主题

7

回帖

10

积分

新手上路

积分
10
发表于 2023-9-20 14:45:26 | 显示全部楼层
大佬您好,请问有没有外部spi flash下载算法的制作,就是将图片资源放在外部flash(w25q128)上
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115490
QQ
 楼主| 发表于 2023-9-21 07:22:04 | 显示全部楼层
嵌入式丨小白 发表于 2023-9-20 14:45
大佬您好,请问有没有外部spi flash下载算法的制作,就是将图片资源放在外部flash(w25q128)上

做了很多案例。

第3版emWin教程和ThreadX GUIX教程开工,双管齐下,GUIX更新至第30章,emWin更新至第57章(2022-04-04)
https://www.armbbs.cn/forum.php? ... 8429&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

5

主题

81

回帖

96

积分

初级会员

积分
96
发表于 2024-7-27 23:57:14 | 显示全部楼层
在学习这个视频的时候找不到QSPI的算法啊,要去哪里添加呢
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115490
QQ
 楼主| 发表于 2024-7-28 09:24:10 | 显示全部楼层
lizhaoming 发表于 2024-7-27 23:57
在学习这个视频的时候找不到QSPI的算法啊,要去哪里添加呢

https://www.armbbs.cn/forum.php? ... &extra=page%3D1

有对应章节的教程和算法源工程代码
回复

使用道具 举报

5

主题

81

回帖

96

积分

初级会员

积分
96
发表于 2024-7-28 12:37:41 | 显示全部楼层
分享一下自己在这期学习遇到的问题(还是太菜了),也给后面学习的小伙伴提醒下,第一是我在这个第7期的工程找不到外部FLASH的算法,最后是在https://www.armbbs.cn/forum.php? ... &extra=page%3D1这个网址下载的资料中的D:\STM32-V7驱动手册\STM32-V7裸机例程\V7-060_QSPI Flash的MDK下载算法制作\Project里面找到的,另外需要把这个FLM文件放到你keil下载目录的C:\MDK5\ARM\Flash里面,然后就可以添加了,在看第四个例子的时候,发现FLASH算法一直下载失败,我找了网上的方法试了都没用,最后对比第三个例子才发现FLASH DOWNLOAD里面的RAM for Algorithm的size从0x0000F000变成0x00001000了,修改后就可以了
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115490
QQ
 楼主| 发表于 2024-7-29 08:42:10 | 显示全部楼层
lizhaoming 发表于 2024-7-28 12:37
分享一下自己在这期学习遇到的问题(还是太菜了),也给后面学习的小伙伴提醒下,第一是我在这个第7期的工程 ...

谢谢分享。
回复

使用道具 举报

0

主题

8

回帖

8

积分

新手上路

积分
8
发表于 2024-9-14 13:39:33 | 显示全部楼层
汉子哥,看你的例子,
LR_IROM1 0x08000000 0x00200000  {    ; load region size_region
  ER_IROM1 0x08000000 0x00200000  {  ; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
  }
  
  RW_IRAM1 0x20000000 0x00020000  {  ; RW data - 128KB DTCM
   .ANY (+RW +ZI)
  }
  
  RW_IRAM2 0x24000000 0x00080000  {  ; RW data - 512KB AXI SRAM
   *(.RAM_D1)
  }
  
  RW_IRAM3 0x30000000 0x00048000  {  ; RW data - 128KB SRAM1(0x30000000) + 128KB SRAM2(0x3002 0000) + 32KB SRAM3(0x30040000)
   *(.RAM_D2)
  }
  
  RW_IRAM4 0x38000000 0x00010000  {  ; RW data - 64KB SRAM4(0x38000000)
   *(.RAM_D3)
  }
}


如果TCM空间不足咋办?多出的部分怎么加载到AXI ram中
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115490
QQ
 楼主| 发表于 2024-9-15 09:01:26 | 显示全部楼层
大花狸 发表于 2024-9-14 13:39
汉子哥,看你的例子,

这种的,可以不使用分散加载配置,直接使用MDK option里面将相关的地址都填上,勾选即可。

注意DMA使用支持的指定空间即可
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-28 23:06 , Processed in 0.362020 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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