描述事实:
28335的官方技术文档上说:SARAM的大小总共有34K *16 。但是我从28335的内存映射表上查到:0x008000~0x010000这段连续的空间是SARAM,这段空间大小共计32K*16。另外在0x3F8000~0x3FC000这段连续的地址是SARAM,这段空间大小为16K*16。
问题1. 官方技术文档上说的SARAM的大小为34K*16 是怎么计算出来?
问题2. 0x008000~0x010000这段空间与0x3F8000~0x3FC000有什么关系?写了一程序,程序里面调用了API函数,在CMD文件里面把API函数放在Flash里面,执行API函数的时候在拷贝到 0x008000~0x010000这段SARAM空间里面。同时我在CMD文件里面并没有定义0x3F8000~0x3FC000这片区域,也就不存在放任何数据或者程序。运行程序时我发现0x008000~0x00C000这段空间里面内容竟然映射到0x3F8000~0x3FC000这段区域内???这么理解这个问题??反过来我验证0x3F8000~0x3FC000这段空间里面的数据是否会映射到0x008000~0x00C000这段空间里面,我在上面的说的程序里面加上了0x3F8000~0x3FC000这段空间的定义性质为存放我的数组数据,然后我在主程序开始就给我定义的数据里面赋值,我发现我赋的值是写到0x3F8000~0x3FC000这段空间里里面,但奇怪的0x008000~0x00C000这段空间的竟然存放了我刚刚写到0x3F8000~0x3FC000的数据,怎么理解??后来程序开始在0x008000处开始执行 API函数,竟然把我刚刚写到0x3F8000~0x3FC000这里面的数据给擦除了,这又怎么理解???
求高手解惑!!!万分感谢!!
Eric Ma:
1. L0~L7加起来是32K, 算法M0,M1各1K,加起来就是34K了。
2. L0~L3是双映射,就是一个RAM内容,两个地址,一般只用一个地址就好了,0x80000~0xc0000, 高地址不用去管它,这个高地址区域是为了和F240x兼容的。
ERIC
描述事实:
28335的官方技术文档上说:SARAM的大小总共有34K *16 。但是我从28335的内存映射表上查到:0x008000~0x010000这段连续的空间是SARAM,这段空间大小共计32K*16。另外在0x3F8000~0x3FC000这段连续的地址是SARAM,这段空间大小为16K*16。
问题1. 官方技术文档上说的SARAM的大小为34K*16 是怎么计算出来?
问题2. 0x008000~0x010000这段空间与0x3F8000~0x3FC000有什么关系?写了一程序,程序里面调用了API函数,在CMD文件里面把API函数放在Flash里面,执行API函数的时候在拷贝到 0x008000~0x010000这段SARAM空间里面。同时我在CMD文件里面并没有定义0x3F8000~0x3FC000这片区域,也就不存在放任何数据或者程序。运行程序时我发现0x008000~0x00C000这段空间里面内容竟然映射到0x3F8000~0x3FC000这段区域内???这么理解这个问题??反过来我验证0x3F8000~0x3FC000这段空间里面的数据是否会映射到0x008000~0x00C000这段空间里面,我在上面的说的程序里面加上了0x3F8000~0x3FC000这段空间的定义性质为存放我的数组数据,然后我在主程序开始就给我定义的数据里面赋值,我发现我赋的值是写到0x3F8000~0x3FC000这段空间里里面,但奇怪的0x008000~0x00C000这段空间的竟然存放了我刚刚写到0x3F8000~0x3FC000的数据,怎么理解??后来程序开始在0x008000处开始执行 API函数,竟然把我刚刚写到0x3F8000~0x3FC000这里面的数据给擦除了,这又怎么理解???
求高手解惑!!!万分感谢!!
mangui zhang:
回复 Eric Ma:
这一块知识 大师有时间还是多分享一些
双映射是不是双口RAM啊