[PIC®/AVR®/dsPIC®产品] 求助大神们关于PIC单片机数据空间RAM的问题,谢谢!

[复制链接]
 楼主| 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+
michaellengleng 发表于 2016-4-13 14:14 | 显示全部楼层
没啥问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

16

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部