你这是把STM32当ARM9用呀,你可以看看ARM9,a8,a9的启动过程呀,你看看STM32有哪些功能么?就不要想这些,就算能那速度慢成渣了,本来主频就慢,还在外部执行,又浪费一些总线周期。之前我也想过,要在外部执行都是需要初始化外部存储器的,以模拟ARM9,A8,A9的启动过程,首先从STM32内部flash启动,里面写个Uboot,出初始化STM32的FMC或者FSMC接口上的norflash或者SRAM或者SDRAM,如果程序存在nandflash上,还要初始化nand,然后把nand拷贝到SDRAM或者norflash或者SRAM;然后uboot跳到拷贝程序的地方执行;STM32还要设置MPU,让总线可以访问到FMC或者FSMC的地址空间;这还是理论,更本没法实施,所有的地址控制都要自己手动操作,我想着都头痛了,而且自己又不对cortex-M3或者cortex-M4了解的很透彻,中间遇见的问题可想而知,你有足够的时间可以想想,但是那样还不如直接用cortexA系列,别人硬件就支持这些外部启动。。。
1、JTAG和SWD,这两种是最基本的下载方法,就是STLINK或者JLINK烧录。
2、ISP下载,这个是将数据通过SPI下载到芯片的内置flash里面。
3、IAP下载,这个是用户自己的程序在运行过程中对User Flash的部分区域进行烧写。