首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

[讨论]ram不够用

[讨论]ram不够用

请各位帮忙,我用MC68HC908JB16芯片,它的RAM只有384byte,我现在要用一个算法,用C语言做,光算法的变量就占了350byte最少,现在有什么办法,在不换芯片的前提下实现

不断学习,摸索中进步!
多谢版主,我在main()写了简单的小程序测了一下 ,怎么最多只能申请200byte变量。那其它剩余的空间干吗了,
我测试时候没有变量被优化的,当申请到380byte时debug初步可以看见给变量分配空间,但程序运行结果不正确,
不断学习,摸索中进步!
就是定义了局部变量,比如:unsigned char a[300];
还有请教版主:start08.c具体干什么工作?会不会占用RAM空间?
不断学习,摸索中进步!
我的程序里面没有全局变量的,而且只有main(),在里面定义的变量,
我不明白堆栈大小在那可以调整?在prm看不出哪有,多谢!!!!
不断学习,摸索中进步!
恩,版主有个不明白的,Z_RAM和RAM在数据寻找方式不同,一 是编译器自动完成的吗?
二 那么定义数据要不要用修饰符区别?
三 局部变量如果没有固定地址可以放到堆栈,那么我可不可以把堆栈大小设置位 384,这样测试,
四 我在申请变量空间大于200时候,在truetime窗口看见数组分配的位置怎么到了I/O register空间的位置,但是CW编译不报错,
不断学习,摸索中进步!
哎呀,版主,,我在 PRM文件看见stack 的是这样:
.stack 80 R/W 0x100 0x14F RAM
起始地址是 0x0100,在程序truetime'窗口看见 SP 指针复位 FF
怎么越看越感觉不对了,当单步调试程序看见 SP 是递减的,嵌入函数内部时候,SP 的范围会指向 00DB,sp 应该是堆栈指针吧,这样不是跑到栈外的空间了吗?
但是程序解果是正确的。
不断学习,摸索中进步!
是啊,我的prm就是这样的和标准的一样,编译自动生成的,我是在分配文件看见的,为什么sp出栈了,结果还正确啊!
不断学习,摸索中进步!
不是啊,我得堆栈看了是从0x14f开始,然后递减的,到100满了,但是就继续减,咋不报错?、
不断学习,摸索中进步!
大家过来帮我分析一下,
我的ram空间现在基本刚好够用了,我在调试程序时候,堆栈开了0x90,我要将一组数据进行算法转换,如果我得该组数据直接用for赋值,结果是正确的,但是我从键盘按键取值放入缓冲,只能取一个数据,多了取值不对,键盘取值是没有问题的,这会是什么原因,查了好久,感觉是ram的问题,但是我直接赋值占用的还是那些空间啊!!!

[此贴子已经被作者于2006-3-16 13:34:06编辑过]

不断学习,摸索中进步!
返回列表