LPC2478 有重映射的功能。
我现在手头上只有开发板。CS1接的nor flash(地址0x8100 0000),DYCS0接的SDRAM(地址0xa000 0000),现在想启动后把程序代码从nor flash拷贝到SDRAM,然后在SDRAM里运行程序。
也就是两个程序一个是booloader的作用在内部flash里运行,作用是启动后,拷贝中断向量表到内部ram,重映射内部ram0x4000 0000 到0。从nor flash拷贝程序到sdram,然后跳转到sdram的地址0xa000 0000。
另外一个是应用程序,选择代码在nor flash里运行。
这样将上面两个程序烧写到板子上,组合后,就是,启动后首先是内部flash的bootloader程序,做了程序从nor flash到sdram的拷贝,然后就是跳转到sdram执行。运行结果成功,内部程序运行时我屏幕显示绿色,到应用程序运行时用定时中断做了跑马灯,都跑起来了。
后面我怀疑程序中断后是不是真的在sdram里运行。于是做了试验,在跳转到sdram之前,先把nor flash的寄存器配置,使不能正常访问nor flash。结果应用程序的跑马灯不跑了。也就是中断后程序又跑到nor flash里去了?
不知道能不能作重映射直接使sdram映射为0。 |