小女子正在接手的项目是以前同事留下的的未完成的项目,主控芯片是 AT91M55800A,片上外扩了一块2M的FLASH、和两块SDRAM(IS61LV51216AL), 另外,AT91M55800A片内有8K的内部RAM。 有些东西看了一下,不太懂,所以问一下各位高手,以下两个问题: 1、 系统上电,执行重影射前 AT91M55800A的0地址是指向NCS0(flash),地址空间为 0x00000000--0x000fffff(1M的地址空间),0x000fffff之后的空间(0x00100000-- 0x001fffff)是芯片厂家保留未用的,而板NCS0所挂的FLASH是个2M的,型号 为AT49BV162A,这样如果程序空间超过了1M的话会不会造成访问中止等错误,因为 我在相关资料上面看到如果处理器访问的存储器地址超出了一个存储器页,则系统将 会产生中止!
以下是我的理解,有知道这样的理解正不正当? 虽然所挂的FLASH超过了1M的地址空间,但是程序运行的时候是在RAM里面运行的,而且 在拷贝FLASH程序到RAM里面的时候已经执行了REMAP命令,此时真正所操作的地址已经 不是0x00000000--0x000fffff(1M的地址空间),而是REMAP之后的地址空间了,所以就不 会出现访问的存储器地址超出存储器页的情况。
2、在AT91M55800A里面,在重影射之前外部RAM是不可见的,重影射之后外设地址为 (0x00400000--0xffbfffff),这个地址空间是属于NCS0--NCS7八个片选设备的,当然其中 也包括重影射后的FLASH(NCS0),但具体NCS0--NCS7的具体地址空间我有搞清楚,在网上 找到一些资料说到的重影射后的FLASH在0X01000000的,NCS1挂SRAM,地址为:0x02000000 这两个地址在重影射之后外设地址为(0x00400000--0xffbfffff)都没有具体说明?是不是 我有些东西没有领会到?
大家多给我发表些意见吧?谢谢了! |