请问用过ADS1.2和AT91X40系列芯片的大虾一些基础性的问题

ypyuan   2007-1-1 15:39 楼主
请问用过ADS1.2和AT91X40系列芯片的大虾们,菜鸟想请教一些问题。

我最近用到一款使用AT91M40800的板子,根据板子的说明,板子上有2M的ROM和4M的SDRAM,M40800内部有8K的SDRAM。板子有启动代码,这个启动代码应该是放在片外的ROM里面的,启动时0x0应该是在ROM里面,但是启动后,好像AT91的重映射机制会把0x0映射到片内的SDRAM中,它的异常vector会copy一份放到0x0中,不知道我有没有理解错。这是我的第一个问题,即对AT91的remap机制这样理解对不对?

我不理解的第二个地方是,在例子程序中,project的设置,使用ADS1.2,有个RO-base都是设成0x8000,这是ADS1.2的默认设置。实际在硬件上跑程序时,是不是应该修改这个地址?

随之而来的第三个问题是,在我的扳子上这个设置居然能用,要知道M40800的外部存储器受EBI控制,按datasheet所说其地址是0x00400000---0xFFC00000,板子的说明也告诉用户,片外的ROM,SDRAM的地址是在这个范围里面。
片内SDRAM的范围应该是0x0----到8k,如果我没搞错的话,那,这程序怎么能下载下去的?一般除启动代码以外的应用程序是下载到什么地方/地址去执行?是RO-base
还是entry point设置的值?

我使用的是H-JTAG,AXD,我估计程序是下载到了SRAM中,因为是做实验用,不会烧到ROM里面。

我的另外一个问题是,我从ucosII的网站上下载了一个移植包,原本是用IAR编译的,改了一下用ADS编译,通过了,写了最简单的main函数,ADS的RO-base为默认设置0x8000,然后下载到硬件中去跑,接着就跑飞了,执行到OSInit()里面的第一句时就报DataAbort异常。
当我把RO-base改为片外SDRAM所在地址时,第一条指令就报PrefetchAbort异常。
完全不明白是怎么回事了。


麻烦各位大虾了。

回复评论 (1)

你的问题应该不难,不过要叙述清楚也不容易,有空聊聊285170438@qq.com
点赞  2007-1-2 21:48
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复