单片机运行spiflash原理,杰理、凌通等

一般单片机都是CPU直接读取内部rom、flash程序,直接运行。很好理解。
但也碰到不少单片机内置rom比较小,比较大的ram,内置了BootLoader,供应商提供SDK或者自家的IDE让我们开发,把编译出来的程序烧录到一颗片外SPIFlash(25Q64等)上电就可以运行。
这类的单片机实现原理是?上电到运行程序流程是怎样的?
我的理解是上电rom上的BootLoader搬运spi上的一段程序,这段程序就负责根据程序运行地址不停搬运spiflash上的程序到ram再运行?不知道理解对不对。

另附两颗凌通的MCU图:
1.凌通的un`sp 16-bits cpu

img

2.凌通的arm7tdmi cpu

img

还有也碰到杰理的MP3芯片也是这样的51内核,也有其他内核但应用都是这样的方式。

一般不会读到RAM里再运行,除非是那种很高级的片子,像Windows系统,有些指令就是搬到内核再运行。

普通的都是类似DMA的方式,PC指针指向外挂的flash地址就可以直接执行对应的指令了。 说到底就是一个地址分配+寻址的问题。

也不一定都是加载到RAM运行,有些芯片的RAM并不大,不适合这种方式,SPI Flash速度也不慢,而且能使用四线模式,再加上指令缓存,速度还可以的,可以直接从SPI Flash取指令后直接就运行。

一般情况下不会加载到ram中,主要不是所有芯片的ram都满足要求,所以,大部分情况都还是烧制到rom里

学习一下,帮顶