8051单片机(8031单片机)

1 .怎么理解常说的“可以用单片机的norflash执行代码”这句话?

CPU取值、解码并执行。

的哪些媒体可以运行程序,实际上就是CPU可以从那里获取指示,供以后解码和运行。

2 .单片机一般用内部norfalsh执行代码

Soc读取内部的NorFlash时可以进行总线访问,这对于Soc来说更方便,从Soc直接用地址方式进行访问,而且NorFlash不需要初始化,定时很简单。

PS:NAND闪存接口的管理很复杂,需要专用的控制器。

3 .单片机内部的norflash中执行代码面临的困境

在用ST制作GUI界面时,最大的问题是芯片内部的flash最多只有2米。 在现在的时代,2米也放不下几张照片。

如果讨厌你的单片机的norflash不够大呢? 因为不管你换到多么大的单片机norflash都没什么大不了的:

在方案1.ST中,使用添加到M7内核芯片的QSPI控制器,使用户可以将代码放置在外部存储器上并当场执行。

方案2 .使用SDRAM将代码运送到SDRAM内执行。

与场景1对应的方式称为XIP。

与方案2对应的方式称为BootROM,顾名思义,是从ROM向RAM输送代码并执行的,所以称为BootROM。

4. norflash不够的解决方案1 — XIP

(1) .使用外部闪存(外部QSPI或FMC-NOR闪存)“当场执行”。

)2) .用户APP的代码必须链接到目标的执行内存地址(外部QSPI或FMC-NOR闪存)。

(3) .需要内存映射支持

上述(1)意味着XiP可以直接在外部闪存中执行代码,称为“就地”,使得芯片可以直接在内部flash的地址0x0800 0000上执行。

上述)2)表示在编译用户APP应用程序的代码时,将链接目标更改为外部闪存的地址。 例如,如果STM32 H7系统在系统总线上为QSPI Flash分配的地址为0x9000 0000,则代码的地址将更改为0x9000 0000。

XIP模型的操作流程

XiP的启动方法实际上利用了引导加载器。 该引导加载器显示了一种非常不同的方法,即将qspi闪存映射到名为系统总线0x9000 0000的地址。

映射后,访问0x9000 0000地址时,系统总线会自动去读取QSPI FLASH 0地址的数据。 这个时候自动去读!

例如,uint32_ttemp=*(uint32_t* )0x90000000 )可以直接获取QSPI FLASH的第0到第3个地址数据。

映射完成后,关闭所有中断和缓存,然后跳转到用户程序的运行。

通过利用STM32H7的QSPI、XIP方式,可以在W25QXX系列芯片内运行程序。

5 . norflash不足的解决方案2 — BootROM

(1) .从闪存启动,配置外部RAM存储器(SDRAM或SRAM ),

首先,将用户APP应用程序的二进制文件(sd卡或SPI -闪存)从闪存复制到外部SDRAM或外部SRAM,然后跳转到用户APP应用程序并执行。

)2) .用户APP的代码应链接到目标的执行内存地址(外部SDRAM或SRAM )。

该模型是通用的,适用于FMC能够驱动外部RAM的所有ST芯片。 当然链接地址一定是外部RAM存储器的地址。 关于闪存,可以是任何存储器,也可以是SPI闪存、TF卡、I2C存储器。

例如,STM32f407ZGSRAM(32MB ) TF卡将程序编译成二进制文件并放入TF卡中。 每次将新程序更新为TF卡时,要运行的程序都会更新。 感觉就像用Linux TF卡启动一样。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注