打印
[其它应用]

程序如何放在外部flash中啊?

[复制链接]
3202|24
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
SophiaOP|  楼主 | 2024-3-11 11:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
内部空间不太够用,怎么切换成外部flash启动啊

使用特权

评论回复
沙发
micoccd| | 2024-3-11 11:44 | 只看该作者
1)初始化栈顶指针
从0x0800 0000读取栈顶地址,并将该地址存入MSP中。

栈顶地址的值为0x2000 xxxx,工程所生成bin文件的前两个字节即为栈顶地址。

从0x2000 0000到0x2000 xxxx即为程序所运行的范围,该段内存分布为:RW段、ZI段:其中RW段为可读写的非0数据段,ZI段包括了0数据段、堆区、栈区。

2)跳转至复位中断(Reset_Handler(void))
从0x0800 0004读取中断向量表的首地址(即复位中断入口地址),装入PC程序计数器,跳转执行

3)系统时钟设置(在复位中断程序内被调用)
进行系统时钟的初始化,该函数内含VTOR寄存器设置,即中断向量偏移设置:

SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET;

产品IAP由bootloader跳转app程序时,需要设置中断向量偏移

4)跳转至标准库_main()程序
LDR R0,=_main

该部分主要进行两部分工作:

数据段加载:把RW段(初始化为非0值的全局变量)从Flash搬运到SRAM中

开辟堆栈:依照启动文件所设置的堆栈大小初始化堆栈区域;

该处需要注意:如果编译勾选了using micro_lib,程序则采用单区存放堆栈的方式;否则,采用双区存储的方式,分别初始化堆区、栈区。

工程师在设计IAP时,需要注意该点可能会带来意料不到的一些问题

5)进入C文件中的main函数

使用特权

评论回复
板凳
flycamelaaa| | 2024-3-11 13:02 | 只看该作者
建议参考官方文档

使用特权

评论回复
地板
肥羊| | 2024-3-13 15:58 | 只看该作者
还是换芯片最实际

使用特权

评论回复
5
CarterERO| | 2024-3-18 11:28 | 只看该作者
确实换芯片比较省事

使用特权

评论回复
6
Jacquetry| | 2024-3-28 10:20 | 只看该作者
现在内部写一个跳转程序

使用特权

评论回复
7
yeates333| | 2024-4-4 10:59 | 只看该作者
需要配置它从外部Flash启动。这通常涉及到设置单片机的引导程序(Bootloader),使其能够从外部Flash地址空间读取程序代码并执行。

使用特权

评论回复
8
yeates333| | 2024-4-4 13:41 | 只看该作者
使用单片机的开发工具编写你的程序。确保程序是正确的,并且已经进行了适当的优化。

使用特权

评论回复
9
lzbf| | 2024-4-4 15:15 | 只看该作者
还需要添加烧写算法到您的Keil工程中。这可以通过在Keil的“Utilities”选项卡中找到相应的配置选项来完成。

使用特权

评论回复
10
tifmill| | 2024-4-4 17:26 | 只看该作者
运行编程器或调试器的配套软件,选择正确的单片机型号和外部Flash的型号。然后,将编译好的程序(通常为二进制文件)加载到软件中。点击“下载”或“编程”按钮,软件将通过编程器或调试器将程序发送到外部Flash中。

使用特权

评论回复
11
uptown| | 2024-4-4 19:32 | 只看该作者
根据外部Flash存储器的接口规格,将其连接到单片机的相应引脚上。这可能涉及到GPIO引脚、SPI接口或其他专用接口。

使用特权

评论回复
12
fengm| | 2024-4-4 21:34 | 只看该作者
确保你选择的单片机支持外部存储器扩展,并且外部FLASH芯片的接口类型(如SPI、QSPI、NOR/NAND等)与单片机兼容。

使用特权

评论回复
13
juliestephen| | 2024-4-5 22:25 | 只看该作者
设置单片机的引导程序               

使用特权

评论回复
14
abotomson| | 2024-4-6 11:28 | 只看该作者
使用单片机的编译器编译你的程序,并将其链接到一个可执行文件。这个可执行文件包含了你的程序的机器代码,它将存储在外部Flash存储器中。

使用特权

评论回复
15
janewood| | 2024-4-6 13:22 | 只看该作者
编写一个引导程序(Bootloader)或使用现有的工具,将你的单片机程序作为数据写入外部Flash存储器。

使用特权

评论回复
16
timfordlare| | 2024-4-6 15:24 | 只看该作者
ootloader是一段特殊的代码,它负责在单片机上电时从外部存储器(如SPI FLASH)加载应用程序到内部RAM并执行。Bootloader可能需要根据单片机的具体架构来编写。

使用特权

评论回复
17
maqianqu| | 2024-4-6 20:57 | 只看该作者
在单片机的软件中配置外部存储器接口,包括设置FLASH芯片的地址、时序和控制参数

使用特权

评论回复
18
weifeng90| | 2024-4-6 23:53 | 只看该作者
MCU是不支持从外部flash启动的吧

使用特权

评论回复
19
dspmana| | 2024-4-7 07:52 | 只看该作者
将外部Flash连接到单片机的相应引脚,确保单片机可以从外部Flash中读取程序

使用特权

评论回复
20
wangdezhi| | 2024-4-7 10:53 | 只看该作者
如果单片机支持SPI接口,可以将外部SPI FLASH通过SPI接口与单片机连接。需要配置单片机的SPI接口,并且可能需要编写SPI通信的驱动程序来读取外部Flash中的程序。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

117

帖子

0

粉丝