为节省成本,2407A数据和程序准备共用外部64K存储器,硬件电路接法:CS=PS×DS(低有效),地址线对应连接,那么数据和程序都可以访问0000-FFFF的外部空间,如何分配存储器空间呢?
若数据空间占用0000-7FFF的前32k,程序空间占用后7FFF-FFFF的32k,那么程序都是从程序空间的0000来读取复位向量的,是不是就无法读取了?
若与前面相反,那么2407内部的sram和dram又都配置在前32k空间,是不是就又和程序空间冲突了?
关于存储器的配置一直不太清楚,请高手指点!
是否可行
把DS接A15,其余A0-A14对应连接,这样前后32K就分开了,是否可行?
我用的一块开发板是这样的:外部程序空间,数据空间都是:8000h - 0FFFFh.
这样硬件连接上应该也是可以实现的。使用前先要烧一次 FLASH,把程序空间
0-03Fh的区域填满转移指令:
0000 B 0FF00h,*
0002 B 0FF02h,*
0004 B 0FF04H,*
......
而中断向量表放到0FF00-0FFFF处。这样,复位还时中断就先经过0-3F处的跳转表进程序中的中断向量表。片内的数据存储器照样可以使用。
我也是以上思路
调试时程序和数据共用外部ram,完成后外部64K全部用做数据,程序放在内部flash,
但是在调试共用ram时,如何分配空间呢?
在。cmd中应该有一个page还是两个page呢?因为两个空间是相对独立的,我理解应该为两个page 0 和page 1,只不过每个page只有32k,不知道对不对?
因为板子还没有完成,无法验证,请高手指点!
三个 page,干脆 COPY 一个实例供参考。(扩展RAM还没有用完)
MEMORY
{
PAGE 0: /* PROGRAM MEMORY */
EX1_PM :ORIGIN=8800h , LENGTH=01000h /* 63.5K external RAM */
B0_PM :ORIGIN=0FF00h, LENGTH=40h /* On
I/o空间也要写到链接文件中?
所看的例子中好像没有写I/O空间的。
我这也是抄来的,一直用着,好像没啥问题。你这一说,我再去翻看一下,好多应用里确实没有 page2.且存疑吧!