搜索
bottom↓
回复: 6

linux下如何指定函数从DDR跳转到指定内存(SRAM)中运行?

[复制链接]

出0入0汤圆

发表于 2012-12-9 12:05:47 | 显示全部楼层 |阅读模式
各位好:
我现在在做低功耗相关,如果要让系统处于低功耗状态,除了要关闭液晶等外设,还要将ARM处于低功耗,DDR处于自刷新,但是在DDR自刷新之前,程序必须运行在DDR之外,因为按照厂家的说法,这时DDR就已经不能运行程序了(我的理解是DDR自刷新情况下可以执行,但是只要执行程序那么就不会进入自刷新,也就不能休眠DDR,所以要换地方让CPU取指)。目前计划是在DDR自刷新之前将程序运行在内部32K的SRAM上,这样在DDR自刷新之后还可以继续执行将ARM休眠之类的操作。这样问题就来了:如何让一个程序在指定地址运行?
目前常规的有几种办法:1.函数指针跳转2.编写汇编指令
1.函数指针跳转时,我如何编写一个函数,指定他的运行地址是在我要的片内SRAM上,即0地址开始的32K空间内?
2.如果是采用C嵌套汇编,那么如何指定运行地址?在linux环境下是否采用lds文件指定运行地址?那么如果可以用Lds文件指定,那么在执行这段函数之前是否还要进行搬运?如何搬运?
请各位讨论下,如果能贴出来代码,那么更好,这是个很实际的问题,也很考验对程序执行的理解。

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2012-12-9 12:14:06 | 显示全部楼层
我看着需要资深专家来说,-----------------------------------------正在入门者路过

出0入0汤圆

发表于 2012-12-9 16:37:43 | 显示全部楼层
留名,等高手解答- -

出0入0汤圆

发表于 2012-12-9 16:51:26 | 显示全部楼层
首先需要程序存在指定地址,这里有两个办法,A:是编译器指定好了,下载程序后它就在那个位置了。B:是运行时将程序代码(原位置也是由编译器指定的)拷贝到该地址。就你现在描述,估计你要用第二种方式了。

至于跳转过去很容易了,一个JMP指令搞定!

出0入0汤圆

 楼主| 发表于 2012-12-9 22:35:26 | 显示全部楼层
netawater 发表于 2012-12-9 16:51
首先需要程序存在指定地址,这里有两个办法,A:是编译器指定好了,下载程序后它就在那个位置了。B:是运行 ...

是的,要用函数拷贝,现在已经有思路了,谢谢

出0入0汤圆

发表于 2012-12-10 08:31:43 | 显示全部楼层
bjlny 发表于 2012-12-9 22:35
是的,要用函数拷贝,现在已经有思路了,谢谢

没深入研究过Linux内核,但是这个问题里最麻烦的地方是:拿到一片物理地址是SRAM的存储区域,并且具备读/写/运行权限,(因为Linux的MMU。。。);并且让你的代码运行在特权状态(任何非USR状态),否则寄存器操作可能因为特权级挂掉。
之后就好办了,单独编译一个位置无关的程序,复制代码并执行即可。

不过,话说一般DRAM控制器可能会有低功耗模式,如果多少个周期没有DRAM访问,DRAM就会自刷新。这种情况下,降总线频率并且ARM WFI就差不多了。直接Hack内核潜在问题可能挺多。

出0入0汤圆

发表于 2012-12-10 09:28:48 | 显示全部楼层
进入SLEEP模式的过程不需要用户程序参与的。
要进入ARM的各种POWER模式,如果用三星的ARM的话是通过WFI指令进入。
当执行这个指令的时候,CPU会等待当前总线周期完毕,并且自动将DRAMC进入自刷新模式,然后CLOCK GATING整个CPU就完全停止下来了。某些模式下会有power gating。

所以完全不明白你的意思啊。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-20 18:16

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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