硬汉嵌入式论坛

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

[MDK] stm32内外部下载算法问题

[复制链接]

13

主题

36

回帖

75

积分

初级会员

积分
75
发表于 2024-9-18 13:57:00 | 显示全部楼层 |阅读模式
最近有一个项目需要把代码放在内部flash,资源放在外部flash.
硬件平台是stm32l451,开发平台是keil 5.40。

我的想法是用两个下载算法,一次烧录直接把整个代码烧进去。
现在我的外部下载算法搞定了,单独烧录程序在片外flash没什么问题。
但是在工程里同时添加两个下载算法,烧录报错program failed。
现在只能在工程里分别添加下载算法,进行部分下载,可以下载成功。将片内片外的代码依次下载之后代码可以正常执行。
想问一下这个现象可能是什么问题?

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117530
QQ
发表于 2024-9-18 14:38:51 | 显示全部楼层
将外部算法修改位使用内部RC,不要使用PLL倍频,一般可解决。
回复

使用道具 举报

13

主题

36

回帖

75

积分

初级会员

积分
75
 楼主| 发表于 2024-9-18 14:49:39 | 显示全部楼层
eric2013 发表于 2024-9-18 14:38
将外部算法修改位使用内部RC,不要使用PLL倍频,一般可解决。

我也有点意识到了,我用逻辑分析仪测量qspi接口发现外部flash似乎没有执行初始化函数,也就是没有配时钟。而内部flash下载算法不依赖外部晶振肯定使用的是内部rc,所以应该外部flash下载算法时钟去对齐内部flash下载算法时钟。再问一个小问题,能不能写一个下载算法,直接完成0x08000000和0x90000000的烧录呢,这个时钟配置确实掉坑了
回复

使用道具 举报

13

主题

36

回帖

75

积分

初级会员

积分
75
 楼主| 发表于 2024-9-18 15:11:54 | 显示全部楼层
eric2013 发表于 2024-9-18 14:38
将外部算法修改位使用内部RC,不要使用PLL倍频,一般可解决。

感谢大佬,搞定了
回复

使用道具 举报

44

主题

242

回帖

374

积分

高级会员

积分
374
发表于 2024-9-18 20:36:37 | 显示全部楼层
我的是IAR。思路如下:
用cube生成最简单的写外部flash例子,验证ok。
然后向这个例子里面加入算法函数,IAR会调用的算法函数为init, writ, erase,可以在init函数中调用你的时钟和外设初始化。
当然最简单的就是用默认时钟。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-12 18:49 , Processed in 0.044649 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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