硬汉嵌入式论坛

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

[有问必答] STM32F407从外部并口NOR_FLASH执行代码试验求助(安富莱V5开发板)

[复制链接]

2

主题

569

回帖

575

积分

金牌会员

积分
575
发表于 2017-2-21 11:43:02 | 显示全部楼层 |阅读模式
(发帖是求助求讨论,不是教程,大神请拍砖留情,小白请不要被误导)
最近在做一个项目,使用的STM32F407ZE处理器,里边加载了不少库和功能模块,导致代码量很快超过512K
为了解决这个问题,故准备试一试从NOR FLASH执行代码的试验。
立即百度,发现F103有例程资料,F407灵致开发板有相应比较完整的介绍和例程。
正好手里有一片安富莱V5的板子,试验了一下,只要烧录一个复杂一点的代码就没法跑起来。由于不知所以然,很多地方卡壳。我把我调试的过程记录下来,论坛大神如云,希望有幸得到拍砖。
(在调试过程中有很多地方都没有搞明白也没不怎么理解,莫名其妙的问题很多,我也不知道对不对,反正我是这么做了)。
结合网上各个教程,大概做了以下四个主要步骤的操作:

1、生成编程算法.FLM文件。
2、添加一个BootLoader引导程序,设置跳转。
3、添加一个APP应用程序,设置偏移。
4、添加一个.ini初始化文件(这一步没有做)。
(一)首先生成编程算法.FLM打开Keil_v5\ARM\Flash\,我选择了一个名字和S29GL128差不多的文件夹
1.png

复制了一份并重命名文件夹,按照网上教程修改:
在工程中添加支持库和安富莱的BSP,修改FlashDEV.c的参数
2.png


修改FlashPrg.c文件
NORFLASH初始化函数
3.png
NORFLASH整片擦除函数
4.png
NORFLASH擦除扇区函数
5.png
NORFLASH写入函数
6.png
NORFLASH读出比对函数
7.png
修改.FLM文件输出设置
8.png
编译生成了.FLM文件,复制到Keil_v5\ARM\Flash\目录下
9.png
STM32F407_S29GL128P10TFI01.zip (5.05 MB, 下载次数: 58)
疑问:算法生成程序这个工程中,项目中各个文件,到底是怎么工作的,并且在Init函数中为什么不需要添加系统时钟初始化的代码(添加了也好像没什么关系),因为这个工程中没有看到启动文件或其他初始化了系统时钟之类的内容?
(二)添加一个BootLoader引导程序,设置跳转
用安富莱开发板\02.配套例程\02.高级篇例程(裸机)\V5-105_NOR Flash访问例程(V1.2.rar 并且借鉴一些优秀的IAP例程改
10.png
修改FSMC的参数,使用原来参数,跑马灯程序最多运行坚持20秒,就死了。修改后可以长时间运行。
11.png
编译下载。
V5-105_NOR Flash访问例程.zip (11.58 MB, 下载次数: 92)
疑问:试验中如果在这一步不初始化FSMC-NOR,下一步烧录到NOR的代码是不会运行的。在第(四)步中提到的.INF文件是怎么回事,是怎么工作的机制?

3)添加一个APP应用程序,设置偏移。
V5-001a_GPIO实验_跑马灯实验开始修改,设置偏移到NOR
12.png
设置keil
13.png
把只读数据放到NOR
14.png
添加第一步生成的编程算法,并改大编程算法需要使用的RAM
15.png
编译下载,我拿好几个工程都做了测试,(跑马灯)(V5-004e_USART实验_DMA中断模式数据发送和接收)都能成功运行,只要复杂一点的都不能运行。
编译下载(V5-004e_USART实验_DMA中断模式数据发送和接收)程序,我随意添加了一个大数据文件。
16.png
HEX文件体积已经达到>5MB
17.png
18.png
19.png
编译下载(V5-001a_GPIO实验_跑马灯)程序
V5-004e_USART实验_DMA中断模式数据发送和接收.zip (12.03 MB, 下载次数: 49)
V5-001a_GPIO实验_跑马灯.zip (10.9 MB, 下载次数: 60)

疑问:测试了不少代码,有些不能运行,有些能够正常运行。是否是部分例程也是用了NOR相关的引脚,导致NOR的读取出错?

4)添加一个.ini初始化文件(这一步不懂也没有做)。
参考灵致开发板的例程STM32F407灵致开发板光盘资料\应用例程\LingZhi_Prog_Lib_V1.0\基本外设测试例程\Example\Project\Keil\FSMC
20.png
NOR_CodeExecute\APP\binary目录下FLASH_NOR.ini文件不明白什么作用,在什么时候加载,怎么写?
21.png
其keil设置
22.png
灵致开发板相关例程文件体积太大,暂时不能上传。
疑问:从这个文件可以看出.inf文件始化了NOR FSMC寄存器。那么这个文件是在什么时候怎么被加载调用的?
STM32F407从外部并口NOR_FLASH执行代码试验(安富莱V5开发板).docx.zip (374 KB, 下载次数: 61)

(五)解决STM32 CPU内部FLSAH空间不够问题的方案讨论。
对于STM32拓展NOR的方法,做产品方案是否稳定可行?
如果是做产品,考虑到东西到了用户手里后需要升级固件,又该怎么做?
(大神请拍砖留情)
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117546
QQ
发表于 2017-2-22 10:04:37 | 显示全部楼层
谢谢楼主写的这么详细,回答下最后一个问题。
对于STM32F407来说,使用NOR执行代码没有什么价值,因为这个NOR的100ns的,也就是10MHz,速度太慢了,基本也就是个51单片机的速度。
早期F1系列的时候,ST官方还倒腾用NOR执行,专门做过一个例子,后来就不倒腾了,没有价值。
回复

使用道具 举报

2

主题

569

回帖

575

积分

金牌会员

积分
575
 楼主| 发表于 2017-2-22 15:04:37 | 显示全部楼层

回 eric2013 的帖子

eric2013:谢谢楼主写的这么详细,回答下最后一个问题。
对于STM32F407来说,使用NOR执行代码没有什么价值,因为这个NOR的100ns的,也就是10MHz,速度太慢了,基本也就是个51单片机的速度。
早期F1系列的时候,ST官方还倒腾用NOR执行,专门做过一个例子,后来就不倒腾了,没有价值。 (2017-02-22 10:04) 
nor 看到最快的也就70ns,确实没什么意义,代码太大有什么解决方法没有?
能不能把一些不相关单独运行功能模块代码单独编译,分别存放到外部存储区域。
调用时就加载到内部FLASH运行。相当于在线IAP。感觉这样做有点复杂了
回复

使用道具 举报

2

主题

569

回帖

575

积分

金牌会员

积分
575
 楼主| 发表于 2017-2-22 15:29:56 | 显示全部楼层

回 eric2013 的帖子

eric2013:
谢谢楼主写的这么详细,回答下最后一个问题。
对于STM32F407来说,使用NOR执行代码没有什么价值,因为这个NOR的100ns的,也就是10MHz,速度太慢了,基本也就是个51单片机的速度。
早期F1系列的时候,ST官方还倒腾用NOR执行,专门做过一个例子,后来就不倒腾了,没有价值。
第一次离楼主这么近
[s:123]
有点紧张哈。
F7系列的官方有做从QSPI FLASH执行代码的例程。
QSPI
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117546
QQ
发表于 2017-2-23 10:47:57 | 显示全部楼层

回 leiyitan 的帖子

leiyitan:第一次离楼主这么近
[s:123]
有点紧张哈。
F7系列的官方有做从QSPI FLASH执行代码的例程。
....... (2017-02-22 15:29) 
[s:142]
回复

使用道具 举报

356

主题

2180

回帖

3253

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3253
发表于 2017-2-23 13:34:58 | 显示全部楼层

回 leiyitan 的帖子

leiyitan:nor 看到最快的也就70ns,确实没什么意义,代码太大有什么解决方法没有?
能不能把一些不相关单独运行功能模块代码单独编译,分别存放到外部存储区域。
调用时就加载到内部FLASH运行。相当于在线IAP。感觉这样做有点复杂了 (2017-02-22 15:04)
可以把部分数据区放到外部,比如数据列表,字库等。
另外F407的flash有1M的版本。
回复

使用道具 举报

2

主题

569

回帖

575

积分

金牌会员

积分
575
 楼主| 发表于 2017-2-23 20:44:45 | 显示全部楼层

回 caicaptain2 的帖子

caicaptain2:可以把部分数据区放到外部,比如数据列表,字库等。
另外F407的flash有1M的版本。 (2017-02-23 13:34) 
所有const的数据全部已经全部放外边了,看来只能换处理器了
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2022-2-23 10:12:03 | 显示全部楼层
您好,请问您一下从外部nor flash执行代码的问题您解决了么?您能把灵致开发板例程的链接给我一下么
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-14 01:50 , Processed in 0.057062 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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