硬汉嵌入式论坛

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

[SRAM] STM32H7如何将指定的函数或者一个*.C文件放在ITCM中运行?

[复制链接]

61

主题

62

回帖

245

积分

高级会员

积分
245
发表于 2021-3-8 10:50:51 | 显示全部楼层 |阅读模式
STM32H7如何将指定的【函数】或者【*.C】文件放在ITCM中运行?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106828
QQ
发表于 2021-3-8 14:31:58 | 显示全部楼层
回复

使用道具 举报

1

主题

17

回帖

20

积分

新手上路

积分
20
发表于 2022-10-12 17:33:36 | 显示全部楼层
eric2013 发表于 2021-3-8 14:31
http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980

硬汉大哥,请问下:在该代码中,把MainRAM函数放到ITCM,那么MainRAM函数对应的执行Code是下载的时候就下载到ITCM还是__main到main之间的代码搬运的?
回复

使用道具 举报

4

主题

46

回帖

58

积分

初级会员

积分
58
发表于 2022-10-13 00:05:37 | 显示全部楼层
你有没有想过这么一个事情,定义一个全局变量的时候,直接在定义的时候赋值,这个变量是在RAM里面的,可是这个值是编译在代码里面的,也就是在flash里面的,那什么时候这个变量等于这个值的呢.
MDK我不清楚,但是IAR中定义了一个段叫做readwrite,也就是全局变量段,链接文件中会指明init by copy属性,也就是Reset之后,SystemMain之前会有一个编译器函数(data_init3)将readwrite的段里面存储的数据拷贝到对应的ram空间,形成了全局变量.
ITCM的函数也是这个道理,IAR里面叫做ramcode段,也会指明init by copy属性,把flash的函数代码拷贝到对应的ram地址,程序里面对这个函数的调用实际上是对ram地址的调用.
回复

使用道具 举报

18

主题

321

回帖

375

积分

高级会员

积分
375
发表于 2022-10-13 09:35:17 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-6 11:13 , Processed in 0.701621 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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