硬汉嵌入式论坛

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

[MDK] MDK的FLM算法制作文档说明

  [复制链接]

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
119429
QQ
发表于 2020-11-4 16:18:20 | 显示全部楼层 |阅读模式

QSPI Flash和SPI Flash的MDK下载算法都做好了,准备写个教程,找了个官方的素材说明

这些知识点基本就够用了。

https://arm-software.github.io/C ... /algorithmFunc.html


QQ截图20201104161808.png
回复

使用道具 举报

0

主题

13

回帖

13

积分

新手上路

积分
13
发表于 2020-11-4 16:33:02 | 显示全部楼层
顶  这些知识大致的了解  系统的还得看大佬的教程了
回复

使用道具 举报

6

主题

685

回帖

703

积分

金牌会员

积分
703
QQ
发表于 2020-11-4 19:58:50 | 显示全部楼层
这两天正在研究KEIL下的FLM下载算法,已经基本入门,完成了STM32F103、STM32F107和STM32F407下的SPI FLASH下载算法,周末回去研究研究STM32H7的QSPI和SPI下载算法
回复

使用道具 举报

10

主题

48

回帖

78

积分

初级会员

积分
78
发表于 2024-1-23 15:47:36 | 显示全部楼层
硬汉哥,我生成的FLM文件在工程中加载不出来咋回事,放的路径是对的,放别的现成的flm文件是可以加载出来的。附件是我自己生成的flm文件

STM32H750_W25Q16.7z

247.87 KB, 下载次数: 9

FLM文件

回复

使用道具 举报

21

主题

481

回帖

544

积分

金牌会员

积分
544
发表于 2024-1-23 16:40:52 | 显示全部楼层
是可以用于IAP升级吗?
回复

使用道具 举报

10

主题

48

回帖

78

积分

初级会员

积分
78
发表于 2024-1-23 19:21:32 | 显示全部楼层
h_007 发表于 2024-1-23 16:40
是可以用于IAP升级吗?

是的,想通过串口(或者无线方式)实现IAP功能,在片上128KFlash中下载的是BootLoader,准备在外置Qspi Flash中运行App程序
回复

使用道具 举报

73

主题

179

回帖

398

积分

高级会员

积分
398
发表于 2025-7-29 17:11:20 | 显示全部楼层
硬汉,MCU没有内置flash,是从ROM启动,代码是存储在外置flash,正常应用流程是ROM的boot代码从flash读代码搬到RAM,然后在RAM里运行代码。实现FLM文件是使用QSPI烧写flash,MDK把FLM文件加载到RAM运行,和ROM启动没有关系吧?这样能用MDK下载代码吧?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
119429
QQ
 楼主| 发表于 2025-7-29 18:03:47 | 显示全部楼层
lindahnu 发表于 2025-7-29 17:11
硬汉,MCU没有内置flash,是从ROM启动,代码是存储在外置flash,正常应用流程是ROM的boot代码从flash读代码 ...

1、使用支持内存映射得话,可以直接在外部Flash运行程序。
2、对
回复

使用道具 举报

73

主题

179

回帖

398

积分

高级会员

积分
398
发表于 2025-7-29 18:53:59 | 显示全部楼层
eric2013 发表于 2025-7-29 18:03
1、使用支持内存映射得话,可以直接在外部Flash运行程序。
2、对

QSPI没有内存映射模式,回答的意思是ROM启动并不影响FLM算法文件下载代码这个过程?只要boot代码没问题,就可以实现在线调试了吧?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
119429
QQ
 楼主| 发表于 2025-7-30 10:31:16 | 显示全部楼层
lindahnu 发表于 2025-7-29 18:53
QSPI没有内存映射模式,回答的意思是ROM启动并不影响FLM算法文件下载代码这个过程?只要boot代码没问题, ...

1、对,不影响。
2、正常情况下没有boot代码,也可以在线RAM里面调试程序得。直接脚本设置PC,SP到RAM地址即可
回复

使用道具 举报

81

主题

1389

回帖

1632

积分

至尊会员

积分
1632
发表于 2025-8-2 10:15:50 来自手机 | 显示全部楼层
keil5.43发布了
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
119429
QQ
 楼主| 发表于 2025-8-2 10:16:57 | 显示全部楼层
回复

使用道具 举报

73

主题

179

回帖

398

积分

高级会员

积分
398
发表于 2025-9-8 14:34:02 | 显示全部楼层
硬汉,FlashDevice里的设备起始地址有什么办法动态改变吗?
回复

使用道具 举报

16

主题

78

回帖

126

积分

初级会员

积分
126
发表于 2025-9-9 13:26:20 | 显示全部楼层
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
119429
QQ
 楼主| 发表于 2025-9-10 09:29:45 | 显示全部楼层
lindahnu 发表于 2025-9-8 14:34
硬汉,FlashDevice里的设备起始地址有什么办法动态改变吗?

不用修改这个,可以从指定地址下载的。
回复

使用道具 举报

73

主题

179

回帖

398

积分

高级会员

积分
398
发表于 2025-9-11 14:30:44 | 显示全部楼层
eric2013 发表于 2025-9-10 09:29
不用修改这个,可以从指定地址下载的。

对对对,我忘记可以在flash download那设置了
回复

使用道具 举报

73

主题

179

回帖

398

积分

高级会员

积分
398
发表于 2025-9-29 13:53:49 | 显示全部楼层
硬汉,函数 Init (unsigned long adr, unsigned long clk, unsigned long fnc)的clk时钟参数,我打印出来是12M,但不明白12M从哪来的?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
119429
QQ
 楼主| 发表于 2025-9-30 10:07:02 | 显示全部楼层
lindahnu 发表于 2025-9-29 13:53
硬汉,函数 Init (unsigned long adr, unsigned long clk, unsigned long fnc)的clk时钟参数,我打印出来是 ...

MDK Option里面有个时钟设置,可能是这个传递的,我没用过这个参数。
回复

使用道具 举报

1

主题

110

回帖

113

积分

初级会员

固件開發工程師

积分
113
QQ
发表于 2025-10-20 19:49:54 | 显示全部楼层
我发现Keil算法不支持不连续的Flash地址。比如下面的“Specify Size and Address of Sectors”,这里虽然Sector大小不同,但都是挨着的。
Keil不支持两块不连续的映射地址。
[C] 纯文本查看 复制代码
struct FlashDevice const FlashDevice  =  {
   FLASH_DRV_VERS,             // Driver Version, do not modify!
   "New Device 256kB Flash",   // Device Name 
   ONCHIP,                     // Device Type
   0x00000000,                 // Device Start Address
   0x00040000,                 // Device Size in Bytes (256kB)
   1024,                       // Programming Page Size
   0,                          // Reserved, must be 0
   0xFF,                       // Initial Content of Erased Memory
   100,                        // Program Page Timeout 100 mSec
   3000,                       // Erase Sector Timeout 3000 mSec
 
// Specify Size and Address of Sectors
   0x002000, 0x000000,         // Sector Size  8kB (8 Sectors)
   0x010000, 0x010000,         // Sector Size 64kB (2 Sectors) 
   0x002000, 0x030000,         // Sector Size  8kB (8 Sectors)
   SECTOR_END
};

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
119429
QQ
 楼主| 发表于 2025-10-21 14:36:31 | 显示全部楼层
----- 发表于 2025-10-20 19:49
我发现Keil算法不支持不连续的Flash地址。比如下面的“Specify Size and Address of Sectors”,这里虽然Se ...

支持,没问题,以我们TOOL的脱机烧录为例,就是这个地方做了专门的区分处理。
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2025-11-1 23:35:12 | 显示全部楼层
顶。向大佬学习一个
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-21 23:18 , Processed in 0.056841 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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