OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5545|回复: 6

关于Linux开发板设置SP指针的疑惑

[复制链接]

1

主题

6

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2019-11-5
在线时间
4 小时
发表于 2019-11-5 16:48:25 | 显示全部楼层 |阅读模式
4金钱
SP设置为0x80200000,设置在DDR的低地址部分,为什么不设置到高地址部分比如0x9fffffff,C语言中定义的变量是从哪里开始定义的,会不会定义到栈中去

最佳答案

查看完整内容[请看2#楼]

堆栈是向下增长的,设置到0X9FFFFFFFFF是可以的,但是设置到0x80200000也是可以的,你在链接的时候将堆栈内存空间空出来就OK了。SP指针地址的设置只要满足地址范围就行了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2019-11-5 16:48:26 | 显示全部楼层
堆栈是向下增长的,设置到0X9FFFFFFFFF是可以的,但是设置到0x80200000也是可以的,你在链接的时候将堆栈内存空间空出来就OK了。SP指针地址的设置只要满足地址范围就行了
回复

使用道具 举报

3

主题

91

帖子

1

精华

高级会员

Rank: 4

积分
977
金钱
977
注册时间
2016-12-8
在线时间
398 小时
发表于 2019-11-6 01:22:37 | 显示全部楼层
0x9fffffff就超出了512MB  DDR的地址范围了,512M DDR3的地址是0X80000000~0XA0000000,感觉SP应该可以设置为0XA0000000(试验过OK)
回复

使用道具 举报

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10558
金钱
10558
注册时间
2017-2-18
在线时间
1911 小时
发表于 2019-11-6 12:15:10 | 显示全部楼层
帮顶~~
回复

使用道具 举报

1

主题

6

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2019-11-5
在线时间
4 小时
 楼主| 发表于 2019-11-6 16:59:52 | 显示全部楼层
那么C语言中定义的变量是从哪里开始定义的,会不会定义到栈中去呢?
回复

使用道具 举报

3

主题

91

帖子

1

精华

高级会员

Rank: 4

积分
977
金钱
977
注册时间
2016-12-8
在线时间
398 小时
发表于 2019-11-6 21:20:48 | 显示全部楼层
手撕开发板 发表于 2019-11-6 16:59
那么C语言中定义的变量是从哪里开始定义的,会不会定义到栈中去呢?

C语言定义的全局变量在data段、rodata,局部变量放在栈中。
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2019-7-12
在线时间
4 小时
发表于 2019-11-7 10:04:33 | 显示全部楼层
在单片机里面栈地址一般从大往小,其他全局变量从小往大,这样整个ram可以得到最大程度的使用,在i.mx6这里使用了ddr,内存足够大,所以使用起来就随心所欲了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-23 04:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表