硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3585|回复: 10
收起左侧

[MDK] MDK中根域的含义

  [复制链接]

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2022-2-23 01:18:41 | 显示全部楼层 |阅读模式
ARM Compiler toolchain Using the Linker Version 5.0

指的是加载域和执行域地址相同区域,程序入口必须在根域中,特别是IDE封装起来的一些文件和函数,比如Flash中的数据复制到RAM里的函数。

image.png
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2024-4-11 23:37:27 | 显示全部楼层
这里说的“比如Flash中的数据复制到RAM里的函数” 在MDK中是指__main吗?或者是当一部分?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
 楼主| 发表于 2024-4-12 09:19:35 | 显示全部楼层
LUOXI19 发表于 2024-4-11 23:37
这里说的“比如Flash中的数据复制到RAM里的函数” 在MDK中是指__main吗?或者是当一部分?

对,就是指的__main
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2024-4-13 20:45:38 | 显示全部楼层
eric2013 发表于 2024-4-12 09:19
对,就是指的__main

好的谢谢大佬的回答,我还有些疑问就是:1.分散加载是否只是针对于那些可以映射到内存的flash或RAM才能生效?2.如果是这样,我想把程序烧写到外部QSPI falsh,那么如果一开始拿到一片空白的单片机,里面有没有”映射“这一步操作,那么这个“首次使用”的分散加载是否是“错误”的?还是说开发环境会帮我们把映射这一步先运行起来再烧写程序?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
 楼主| 发表于 2024-4-14 10:11:11 | 显示全部楼层
LUOXI19 发表于 2024-4-13 20:45
好的谢谢大佬的回答,我还有些疑问就是:1.分散加载是否只是针对于那些可以映射到内存的flash或RAM才能生 ...

这个还需要外部Flash的下载算法支持,剩下就跟你使用内部Flash一样的。
回复

使用道具 举报

6

主题

25

回帖

43

积分

新手上路

积分
43
发表于 2024-10-30 20:39:43 | 显示全部楼层
这里如果不放在根域的话,自己复制自己的原因是什么哇
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
 楼主| 发表于 2024-10-31 08:23:24 | 显示全部楼层
努力编程的小李 发表于 2024-10-30 20:39
这里如果不放在根域的话,自己复制自己的原因是什么哇

在MDK下测试的吗,自己手动调用的复制函数?MDK下这部分代码是封装起来的,只能调用封装的API
回复

使用道具 举报

2

主题

6

回帖

12

积分

新手上路

积分
12
发表于 2024-12-10 17:19:46 | 显示全部楼层
eric2013 发表于 2024-10-31 08:23
在MDK下测试的吗,自己手动调用的复制函数?MDK下这部分代码是封装起来的,只能调用封装的API

哥,为啥外部flash,加载域和执行域一样的时候,会工作不了?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
 楼主| 发表于 2024-12-11 09:11:04 | 显示全部楼层
2367643286 发表于 2024-12-10 17:19
哥,为啥外部flash,加载域和执行域一样的时候,会工作不了?

支持内存映射的QSPI Flash是可以的。
回复

使用道具 举报

4

主题

8

回帖

20

积分

新手上路

积分
20
发表于 2025-2-1 19:38:55 | 显示全部楼层
哥,如果加载域和执行域是一样的话,为啥要有复制代码这个过程?还是说光复制全局变量?还是说为了性能提升?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
 楼主| 发表于 2025-2-2 09:30:17 | 显示全部楼层
myangshu 发表于 2025-2-1 19:38
哥,如果加载域和执行域是一样的话,为啥要有复制代码这个过程?还是说光复制全局变量?还是说为了性能提升 ...

复制的是rw可读可写变量初始值,这个初始值是存到flash里面的,上电后复制到ram里面对应rw变量地址空间。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-12 03:39 , Processed in 0.059921 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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