首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用keil uvision 3的问题

使用keil uvision 3的问题
EN

Stack Overflow用户
提问于 2010-03-15 14:58:23
回答 2查看 1.1K关注 0票数 1

我正在尝试使用Keil uvision 3编译C代码,只有通过选择xdata选项作为目标来使用大内存模型,才能编译整个代码。要使用这个模型,我必须使用外部数据RAM,这是不可能的,因为一些原因。

所以我决定选择pdata选项。有人能帮我完成使用pdata的具体步骤吗?我用的是89V51RD2。我对BL51 MISC、BL51定位等选项非常困惑。

EN

回答 2

Stack Overflow用户

发布于 2010-03-15 15:07:42

您可能会更幸运地将此发布在官方的Keil论坛上

http://www.keil.com/forum

NXP P89V51RD2是一个8051的衍生产品,根据数据表,它有1KB的片上内存。如果您的程序不能适应这么大的空间,您将不得不添加外部RAM。

PDATA允许您使用“P”老化访问XDATA。这不是额外的内存。如果您需要更多的空间,您应该真正考虑优化您的内存使用,否则您将不得不添加额外的XDATA资源。

参考资料:C51:使用PDATA内存

披露:我为Keil/ARM工作

票数 1
EN

Stack Overflow用户

发布于 2012-07-07 05:55:50

如果您确实没有任何外部数据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内存,则需要使用数据内存或IDATA内存来获得更多信息。如果您确实使用IDATA内存,您将需要非常小心地使用,以使您所存储的值不会意外地被从IDATA:0xFF开始的堆栈覆盖,然后扩展到IDATA:0x00。

编辑:对不起,我没有注意到这个问题已经两岁了。希望这能帮上忙。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2448028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档