切换到宽版
  • 7661阅读
  • 23回复

[ARM]STM32:将运行代码装入RAM中运行问题和实现 [复制链接]

上一主题 下一主题
离线jcdzxh

发帖
1384
M币
8424
专家
9
粉丝
47
只看该作者 20楼 发表于: 2017-11-02
STM32F103,flash取指宽度是96位,这个手册明确有讲,
DL=0或DL=2,绝大多数情况下测试不到变慢
本帖最近打赏记录:共1条打赏M币+1
离线huaweiwx

发帖
1273
M币
3361
专家
57
粉丝
240
只看该作者 21楼 发表于: 2017-11-02
回 jcdzxh 的帖子
jcdzxh:
STM32F103,flash取指宽度是96位,这个手册明确有讲,
DL=0或DL=2,绝大多数情况下测试不到变慢 回 jcdzxh 的帖子


我不是做的专业测试,只是跑这样一段代码:

  r = 0;
  time = micros();
  for (uint32_t j =  10000; j >0; j--) {
    r = r+j;
  };
  time = micros() - time;

很简单,进入 for循环前记录时间,完成后再记录时间,也没关中断,10000次 的累加,在不同板子上的结果如下:
  //arduino mega2560  16m                              16392
  //arduino zion128      16m                              16388
  //stm32f103vct6         72M   ram 1112   flash  1251
  //gd32f103ret6            72M  ram 2927   flash  1113
  //gd32f103ret6          120M  ram 1754   flash   667
  //STM32F407VET6  168M                     flash   419
  //86duino                                                           200
但结果确实是ST sram跑得快 而GD则在flash中跑得快;

我的结果和你的测试不同,不知为什么?能否发个代码我试试?

离线jpdd521

发帖
25679
M币
8582
专家
15
粉丝
339
只看该作者 22楼 发表于: 2017-11-02
老哥666,厉害啊!
离线dapan100

发帖
62
M币
422
专家
0
粉丝
2
只看该作者 23楼 发表于: 07-10
一句话:IROM1设成0能根据启动模式自动映射到真实地址上去