2010-03-15 42 views
1

我想使用Keil uvision 3编译C代码。只有当我通过选择选项xdata作为目标使用大内存模型时,才会编译整个代码。要使用这个模型,我必须使用外部数据RAM,这对我来说由于某些原因是不可能的。使用keil uvision问题3

所以我决定去用pdata选项。任何人都可以帮助我完成使用pdata的确切步骤吗?我正在使用89V51RD2。我与像BL51 MISC的选项很多困惑,BL51定位等

回答

1

你可能有更好的运气在

http://www.keil.com/forum

在Keil的官方论坛上发帖这样做的NXP P89V51RD2是8051与导数,根据到数据手册,1KB的片上RAM。如果你的程序不适合那么多的空间,你会有来添加外部RAM。

PDATA允许您使用“P”年龄访问XDATA。这是而不是额外的内存。如果你需要更多的空间,你应该考虑优化你的内存使用情况,否则你将不得不增加额外的XDATA资源。

参考:C51: USING PDATA MEMORY

披露:我对凯尔/ ARM

0

工作,如果你真的没有任何可用的外部数据RAM,那么PDATA选项不会帮你。 PDATA位于与XDATA不同的逻辑地址空间中,但使用相同的物理空间

例如,您使用的微控制器包含1kB的RAM。所有1024个字节都可以作为XDATA存储器访问(地址XDATA:0x0000到XDATA:0x03FF)。 256字节(一次)可以作为PDATA存储器访问(地址PDATA:0x00到PDATA:0xFF)。假设您设置了微控制器,使用前256个字节的RAM作为PDATA存储器。这意味着PDATA:0x00和XDATA:0x0000指向RAM的同一物理字节。如果你不小心,你会尝试将两个不同的值存储在相同的物理内存中,其中一个值将被覆盖并丢失。

如果您已经在使用您的所有XDATA存储器,则需要使用DATA存储器或IDATA存储器才能获得更多。如果您确实使用IDATA内存,您需要非常小心您留出足够的空间,以便您存储的值不会被在IDATA处开始的堆栈意外覆盖:0xFF并向IDATA增长:0x00

编辑:对不起,我没有注意到这个问题是两岁。不过,希望这有助于某人。