硬汉嵌入式论坛

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

[MDK] FLM算法文件实现QSPI擦除编程外挂flash出现PC地址错误

[复制链接]

79

主题

193

回帖

430

积分

高级会员

积分
430
发表于 2026-3-20 17:44:25 | 显示全部楼层 |阅读模式
FLM工程实现方法都是一样的,只是实现那几个擦除编程的接口函数不一样。遇到奇怪的问题是:就只把一个全局变量rx_buffer[256]增加到rx_buffer[2048],其他什么都不动,出现PC错误。
芯片RAM的大小有128K,不会有溢出的情况。有人遇到过吗?FLM有什么特别注意的点吗?实在无法理解。



PC出错

PC出错
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
121982
QQ
发表于 2026-3-21 09:38:09 | 显示全部楼层
不要用JFLASH测试,要用MDK测试,JFLASH不完全兼容FLM文件,你要用SEGGER自家的flashloader设计才完全兼容。

回复

使用道具 举报

79

主题

193

回帖

430

积分

高级会员

积分
430
 楼主| 发表于 2026-3-23 08:53:40 | 显示全部楼层
eric2013 发表于 2026-3-21 09:38
不要用JFLASH测试,要用MDK测试,JFLASH不完全兼容FLM文件,你要用SEGGER自家的flashloader设计才完全兼容 ...

用MDK一样的错误,只是PC地址变成0xD3000040
回复

使用道具 举报

79

主题

193

回帖

430

积分

高级会员

积分
430
 楼主| 发表于 2026-3-23 10:58:20 | 显示全部楼层
eric2013 发表于 2026-3-21 09:38
不要用JFLASH测试,要用MDK测试,JFLASH不完全兼容FLM文件,你要用SEGGER自家的flashloader设计才完全兼容 ...

更奇怪的是jflash可以正常烧写,在MDK上使用出错。
回复

使用道具 举报

79

主题

193

回帖

430

积分

高级会员

积分
430
 楼主| 发表于 2026-3-27 15:07:29 | 显示全部楼层
eric2013 发表于 2026-3-21 09:38
不要用JFLASH测试,要用MDK测试,JFLASH不完全兼容FLM文件,你要用SEGGER自家的flashloader设计才完全兼容 ...

硬汉知道FLM工程是如何规定栈大小的吗?我发现keil提供的模板里有一个FlashStk.s文件,直接加到工程里并没有起作用。
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
121982
QQ
发表于 2026-3-27 17:10:00 | 显示全部楼层
lindahnu 发表于 2026-3-27 15:07
硬汉知道FLM工程是如何规定栈大小的吗?我发现keil提供的模板里有一个FlashStk.s文件,直接加到工程里并 ...

FLM文件里面不能设置大小,是烧录加载FLM算法的时候,直接设置到RAM末尾即可,这样有足够的空间FLM使用。
回复

使用道具 举报

79

主题

193

回帖

430

积分

高级会员

积分
430
 楼主| 发表于 2026-3-30 10:58:13 | 显示全部楼层
eric2013 发表于 2026-3-27 17:10
FLM文件里面不能设置大小,是烧录加载FLM算法的时候,直接设置到RAM末尾即可,这样有足够的空间FLM使用。

看log文件发现,在MDK端是会设置SP地址为RAM的末尾,在jflash端是RAM基址+代码大小后偏移,JLINK_WriteMemEx(0x20000000, 0x000025CC Bytes, Flags = 0x00000000),JLINK_WriteReg(R13 (SP), 0x200027D0),理解是解析了代码最大栈空间多少来设置。
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
121982
QQ
发表于 2026-3-30 14:29:08 | 显示全部楼层
lindahnu 发表于 2026-3-30 10:58
看log文件发现,在MDK端是会设置SP地址为RAM的末尾,在jflash端是RAM基址+代码大小后偏移,JLINK_WriteMe ...

MDK是这里限制的

123.png
回复

使用道具 举报

0

主题

25

回帖

25

积分

新手上路

积分
25
发表于 2026-3-31 09:41:32 | 显示全部楼层

这个Size的长度是.pdsc里设置的,觉得不够大的话可以手动修改,也可以直接改pack包里的.pdsc文件,改完后自己重新打包安装,前两天我刚整完一个QSPI存代码的.flm(keil)和.out(iar)
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
121982
QQ
发表于 2026-3-31 09:52:03 | 显示全部楼层
benny 发表于 2026-3-31 09:41
这个Size的长度是.pdsc里设置的,觉得不够大的话可以手动修改,也可以直接改pack包里的.pdsc文件,改完后自 ...

.pdsc的Size只是个默认填充。
回复

使用道具 举报

79

主题

193

回帖

430

积分

高级会员

积分
430
 楼主| 发表于 昨天 10:42 | 显示全部楼层
当返回PC地址出错时,在此之前log里提示“T-bit of XPSR is 0 but should be 1. Changed to 1”。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-10 14:43 , Processed in 0.401045 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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