首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

MC9S12NE64扩展外部总线总线的问题

MC9S12NE64扩展外部总线总线的问题

我现在使用的是MC9S12NE64,由于系统需要,我扩展了256*16的外置SRAM(按照EVB画的,我时序了解的并不是很熟),由于我看到的资料 AN2287和AN2408 我看这两个资料好像已经过时,并且没有针对性.现在我想了解
1:如果我使用外部RAM,地址在$8000-$BFFF,内部同地址的的FLASH是否会被覆盖,如果没有通过什么指令或方式区分
2.在软件编程中是否就是初始化完毕以后,先写PPAGE寄存器,然后再从$8000-$BFFF中像普通寻址一样使用,这种PPAGE段之间的翻转还要人为的区分,我找不到示例程序,技术文档上的AN2287和AN2408肯定是不能用的
3. 资料中提到A14,A15好像已经提到不起作用了,由PPAGE下的XA14-XA19指定段地址,
但是我看到一些电路图仍然在使用(AN2408中),而我在评估板中的电路图中就没有使用,不知道这有什么区别
4. 我所知道MC9S12DG256B中是内置256Kflash的,AN2287和AN2408也主要是针对此芯片,但是我看到端口命名好像这两个资料中有不同(在2408的软件演示中)
当PPAGE为3E或3F时,地址分别映射了 $4000-$7FFF $C000-$FFFF 这两个16K在某时能重复寻址,而$8000-$BFFF此时又不能用,不理解为什么芯片设计为什么要这样作,不知道MC9S12NE64是否也是这样


以上一些问题概念比较模糊,大家能说说吗,能说多少是多少啊
自己顶一下吧,还是没有人回答,不知道这软件该如何编写
先回答第一个问题:

如果外部地址与内部地址重叠,则外部地址会被屏蔽,因为内部地址具有更高的级别。请看NE64数据手册(MC9S12NE64V1.pdf)的第446页。
海纳百川  有容乃大
第二个问题:

如果用C编程,编译器会自动对PPAGE寄存器进行初始化并根据运行时页面的变化设置PPAGE寄存器的值,编程人员不必考虑对PPAGE寄存器的操作。

如果用汇编编程,则需要对PPAGE寄存器进行操作。但有些指令如CALL和RTC已经包含了对PPAGE寄存器的操作。
海纳百川  有容乃大
第三个问题:

当外扩存储区时,我们一般选择地址为$8000~$BFFF的“窗口”区。此时A15和A14会保持为“10”不变,而XA14~XA19会根据PPAGE寄存器的内容而变化。此时要构成外部地址总线,通常用A13~A0在加上XA14~XA19构成一个线性的20位地址。

但此时A15和A14上并非没有信号。而且它们还与D15及D14复用。所以要不要用A15及A14这两个信号,主要看扩展地址范围,所用存储芯片的形式以及地址、数据的接口方法等,可以灵活使用。
海纳百川  有容乃大
第四个问题:

你提到端口命名不同。不知具体是指那一页的哪段内容?但总的来说,应该不影响理解和应用吧?

关于S12(包括NE64)的编址方法,确实有一些复杂。总的来说可以解释为,S12采用的是16位的地址总线,所以基本寻址空间是从$0000到$FFFF,共64K。当存储器空间大于64K时,就需要进行扩展。而S12采用的是用PPAGE寄存器分页的扩展方法。PPAGE是一个8位的寄存器,而可扩展的区域是$4000~$BFFF的16K区域。这样,S12可以扩展到256X16K=4M的编址空间。如果不采用PPAGE分页的方式,则需要有22位的地址总线才能达到4M的编址空间。这样芯片总线结构会更复杂,指令字节也更长。
采用PPAGE分页的方法后,CPU会处理如何将分页地址映射到64K的线性地址。对于用户来说,不需要考虑具体的操作,使用非常方便。
为了提高CPU的效率,当地址为$0000~$3FFF和$C000~$FFFF时,地址可直接映射,不需要PPAGE寄存器的参与。这就是所谓的非分页区。只有当地址为$4000~$BFFF时,才需要由PPAGE指定实际的页面。另外,为保证映射的完整性,两个非分页区也可以用分页地址来指定,就是$3E和$3F这两个页。
海纳百川  有容乃大
临贴涕淋,感激不尽啊
如果不采用PPAGE分页的方式,则需要有22位的地址总线才能达到4M的编址空间。这样芯片总线结构会更复杂,指令字节也更长。采用PPAGE分页的方法后,CPU会处理如何将分页地址映射到64K的线性地址。对于用户来说,不需要考虑具体的操作,使用非常方便。


是不是要在 prm文件里把 page页的映射关系定义好才可以使用page页阿。比如我在外部总线上接了一个外设,需要访问他内部的RAM。是否要把某个page的地址分配给他使用。再把这个page映射到刚才说的那 4M 的空间里去。做好这些工作以后才可以在C语言里自由的访问page页。

这是我的理解不知道对不对。。。
对,需要在PRM文件中定义扩展存储区的页值。
海纳百川  有容乃大
返回列表