查看: 6136|回复: 9

[讨论] (以MK60为例)程序在flash中执行问题

[复制链接]

该用户从未签到

4

主题

22

帖子

0

注册会员

Rank: 2

积分
180
最后登录
2019-12-27
发表于 2016-6-4 10:28:11 | 显示全部楼层 |阅读模式
        在捣鼓程序直接放在片内ram中执行的时候,突然想到了一个问题:一般情况下,程序的code和只读的数据都放到了flash,rw 数据放到了ram中。我就是有以下几个问题,一直没有合适的答案来说服自己,模模糊糊的,希望FAE可以帮我解答一下,谢谢!

1.下载程序的时候是不是将程序(bin文件、hex文件)烧写到flash中,那map文件中的RAM分配的数据是什么时候有效的(什么时候装载进去的)?
1JFJG[6BL[80%IN8P2B31`4.png
2.通常情况下(程序烧写到flash中,运行程序),代码在flash中执行?rw数据、堆栈等在RAM中,我印象中说只有norflash才是XIP的,是不是意味着类似K60这样的芯片其flash就是这样的,还是说只是从flash中取出指令在执行?

3.加载域和执行域如何去理解?我希望一种大白话的理解方式,不是那种定义哈,举个例子就最好了,鄙人比较愚笨。为什么又有ER_ROM和ER_RAM?

谢谢各位啦。
回复

使用道具 举报

该用户从未签到

712

主题

6371

帖子

0

超级版主

Rank: 8Rank: 8

积分
24882
最后登录
2025-7-20
发表于 2016-6-6 15:07:30 | 显示全部楼层
楼主你好!
1. 是的,通常都是讲程序烧录到flash中,关于RAM的分配,你如果仔细检查代码的启动文件,你会发现有一段代码是拷贝flash到RAM的,拷贝之后,相关需要用到RAM的地方就会执行了。
2.是的,如果不是特殊的情况,都是放在flash中执行,除非有些代码,用户想自己放到RAM,那么也可以拷贝到RAM执行。
3. 加载域和执行域概念你是从哪看到的呢?
我个人理解,加载域就是把代码拷贝到相关的地方,比如你需要加载到RAM,那么你需要先拷贝到RAM,这个过程是加载过程。执行域就是要跑起来,也就是代码执行要从RAM跑,那么后面的代码功能实现过程就是执行域了。
ER_ROM,ER_RAM哪里来的?
回复 支持 反对

使用道具 举报

该用户从未签到

4

主题

22

帖子

0

注册会员

Rank: 2

积分
180
最后登录
2019-12-27
 楼主| 发表于 2016-6-7 08:38:17 | 显示全部楼层
小恩GG 发表于 2016-6-6 15:07
楼主你好!
1. 是的,通常都是讲程序烧录到flash中,关于RAM的分配,你如果仔细检查代码的启动文件,你会发 ...

QQ截图20160607081850.jpg
在mdk工程编译之后会生成一个默认的sct文件,里面的LR_IROM1、ER_IROM1,里面有加载地址和执行地址load address、execution address,我指的是这个意思,嘿嘿。
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2019-9-17 17:18
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    26

    主题

    394

    帖子

    0

    高级会员

    Rank: 4

    积分
    967
    最后登录
    2019-10-9
    发表于 2016-6-7 09:43:05 | 显示全部楼层
    学习学习
    回复

    使用道具 举报

    该用户从未签到

    712

    主题

    6371

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    24882
    最后登录
    2025-7-20
    发表于 2016-6-7 10:47:06 | 显示全部楼层
    andyxu 发表于 2016-6-7 08:38
    在mdk工程编译之后会生成一个默认的sct文件,里面的LR_IROM1、ER_IROM1,里面有加载地址和执行地址load  ...

    找到一个关于MDK scat文件的博文,你看看:
    http://blog.csdn.net/williamwanglei/article/details/8226374
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4

    主题

    22

    帖子

    0

    注册会员

    Rank: 2

    积分
    180
    最后登录
    2019-12-27
     楼主| 发表于 2016-6-7 11:50:07 | 显示全部楼层
    本帖最后由 andyxu 于 2016-6-7 12:24 编辑
    小恩GG 发表于 2016-6-7 10:47
    找到一个关于MDK scat文件的博文,你看看:
    http://blog.csdn.net/williamwanglei/article/details/82263 ...

    恩恩  正在研究中......
    DUI0206IC_rvct_linker_user_guide.pdf (849.57 KB, 下载次数: 5)
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-2-14 16:49
  • 签到天数: 296 天

    连续签到: 1 天

    [LV.8]以坛为家I

    241

    主题

    2239

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    4473
    最后登录
    2020-4-14
    发表于 2016-6-7 12:55:28 | 显示全部楼层
    谢谢,学习了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    712

    主题

    6371

    帖子

    0

    超级版主

    Rank: 8Rank: 8

    积分
    24882
    最后登录
    2025-7-20
    发表于 2016-6-7 14:31:44 | 显示全部楼层
    andyxu 发表于 2016-6-7 11:50
    恩恩  正在研究中......

    好的,如果后续研究过程中有任何问题,欢迎继续交流。
    另外,关于MDK的scater文件,你可以直接到keil官网提交技术服务请求,他们会更加专业的回答关于MDK的问题。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4

    主题

    22

    帖子

    0

    注册会员

    Rank: 2

    积分
    180
    最后登录
    2019-12-27
     楼主| 发表于 2016-6-8 14:12:36 | 显示全部楼层
    小恩GG 发表于 2016-6-7 14:31
    好的,如果后续研究过程中有任何问题,欢迎继续交流。
    另外,关于MDK的scater文件,你可以直接到keil官网 ...

    http://www.beyondcore.net/forum. ... &extra=#pid7588
    该帖写了我所理解的 MCU启动过程,欢迎批评指正
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4

    主题

    22

    帖子

    0

    注册会员

    Rank: 2

    积分
    180
    最后登录
    2019-12-27
     楼主| 发表于 2016-6-15 13:01:15 | 显示全部楼层
    小恩GG 发表于 2016-6-7 14:31
    好的,如果后续研究过程中有任何问题,欢迎继续交流。
    另外,关于MDK的scater文件,你可以直接到keil官网 ...

    有关scatter load的官方应用笔记 dai0048a_scatterload.pdf (119.92 KB, 下载次数: 7)
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

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

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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