dajiaolv 2008-8-15 17:13
求助:ARM9总线问题
各位高手,最近我接触了Arm9系列,有一个问题一直搞不明白。因为以前接触的都是冯氏结构,程序和数据共用一条总线,所以在存储器管理上不需要分开。
可是ARM9有些是哈佛结构的,数据和程序分成两条总线,所以我不明白存储器是怎样的?数据和程序存放是分开的吗?可是例如程序堆栈这些如何处理呢?还有ARM在编译传送32位立即数指令的时候会将这条立即数写到程序空间中,然后去寻址访问,这样编译出来运行的时候实际上是去读取数据存储区,从而导致出错。
说的很乱,请高手指教。
pushion 2008-8-22 11:32
地址线和数据线分开,存储器也未必要分开吧?
程序的堆栈地址是链接时指定的,跟这个有什么关系?
能不能写跟处在程序空间和数据空间无关,只在于这个地址是否可写
duty_cycle 2008-8-23 17:07
ARM9处理器通常都带有多种存储器控制器(如SDRAM,DDRAM,NAND/NOR FLASH等)虽然它们的数据线或地址线在外部可能是分开的,但都是从内部的ABH总线接出来的,并且所有的存储器都是统一编址的。通宵ARM9都是在RAM里运行程序(有些可能会直接在NOR FLASH里运行但速度太慢),ARM9启动的时候选运行bootload程序,将操作系统和用户代码从FLASH里拷备到RAM里去运行,实际上跟我们的PC机启动过程是一样的,你的堆栈和变量的编译器在编译的时候就确定了,跟存储器没关系。