查看: 1580|回复: 1

[其他] MDK怎么将函数放在RAM中运行

[复制链接]
  • TA的每日心情
    开心
    2018-8-30 16:02
  • 签到天数: 5 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    36

    主题

    1065

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1851
    最后登录
    2019-11-19
    发表于 2015-8-28 22:17:09 | 显示全部楼层 |阅读模式
            移植山外的库到MDK,其中有一个函数要求放在RAM中运行,并且该函数在SystemInit中,在__main()函数前。
            按照MDK的说法,通过分散加载文件可以将函数放于RAM中,只要分散加载文件正确就可以在__main()函数中自动将需要放在RAM中运行的函数从ROM复制到RAM。先假设我写了正确分散加载文件,那么问题来了,我这个函数是在__main()前面执行的,谁来将它复制到RAM中?
            抛开这个函数,假设我有另外一个函数在__main()之后,可以被__main()复制到RAM,那么我该怎么写分散加载文件?我试过像下面这么写,但似乎并没有用。
            LoadR    0x00070000   0x00001000{
                       ExecR    0x2002000   0x00001000{
                                mcg.o(relocatefunc)
                       }
            }
             其中0x00070000在ROM中,0x2002000在RAM中,该函数在mcg.o中,用#pragma关键词定义为relocatefunc段。

             有没有MDK高手来帮忙解释一下呢?
    我知道答案 目前已有1人回答

    评分

    参与人数 1NXP金币 +3 收起 理由
    小七 + 3

    查看全部评分

    哎...今天够累的,签到来了~
    回复

    使用道具 举报

    该用户从未签到

    145

    主题

    4926

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    9267
    最后登录
    1970-1-1
    发表于 2015-8-31 09:37:47 | 显示全部楼层
    楼主你好!
    看到网上有个方法:
    你可以把你要放进ram的函数都扔进一个.c文件中,然后右击它,进入option界面,在code/const选项选择ram地址
    你可以试试,关于RAM1,RAM2等地址,直接在工程的option里面配置就行,会自动生成对应的sct文件。
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-20 20:28 , Processed in 0.084969 second(s), 22 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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