硬汉嵌入式论坛

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

[MDK] 请教一下 MDK 用V6的编译器RAM执行问题和生成汇编问题

[复制链接]

1

主题

6

回帖

9

积分

新手上路

积分
9
发表于 2021-7-14 11:02:34 | 显示全部楼层 |阅读模式
1.我使用一颗M3芯片,需要优化运行速度,发现V6编译器(都选最优时间相关选项)生成的文件,速度快一些,但是我想看看生成的汇编文件,怎么配置都不会生成,麻烦懂的工程师帮忙解答一下
2.由于FLASH比较慢,需要把一段代码放到RAM执行,V5时候用网上的方法可以实现,V6下怎么都不行:
sct文件:
LR_IROM1 0x00000000 0x00010000  {    ; load region size_region
  ER_IROM1 0x00000000 0x00010000  {  ; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
   .ANY (+XO)
  }
  RW_IRAM1 0x20000000 0x00001000  {  ; RW data
   *.o(RAMCODE)           ;代码在RAM执行
   .ANY (+RW +ZI)
  }

代码里面,V5这样用:
#pragma arm section code = "RAMCODE"
。。code
#pragma arm section
正常工作。


网上说V6这样用:
#pragma clang section text = "RAMCODE"
。。code
#pragma arm section

结果编译时出一个警告:.\config\OBJ\xxxxx.sct(13): warning: L6314W: No section matches pattern *.o(RAMCODE).
代码依然在flash运行。

请懂的大侠不吝赐教
望硬汉有空也指点一下。
多谢!


回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106995
QQ
发表于 2021-7-14 12:14:51 | 显示全部楼层
推荐直接右击文件设置option,简单省事,AC5,AC6通用。

比自己独立设置分散加载方便,设置option本质也是设置的分散加载
回复

使用道具 举报

1

主题

6

回帖

9

积分

新手上路

积分
9
 楼主| 发表于 2021-7-14 12:30:27 来自手机 | 显示全部楼层
只要是要将把部分子程序放到ram运行,不得已,ram太小,又不能放太多
回复

使用道具 举报

1

主题

6

回帖

9

积分

新手上路

积分
9
 楼主| 发表于 2021-7-14 12:31:47 来自手机 | 显示全部楼层
其实只要能达到指定部分子程序ram运行,用option和用sct我都不在意
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106995
QQ
发表于 2021-7-14 14:09:33 | 显示全部楼层
zhaoyuntao1 发表于 2021-7-14 12:31
其实只要能达到指定部分子程序ram运行,用option和用sct我都不在意

http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980

看下就会了,比较简单
QQ截图20210714140955.png
回复

使用道具 举报

1

主题

6

回帖

9

积分

新手上路

积分
9
 楼主| 发表于 2021-7-14 14:29:41 来自手机 | 显示全部楼层
多谢,我看看
回复

使用道具 举报

3

主题

337

回帖

346

积分

高级会员

积分
346
发表于 2021-7-14 22:49:25 | 显示全部楼层
用__attribute__((section("RAMCODE")))试试,比如这样写:
  1. void __attribute__((section("RAMCODE"))) myfun(void)
  2. {
  3.   ...
  4. }
复制代码


回复

使用道具 举报

1

主题

6

回帖

9

积分

新手上路

积分
9
 楼主| 发表于 2021-7-15 11:10:42 | 显示全部楼层
感谢两位。
硬汉的方法我试了,用他的例程没问题,但是用我这个M3芯片就不行,依然显示:  warning: L6314W: No section matches pattern xxxx.o(RO).
看了一下,其实右键设置后,keil会根据option设置,自动生成一个分散文件,然后调用,只不过由我之前的RAMCODE变成了我右键设置那个文件的.o文件

glory说的那种,跟我之前使用的方法差不多,我正在测试是不是我的优化选择导致的乌龙事件。
再次感谢两位的帮助。
回复

使用道具 举报

1

主题

6

回帖

9

积分

新手上路

积分
9
 楼主| 发表于 2021-7-15 11:45:04 | 显示全部楼层
补充一下上面二点回答:硬汉的方法我没有完全测试,编译了一下,看了map文件,可能跟选择的优化选项有关系,如果我不选择时间优化,就不会出现那个警告。回头我新建一个项目,测试下硬汉的方法是否适合我,我那个芯片RAM太小了,就只想挤出来一点运行代码。先补充这些,免得误导别人。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-13 14:51 , Processed in 0.307248 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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