打印

为什么数组内容被改写了?

[复制链接]
楼主: zxb1717
手机看帖
扫描二维码
随时随地手机跟帖
21
zxb1717|  楼主 | 2008-6-18 20:09 | 只看该作者 回帖奖励 |倒序浏览

我用的片上的XRAM

TO:ayb_ice ,我用的是片上XRAM

使用特权

评论回复
22
zxb1717|  楼主 | 2008-6-18 20:26 | 只看该作者

TO:ayb_ice

我用的就是片上XRAM,请看数据手册的其中一段: 
The EZ-USB has 16 KB of on-chip RAM (the “Main RAM”) at addresses 0x0000-0x3FFF, and 512 
bytes of on-chip RAM (the “Scratch RAM”) at addresses 0xE000-0xE1FF. Although this RAM is 
physically located inside the chip, it’s addressed by EZ-USB firmware as External memory, just as 
though it were in an external RAM chip. 

使用特权

评论回复
23
李冬发| | 2008-6-19 02:41 | 只看该作者

你们家的BYTE还是比较牛的,能存下512这个值

使用特权

评论回复
24
dld2| | 2008-6-19 08:37 | 只看该作者

呵呵

使用特权

评论回复
25
zxb1717|  楼主 | 2008-6-19 08:45 | 只看该作者

李兄好幽默

呵呵,那个数组是举个例子,实际当然不是512

使用特权

评论回复
26
农民讲习所| | 2008-6-19 09:24 | 只看该作者

你这里没打勾

默认是0x0000

使用特权

评论回复
27
ayb_ice| | 2008-6-19 09:28 | 只看该作者

我确实没有看出LZ是怎么用的片上XRAM

明明没有使能使用片上XRAM,还想抵赖。。。
哈哈。。。

使用特权

评论回复
28
zxb1717|  楼主 | 2008-6-19 13:40 | 只看该作者

TO:ayb_ice,农民讲习所

我要是那里打钩,程序就不能正常运行,是不是片上XRAM太小了还是地址又发生了冲突,keil默认的是没有打钩,而且Off-chip Xdata memory那里也没有填start和size.

这是相关数据手册中的叙述:

The EZ-USB has 16 KB of on-chip RAM (the “Main RAM”) at addresses 0x0000-0x3FFF, and 512
bytes of on-chip RAM (the “Scratch RAM”) at addresses 0xE000-0xE1FF. Although this RAM is
physically located inside the chip, it’s addressed by EZ-USB firmware as External memory, just as
though it were in an external RAM chip.

使用特权

评论回复
29
zxb1717|  楼主 | 2008-6-19 13:43 | 只看该作者

我把关于这款单片机的memory情况传上来

Standard 8051:

The standard 8051 has separate address spaces for program and data memory; it can address 64
KB of read-only program memory at addresses 0x0000-0xFFFF, and another 64 KB of read/write
data memory, also at addresses 0x0000-0xFFFF. The standard 8051 keeps the two memory
spaces separate by using different bus signals to access them; the read strobe for program memory
is PSEN# (Program Store Enable), and the read and write strobes for data memory are RD#
and WR#. The 8051 generates PSEN# strobes for instruction fetches and for the MOVC (move
code memory into the accumulator) instruction; it generates RD# and WR# strobes for all datamemory
accesses. In a standard 8051 application, an external 64 KB ROM chip (enabled by the
8051’s PSEN# signal) might be used for program memory and an external 64 KB RAM chip
(enabled by the 8051’s RD# and WR# signals) might be used for data memory.
In the standard 8051, all program memory is read-only.

EZ-USB:

The EZ-USB has 16 KB of on-chip RAM (the “Main RAM”) at addresses 0x0000-0x3FFF, and 512
bytes of on-chip RAM (the “Scratch RAM”) at addresses 0xE000-0xE1FF. Although this RAM is
physically located inside the chip, it’s addressed by EZ-USB firmware as External memory, just as
though it were in an external RAM chip.
Some systems use only this on-chip RAM, with no off-chip memory. In those systems, the RD#
and PSEN# strobes are automatically combined for accesses to addresses below 0x4000, so the
Main RAM is accessible as both data and program memory. The RD# and PSEN# strobes are not
combined for the Scratch RAM; Scratch RAM is accessible as data memory only.
Although it’s technically accurate to say that the Main RAM data memory is writable while the Main
RAM program memory is not, it’s a distinction without a difference. The Main RAM is accessible
both as program memory and data memory, so writing to Main RAM data memory is equivalent to
writing to Main RAM program memory at the same address.
The Scratch RAM is never accessible as program memory.
The EZ-USB also reserves 7.5 KB (0xE200-0xFFFF) of the data-memory address space for control/
status registers and endpoint buffers (see Section 5.6, "On-Chip Data Memory at 0xE000-
0xFFFF"). Note that only the data-memory space is reserved; program memory in the 0xE000-
EZ-USB Technical Reference Manual
Page 5-4 EZ-USB Technical Reference Manual v1.3
0xFFFF range is not reserved, so the 128-pin EZ-USB can access off-chip program memory in
that range.

使用特权

评论回复
30
zxb1717|  楼主 | 2008-6-19 14:38 | 只看该作者

有点晕了

我这也没有外挂XRAM啊,要是没有用片上RAM,那数据都到哪去了?

Although this RAM is
physically located inside the chip, it’s addressed by EZ-USB firmware as External memory, just as
though it were in an external RAM chip.


这段话的意思是不是:这个RAM在物理上是片内RAM,但是访问的时候把他当作片外RAM处理?

使用特权

评论回复
31
zxb1717|  楼主 | 2008-6-20 13:50 | 只看该作者

顶上来!

The EZ-USB has 16 KB of on-chip RAM (the “Main RAM”) at addresses 0x0000-0x3FFF。

就是说我的单片机有16K的片上RAM,地址范围是(0x0000-0x3FFF),但是keil那个红圈的设置里(26楼)却是0xE000-0xE3FF,那要是打上勾会不会丢失空间啊,请大侠帮我看看,谢谢了!

使用特权

评论回复
32
zxb1717|  楼主 | 2008-6-20 13:56 | 只看该作者

computer00大侠呢

请您帮我看看吧!

使用特权

评论回复
33
zxb1717|  楼主 | 2008-6-20 14:01 | 只看该作者

应该怎么设置比较合适啊?

原来的那个界面"off-chip Xdara memory"都没有设置,我填了一个如图中所示的范围"0x0000-0xFFFF",这是片外RAM的空间大小,不知道这么设置会不会跟其他地址冲突,请大家给个建议或看法,谢谢啊

使用特权

评论回复
34
rainmans| | 2008-6-20 14:10 | 只看该作者

i是什么数据类型

使用特权

评论回复
35
zxb1717|  楼主 | 2008-6-20 14:32 | 只看该作者

TO:rainmans

 rainmans 发表于 2008-6-20 14:10 侃单片机 ←返回版面    

34楼: i是什么数据类型 
--------------------------------------

哪个i?

使用特权

评论回复
36
Glandy| | 2008-6-20 14:41 | 只看该作者

来看看

使用特权

评论回复
37
将军令| | 2008-6-24 08:25 | 只看该作者

可能是编译器的问题

在哪个数组之前加一个static看看

使用特权

评论回复
38
bloodshare| | 2008-6-27 18:48 | 只看该作者

display是不是用到总线了

使用特权

评论回复
39
eason_lee| | 2008-6-28 15:13 | 只看该作者

继续关注学习中

使用特权

评论回复
40
renrongwen| | 2008-7-7 08:53 | 只看该作者

我遇到了类似的问题

设置一个数组并赋初值,程序中一直没有修改它,计算机发过来正确串口数据命令后,mcu将这数组发到计算机上,发送正确的命令后,计算机接受的是正确的,但是一旦计算机发送错误的命令再发送正确的命令后,计算机接受到的数组值就发生变化啦?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则