这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
icore4t_58 [2020/04/01 09:04] zgf |
icore4t_58 [2022/04/01 10:57] (当前版本) sean |
||
---|---|---|---|
行 2: | 行 2: | ||
|技术支持电话|**0379-69926675-801**||| | |技术支持电话|**0379-69926675-801**||| | ||
|技术支持邮件|Gingko@vip.163.com||| | |技术支持邮件|Gingko@vip.163.com||| | ||
- | |技术论坛|http://www.eeschool.org||| | ||
^ 版本 ^ 日期 ^ 作者 ^ 修改内容 ^ | ^ 版本 ^ 日期 ^ 作者 ^ 修改内容 ^ | ||
| V1.0 | 2020-04-01 | gingko | 初次建立 | | | V1.0 | 2020-04-01 | gingko | 初次建立 | | ||
行 103: | 行 102: | ||
- 装有WIN XP(及更高版本)系统的计算机。 | - 装有WIN XP(及更高版本)系统的计算机。 | ||
==== 三、 实验原理 ==== | ==== 三、 实验原理 ==== | ||
- | === 1.介绍 === | ||
* 绝大部分 STM32 系列芯片内部都具有 FLASH 存储器用于存储程序,安装芯片包后即自带相应的 FLASH 下载算法,在工程里直接选择即可。而 STM32H750 系列芯片内部只有一个 128KB 的 FLASH 存储器, 代码量稍微大一点就放不下了,所以其程序代码需要存放在外部的存储器中,使用时需要自己提供对应FLASH 的下载算法给 KEIL 软件。 | * 绝大部分 STM32 系列芯片内部都具有 FLASH 存储器用于存储程序,安装芯片包后即自带相应的 FLASH 下载算法,在工程里直接选择即可。而 STM32H750 系列芯片内部只有一个 128KB 的 FLASH 存储器, 代码量稍微大一点就放不下了,所以其程序代码需要存放在外部的存储器中,使用时需要自己提供对应FLASH 的下载算法给 KEIL 软件。 | ||
* 外部闪存的使用提供了更高的存储能力,并且具有类似的性能水平,同时提供了经济高效的解决方案来满足增加的闪存空间的需求。 | * 外部闪存的使用提供了更高的存储能力,并且具有类似的性能水平,同时提供了经济高效的解决方案来满足增加的闪存空间的需求。 | ||
行 112: | 行 110: | ||
* 外部存储器启动应用程序负责初始化所需的资源,以使外部存储器可用。该应用程序根据用户配置初始化所需的资源。 | * 外部存储器启动应用程序负责初始化所需的资源,以使外部存储器可用。该应用程序根据用户配置初始化所需的资源。 | ||
* 外部存储器启动应用程序必须设置主堆栈指针,并配置要在外部存储器上执行的应用程序。 这种类型的引导方案支持大量的用户应用程序。外部存储器引导应用程序可确保在设置之后不再需要任何资源都可以重置或释放,然后再跳转到用户应用程序。下图说明了该引导方案。 | * 外部存储器启动应用程序必须设置主堆栈指针,并配置要在外部存储器上执行的应用程序。 这种类型的引导方案支持大量的用户应用程序。外部存储器引导应用程序可确保在设置之后不再需要任何资源都可以重置或释放,然后再跳转到用户应用程序。下图说明了该引导方案。 | ||
- | {{ :icore4t:icore4t_arm_hal_58_1.png?direct |}} | + | {{ :icore4t:icore4t_arm_hal_58_1.png?direct&700 |}} |
* 控制器直接识别,所以这些信号会经过一个“电平转换芯片”转换成控制器能识别的“TTL 校准”的电平信号,才能实现通讯。 | * 控制器直接识别,所以这些信号会经过一个“电平转换芯片”转换成控制器能识别的“TTL 校准”的电平信号,才能实现通讯。 | ||
* **XiP:** | * **XiP:** | ||
* XiP模型基于直接从用于代码存储的外部非易失性存储器执行代码。此执行模型需要内存映射支持,以授予CPU对执行代码用户应用程序的直接访问权限。通过FMC / QSPI接口可在外部NOR / QSPI闪存上使用XiP模型。 | * XiP模型基于直接从用于代码存储的外部非易失性存储器执行代码。此执行模型需要内存映射支持,以授予CPU对执行代码用户应用程序的直接访问权限。通过FMC / QSPI接口可在外部NOR / QSPI闪存上使用XiP模型。 | ||
* 以下流程图说明了XiP模型的操作流程。 | * 以下流程图说明了XiP模型的操作流程。 | ||
- | {{ :icore4t:icore4t_arm_hal_58_2.png?direct |}} | + | {{ :icore4t:icore4t_arm_hal_58_2.png?direct&700 |}} |
* **BootROM:** | * **BootROM:** | ||
* BootROM模型基于所选易失性存储器中的代码执行。 当二进制数据存储在没有内存映射接口的内存中时(例如对于SDCARD),此执行模型是合适的。 当二进制数据以低吞吐量存储在存储器中时(例如SPI-NOR(使用带有1行的QSPI模拟),该模型也适用。 | * BootROM模型基于所选易失性存储器中的代码执行。 当二进制数据存储在没有内存映射接口的内存中时(例如对于SDCARD),此执行模型是合适的。 当二进制数据以低吞吐量存储在存储器中时(例如SPI-NOR(使用带有1行的QSPI模拟),该模型也适用。 | ||
* 以下流程图说明了BootROM模型的操作流程。 | * 以下流程图说明了BootROM模型的操作流程。 | ||
- | {{ :icore4t:icore4t_arm_hal_58_3.png?direct |}} | + | {{ :icore4t:icore4t_arm_hal_58_3.png?direct&700 |}} |
* **用户配置由以下定义定义:** | * **用户配置由以下定义定义:** | ||
* •DATA_AREA:用于指定用于数据保存的易失性存储器。支持的内存(取决于所使用的板)是: | * •DATA_AREA:用于指定用于数据保存的易失性存储器。支持的内存(取决于所使用的板)是: | ||
行 144: | 行 142: | ||
* •BINARY_FILENAME:要执行的二进制文件的名称 | * •BINARY_FILENAME:要执行的二进制文件的名称 | ||
* 用户应确保所选的存储器包含代码和数据,以至少覆盖正确的用户启动应用程序。之后,用户应用程序可以初始化所需的任何其他内存。 | * 用户应确保所选的存储器包含代码和数据,以至少覆盖正确的用户启动应用程序。之后,用户应用程序可以初始化所需的任何其他内存。 | ||
- | |引导模型 |存储器| | + | |
- | |XiP |QSPI Flash memory| | + | | 引导模型 | 存储器 | |
- | ||NOR Flash memory(on FMC)| | + | | XiP | QSPI Flash memory | |
- | |BootROM |SPI-NOR | + | | ::: | NOR Flash memory(on FMC) | |
- | (emulated with QSPI 1 line)| | + | | BootROM | SPI-NOR(emulated with QSPI 1 line) | |
- | ||SDCARD| | + | | ::: | SDCARD | |
- | |Volatile memory |Internal SRAM| | + | | Volatile memory | Internal SRAM | |
- | ||External SRAM| | + | | ::: | External SRAM | |
- | ||External SDRAM| | + | | ::: | External SDRAM | |
- | ||External PSRAM| | + | | ::: | External PSRAM | |
* 外部存储器用户应用程序的描述: | * 外部存储器用户应用程序的描述: | ||
* 必需的更新 | * 必需的更新 | ||
行 160: | 行 159: | ||
* •确保使用所需的链接器文件以及与所选引导选项相对应的内存映射。 | * •确保使用所需的链接器文件以及与所选引导选项相对应的内存映射。 | ||
* •更新VTOR的设置以使用正确的地址。 | * •更新VTOR的设置以使用正确的地址。 | ||
- | * 加载和调试 | + | * **加载和调试** |
* STM32 Cube H7中提供EWARM IDE的补丁与MDK-ARM IDE专用包。 | * STM32 Cube H7中提供EWARM IDE的补丁与MDK-ARM IDE专用包。 | ||
* XiP模型提供了类似于内部Flash调试的无缝加载和调试体验。使用STM32 Cube Programmer在外部Flash存储器上加载应用程序。 | * XiP模型提供了类似于内部Flash调试的无缝加载和调试体验。使用STM32 Cube Programmer在外部Flash存储器上加载应用程序。 | ||
行 171: | 行 170: | ||
* •SD卡 | * •SD卡 | ||
* 用户应将二进制文件(内部版本的输出)手动复制到用于存储用户应用程序的SDCARD中,然后将SDCARD插入开发板。 | * 用户应将二进制文件(内部版本的输出)手动复制到用于存储用户应用程序的SDCARD中,然后将SDCARD插入开发板。 | ||
- | |||
* 在本实验中,我们通过编写Bootloader程序,使用给定的算法引导APP程序下载到iCore4T 的QSPI FLASH中。 | * 在本实验中,我们通过编写Bootloader程序,使用给定的算法引导APP程序下载到iCore4T 的QSPI FLASH中。 | ||
==== 四、 实验程序 ==== | ==== 四、 实验程序 ==== | ||
行 446: | 行 444: | ||
* 3、打开 Keil MDK 开发环境,并打开bootloader_flash工程; | * 3、打开 Keil MDK 开发环境,并打开bootloader_flash工程; | ||
* 4、烧写程序到 iCore4T内部FLASH上; | * 4、烧写程序到 iCore4T内部FLASH上; | ||
- | {{ :icore4t:icore4t_arm_hal_58_3.png?direct |}} | + | {{ :icore4t:icore4t_arm_hal_58_4.png?direct |}} |
* 5、把FLM文件复制到 KEIL 的安装目录,如:D:\Keil_v5\ARM\Flash; | * 5、把FLM文件复制到 KEIL 的安装目录,如:D:\Keil_v5\ARM\Flash; | ||
* 6、选择下载算法; | * 6、选择下载算法; | ||
- | {{ :icore4t:icore4t_arm_hal_58_3.png?direct |}} | + | {{ :icore4t:icore4t_arm_hal_58_5.png?direct |}} |
* 7、设置算法空间,取消校验; | * 7、设置算法空间,取消校验; | ||
- | {{ :icore4t:icore4t_arm_hal_58_3.png?direct |}} | + | {{ :icore4t:icore4t_arm_hal_58_6.png?direct |}} |
* 8、烧写程序到 iCore4T 的QSPI FLASH上; | * 8、烧写程序到 iCore4T 的QSPI FLASH上; | ||
* 9、也可以进入Debug 模式,单步运行或设置断点验证程序逻辑。 | * 9、也可以进入Debug 模式,单步运行或设置断点验证程序逻辑。 |