硬汉嵌入式论坛

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

如何将中断程序搬移到RAM运行

[复制链接]

2

主题

9

回帖

15

积分

新手上路

积分
15
发表于 2019-6-5 16:38:35 | 显示全部楼层 |阅读模式
目前我使用的是RT1062单片机,成功的实现了将中断以外的程序复制到RAM且能够运行了,复制程序是通过修改IAR的ICF文件来实现的,目前我想把中断程序也复制过去,但是不知道怎么操作了,中断向量表我已经复制过去了,就差中断程序了。希望有大佬指教一下。十分感激。
回复

使用道具 举报

4

主题

140

回帖

152

积分

初级会员

积分
152
发表于 2019-6-5 17:38:53 | 显示全部楼层
直接中断函数前面加__ramfunc就行了,或者把中断函数所在的那个obj放到ram
回复

使用道具 举报

2

主题

9

回帖

15

积分

新手上路

积分
15
 楼主| 发表于 2019-6-5 18:07:55 | 显示全部楼层
zl1215 发表于 2019-6-5 17:38
直接中断函数前面加__ramfunc就行了,或者把中断函数所在的那个obj放到ram

非常感谢您的回答,实际上我的应用要求我不允许使用__ramfunc   必须得通过修改ICF来进行程序的搬移,然后我也测试了下用__ramfunc,中断是放在了RAM了,但是中断里面调用的程序还是放在flash里面的。   除非被调用程序也加__ramfunc,但是我的所有代码都是通过修改ICF已经搬移到了RAM里面了,   如果这个程序不是在中断里面调用的,则不会跑到flash里面去。还求大佬指教
回复

使用道具 举报

2

主题

9

回帖

15

积分

新手上路

积分
15
 楼主| 发表于 2019-6-5 18:11:59 | 显示全部楼层
zl1215 发表于 2019-6-5 17:38
直接中断函数前面加__ramfunc就行了,或者把中断函数所在的那个obj放到ram

还有就是通过 readonly object isr.o, 这样的方式不行,我的函数是写在了isr.c文件。我估计与.s文件里面指定了section有关系
回复

使用道具 举报

4

主题

140

回帖

152

积分

初级会员

积分
152
发表于 2019-6-5 18:36:08 | 显示全部楼层
凡人 发表于 2019-6-5 18:07
非常感谢您的回答,实际上我的应用要求我不允许使用__ramfunc   必须得通过修改ICF来进行程序的搬移,然 ...

IAR中除了使用__ramfunc之外其他的方式想要在中断中调用RAM中的函数都比较麻烦。你如果使用官方的启动代码,IAR在启动时候有一个保护机制,只要是中断向量表中的函数,它所调用的函数都不可以在RAM中运行。除非你只用启动代码中的复位中断,后面的中断你再创建一个向量表,和启动代码中的第一段向量表区别开。
回复

使用道具 举报

2

主题

9

回帖

15

积分

新手上路

积分
15
 楼主| 发表于 2019-6-5 18:42:18 | 显示全部楼层
zl1215 发表于 2019-6-5 18:36
IAR中除了使用__ramfunc之外其他的方式想要在中断中调用RAM中的函数都比较麻烦。你如果使用官方的启动代 ...

看来遇到了一个真大佬,目前我已经再开始您说的那种方法了,看来只能这么干了,真的很感谢您的回答。谢谢
回复

使用道具 举报

4

主题

140

回帖

152

积分

初级会员

积分
152
发表于 2019-6-5 22:42:51 | 显示全部楼层
凡人 发表于 2019-6-5 18:42
看来遇到了一个真大佬,目前我已经再开始您说的那种方法了,看来只能这么干了,真的很感谢您的回答。谢谢

不是大佬……也是从其他地方学到的,有问题再沟通,RT系列确实牛逼,不过用起来确实也有点麻烦
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2024-3-28 14:47:54 | 显示全部楼层
您好,可以说怎么弄的吗?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 10:48 , Processed in 0.417602 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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