免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3867 | 回复: 6
打印 上一主题 下一主题

将变量定义在指定的内存区域 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-04-14 10:06 |只看该作者 |倒序浏览
5可用积分
开发一个嵌入式系统的过程中遇到这样的一个需求:
定义一个全局变量,希望这个变量在linker阶段分配在指定的内存区域,例如
volatile int a;
希望变量a在0x20000至0x24000这段内存区域中分配,请问前辈如何做到这点?谢谢


现在知道一些信息:
自定义一个section,指定这个section的内存范围,然后将变量定义在这个section中。

不知道对不对,也不知道如何在C语言里面实现,请各位前辈指点,谢谢

论坛徽章:
5
2 [报告]
发表于 2009-04-14 10:32 |只看该作者
有误,删除。

[ 本帖最后由 yidou 于 2009-4-14 10:38 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2009-04-14 11:01 |只看该作者
定义一个全局变量,希望这个变量在linker阶段分配在指定的内存区域

指定的是物理内存,还是虚拟内存?

论坛徽章:
0
4 [报告]
发表于 2009-04-14 11:11 |只看该作者
没有操作系统的话用指针就行了
有操作系统的话写个类似于ramdisk的驱动吧

论坛徽章:
0
5 [报告]
发表于 2009-04-14 11:19 |只看该作者

回复 #1 把握今天 的帖子

这个是运行在trimedia的dsp上的,它的内存应该是平面的
我希望这个变量定义在内存的uncache区域
所以就有了这样的需求

由于现在代码里好多指针都是指向uncache区域的固定地址
现在需要一个全局变量,但是担心其他人使用的uncache区域时把这个变量的值给冲掉,所以希望不写死这个变量的地址

我也是第一次听说有方法实现,但没有找到,如果没有实现的方法,请版主删贴

[ 本帖最后由 把握今天 于 2009-4-14 11:24 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2009-04-14 11:34 |只看该作者
用汇编吧。

论坛徽章:
0
7 [报告]
发表于 2009-04-14 17:53 |只看该作者

回复 #1 把握今天 的帖子

问题已经解决

可能问这个问题不太合适,因为这个和trimedia的c编译器有关系

在连接阶段可以指定一个object文件中变量定义在uncache内存区域。

评分

参与人数 1可用积分 +15 收起 理由
yidou + 15 good

查看全部评分

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

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP