打印
[PIC®/AVR®/dsPIC®产品]

求助大神们关于PIC单片机数据空间RAM的问题,谢谢!

[复制链接]
1076|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
andymei1985|  楼主 | 2016-4-10 20:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位大神,目前小弟遇到的问题是:在头文件里定义的变量值在程序运行时被篡改。我理解的所用的18F6622单片机的RAM是4K byte,那么是不是可以定义大概4K byte的变量呢?我的lkr文件是按如下改的,头文件的大概定义格式是按下面这样定义的。统计了一下,没初始化和初始化的变量字节数要远小于在lkr里所开放的空间,那么为什么还会出现变量被篡改的问题呢?困扰多时了,请各位高手不吝赐教,感激涕零。
/////////以下为lkr文件的更改////////////////
ACCESSBANK NAME=accessram  START=0x0            END=0x0FF
DATABANK   NAME=gpr0       START=0x100          END=0x8FF
DATABANK   NAME=gpr9       START=0x900          END=0xCFF
DATABANK   NAME=gpr13      START=0xD00          END=0xEF3
DATABANK   NAME=dbgspr     START=0xEF4          END=0xEFF          PROTECTED
DATABANK   NAME=gpr15      START=0xF00          END=0xF5F
ACCESSBANK NAME=accesssfr  START=0xF60          END=0xFFF          PROTECTED

SECTION    NAME=CONFIG     ROM=config
SECTION    NAME=big     RAM=gpr0
SECTION    NAME=sma     RAM=gpr9
STACK SIZE=0x100 RAM=gpr13

/////////以下为头文件的定义格式////////////////
#pragma udata big=0x100
此处定义了大概200多个字节的变量
#pragma udata

#pragma idata sma=0x900
此处定义了大概100多个字节的变量
#pragma idata
沙发
andymei1985|  楼主 | 2016-4-11 08:12 | 只看该作者
程序运行中 发现已经赋值的变量偶尔会出现被篡改的现象,定义的变量少一些就会好转,不太明白数据的存储空间够大的情况下为什么会出现这种情况呢

使用特权

评论回复
板凳
yklstudent| | 2016-4-11 08:16 | 只看该作者
检测程序有修改此变量的地方

使用特权

评论回复
地板
andymei1985|  楼主 | 2016-4-11 09:53 | 只看该作者
yklstudent 发表于 2016-4-11 08:16
检测程序有修改此变量的地方

你好,程序里修改的地方赋值和被篡改的值不同,另外请问一下我定义的所有变量大概500个字节左右,18f6722的数据存储空间够吗?我用的是MC18的编译器,在编译之前关于编译器的优化和设置有什么特别要注意的吗,我的优化是这样的-w1 -Ou+ -Ot+ -Ob+ -Op+ -Or+ -Od+ -Opa+ -Om+ -On+ -Os+

使用特权

评论回复
5
michaellengleng| | 2016-4-13 14:14 | 只看该作者
没啥问题

使用特权

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

本版积分规则

7

主题

16

帖子

0

粉丝