
你这是把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系列,别人硬件就支持这些外部启动。。。FSMC的BANK1划分为4个64MB的子BANK。如果你初始化了对应的FSMC寄存器,当内核访问的是第一个64MB的空间(0x60000000--0x63ffffff),FSMC会把ne1拉低;当内核访问的是第二个64MB的空间(0x64000000--0x67ffffff),FSMC会把ne2拉低。 FSMC对于类RAM存储器的读 *** 作过程一般是:先发出片选信号、读信号和地址信号,然后等待数据建立完成后,读取数据总线上的数据。所以即使你没有用到地址线,那么FSMC还是会把数据返回,返回的数据就存放你的读地址那里。
评论列表(0条)