STM32 外部Nor Flash烧写算法

什么是Flash烧写算法

Flash编程算法是一种用于擦除应用程序或将应用程序下载到微控制器Flash的程序代码。MDK本身支持的器件都自带下载算法,存放在MDK各种器件的软件包里面,以STM32U5为例,算法存放在\Keil Packs\Keil\STM32U5xx_DFP\2.1.0\CMSIS\Flash(软件包版本不同,数值 2.1.0 不同),开发板上通过MCU外设扩展的存储器件,编程算法需要我们自己生成。
MDK中编程算法的核心是通过MDK创建一批与地址信息无关的函数,函数实现的功能主要有初始化、擦除、编程、读取、校验等(注意:烧写算法源码中,禁止所有中断使用),在 MDK 调试下载阶段,会将算法文件加载到芯片的内部 RAM 里面(加载地址可以通过 MDK 设置), MDK通过与这个算法文件的交互, 实现程序下载以及 调试阶段数据读取等操作。

Flash下载步骤

在进入下一个Flash下载步骤之前,必须完成所有这些步骤。例如,在编写第一个Flash页面之前,首先要擦除所有相关扇区。多个步骤中需要的Flash算法在接下来的每一步中都要再次下载。

  1. 连接调试器:建立调试器连接。
  2. 加载AXF文件:在调试驱动程序中加载和缓存AXF文件中的代码(在主机PC端)。如果需要,可以在Flash
  3. 下载之前加载和合并多个AXF文件。
  4. 擦除:擦除整个芯片或即将被新编程的扇区。
  5. 程序:由加载的AXF文件和Flash下载设置对话框覆盖的程序页面。
  6. 验证:验证所编程的区域是否包含预期的代码。
  7. 关闭Flash下载:完成Flash下载,关闭核心调试。
  8. 重置和运行应用程序:执行HW复位,即通过设备的外部复位引脚复位。
  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: STM32外部SRAM是一种可扩展的静态随机存取存储器,用于扩大STM32微控制器的存储容量。进行外部SRAM的简单测试,可以通过以下步骤进行。 1. 硬件连接:将外部SRAM与STM32微控制器连接。通常,外部SRAM的地址线和数据线需要与STM32微控制器的对应引脚相连。此外,还需连接外部SRAM的控制线,如读使能线和使能线等。 2. 引脚配置:通过寄存器配置,将STM32微控制器的引脚配置为外部SRAM的读引脚。这需要使用STM32的开发工具和相关文档来确定引脚配置寄存器和位。 3. 初始化外部SRAM:通过编适当的初始化函数,将外部SRAM的控制寄存器配置为正常操作模式。这包括设置外部SRAM的访问模式、时序和其他参数。 4. 编测试函数:编一个简单的测试函数,用于读外部SRAM。可以设计一个简单的读流程,例如先入一些数据,然后再从相同地址读取并验证数据是否正确。 5. 运行测试:通过调用测试函数,使用STM32的调试工具或调试输出功能,在外部SRAM上执行测试操作。可以使用断点、变量监视等功能来验证读操作的正确性。 6. 分析结果:检查测试函数的输出结果,确保数据能够正确地从外部SRAM中读取并验证。如果测试中出现任何错误,应根据错误信息和STM32相关文档进行排查进一步分析问题的原因。 通过以上步骤,可以进行STM32外部SRAM的简单测试。这样可以确保外部SRAM能够正常工作,并且STM32微控制器可以正确地读和操作外部SRAM中的数据。 ### 回答2: 对于stm32来说,外部的SRAM是一个很有用的扩展,可以提供更大的存储空间。为了测试外部SRAM,首先需要确保正确连接SRAM芯片与stm32的外部总线上。然后,我们可以通过以下步骤进行简单的测试: 1. 设置STM32寄存器:首先,需要配置stm32的时钟和GPIO寄存器,以确保外部SRAM的正确访问。具体设置可参考stm32的技术手册。 2. 初始化外部SRAM:通过STM32的外设和存储器控制器,初始化外部SRAM。可以使用CMSIS库函数来设置存储器控制器,并分配必要的存储器区域。 3. 入数据:选择一个地址,将测试数据外部SRAM。可以通过存储器地址直接入数据,也可以使用C编程语言中的指针和赋值操作来入数据。 4. 读取数据:读取刚才入的数据,可以使用相同的存储器地址或指针操作来读取外部SRAM中的数据。 5. 验证数据:将入的数据与读取的数据进行比较,确保数据的一致性。如果入和读取的数据完全相同,则说明外部SRAM正常工作,测试通过。 需要注意的是,对于不同的芯片和外部SRAM芯片,具体的配置和测试方法可能会有所不同。因此,最好参考相关芯片的技术手册和示例代码进行配置和测试。 ### 回答3: STM32外部SRAM的简单测试流程如下: 1. 配置外部SRAM引脚:根据具体板级设计,连接外部SRAM接口的引脚到STM32的对应引脚,并确保引脚映射正确。 2. 初始化外部SRAM:在STM32的代码中,根据SRAM的规格及芯片型号,设置对应的控制寄存器和时序参数。这些参数包括如读延时、时钟速率等。可以使用STM32的库函数或者直接读内存地址来进行SRAM的初始化。 3. 编测试代码:创建一个简单的测试函数来读外部SRAM。可以通过入一个特定的数据模式到SRAM中的某个地址,并从相同地址读取数据,并比较读取到的数据是否与之前入的数据一致。 4. 执行测试代码:将测试代码下载到STM32上,运行代码,并使用调试工具监视SRAM的读操作。确保SRAM的读操作正常,并且读取到的数据与入的数据一致。 5. 分析测试结果:通过观察测试结果,判断SRAM是否正常工作。如果读操作均成功,并且读取到的数据与入的数据完全一致,则可以确认外部SRAM的连接和初始化均正确。 需要注意的是,外部SRAM的测试还应该考虑其他因素,例如并发访问、地址映射等。此外,在进行SRAM测试之前,还应确认外部SRAM的电源和时钟等硬件配置是否正确。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cat_milk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值