切换到宽版
  • 7615阅读
  • 10回复

[ARM]STM32F407VET6  看看逻辑分析仪能提高到多少兆? [复制链接]

上一主题 下一主题
离线huaweiwx
 

发帖
1372
M币
2167
专家
65
粉丝
297
只看楼主 倒序阅读 我要置顶 楼主  发表于: 2016-06-30
在帖子  GD32逻辑分析仪最终版,23M、10M、3M、1M、300K、100k5档采样速率60k存储深度端口捕捉  将速度提高到23M,因为好奇,追求更高更快;便想到:
168M主频的 STM32F4XX 系列和 216M主频 的STM32F7XX
一步一步来,先玩F4,到手2天:stm32f407vet6:    

看上这块板子,是因为:
首先不是太贵,58元包邮;
2  想要的资源基本都有了,板子上已带usb转串口,连接串口方便,还有个usb_otg,既可当设备用,如 usb cdc 或 usb dfu,还可当host用接个u盘什么的,
3  有个tf的卡座,放我的数据和程序;
4  还有个串行的flash和i2c的eeprom;
5  一个 spi 插座可以插个 通讯模块,如esp网络、蓝牙或无线
6  TEF插座可以插个触摸彩屏;
7  最主要的是有个elua的stm版本,官方支持 stm32F4,这样tf卡模拟一个磁盘,简直就是一个上个世纪的小计算机;
再看看资源,除主频自72M提高到168M外,还有:
512kflash   和gd32F103RET6一样大;
内部SRAM有4块:
112kram  基本ram
16kram  bitbound ,地址映射到一个位寻找区域,可以单指令位操作,这样一条指令就可操作该区域内存的位;
64k        ccmram,这是一个快速内存区域,直接连接内核,可被cpu 以内核时钟速率 0等待存取;
4k          backup,电池后备;
自从开始用了arduino,就再也不想用keil了,还是用arduino平台,maple 已经针对F4有了移植,所以修改成针对这块板子比较简单:针对引脚修改variants中的内容,修改连接文件 .ld ,修改 board.txt,修改 platform.txt增加串口下载;还有增加了 下载到RAM调试的功能;
基本完成,先看看速度如何:读写10000次内存(u32):


并和 GD32对比:


附:测试程序
  1. #ifdef STM32F4
  2. volatile  uint32_t  uca_ccmram[16384] __attribute__((at(0x10000000)));
  3. #else
  4. volatile  uint32_t uca_ccmram[10000];
  5. #endif
  6. #define LED  LED_BUILTIN
  7. void setup() {
  8.   // initialize digital pc13 as an output.
  9.   volatile  uint32_t e, r;
  10.   uint32_t i;
  11. pinMode(LED, OUTPUT);
  12. Serial1.begin(115200);//
  13. while (!Serial1.available());
  14. Serial1.read();
  15. Serial1.println("***************************************");
  16. Serial1.println("Mcu ccmram speed test huaweiwx@sina.com");
  17. Serial1.println("gd32f103ret6 120M run in flash     1751");
  18. Serial1.println("STM32F407VET6  ram 1560  flash     1079");
  19. Serial1.println("***************************************");
  20.   r = 0;
  21.   e = micros();
  22.   for (uint32_t j =  0; j < 10000; j++) {
  23.     uca_ccmram[j] = j;
  24.   };
  25.   for (uint32_t j =  0; j < 10000; j++) {
  26.     if (uca_ccmram[j] != j) r = 1;
  27.   };
  28.   e = micros() - e;
  29.   if (r)Serial1.print("error!");
  30.   else {
  31.    Serial1.print("ok  Tus=");
  32.    Serial1.println(e, DEC);
  33.   }
  34. }
  35. // the loop function runs over and over again forever
  36. void loop() {
  37.   digitalWrite(LED, HIGH);  // toggle the LED
  38.   delay(100);
  39.   digitalWrite(LED, LOW);  // toggle the LED
  40.   delay(900);
  41. }



在ram运行 花费1550us 而在 flash运行 则花费 1079us;
这一点和 stm32F1不同,执行代码在FLAHS内运行更快,这是因为F1没有指令和数据高速缓存;而F4用指令和数据高速缓存;因此如果在代码在ram,则显然指令缓存没用上,而且数据缓存命中率又大大降低,速度竟然差异达到:1550/1079 = 1.44 倍;
和 GD32  120M主频 在flash内运行相比, 主频提高:168/120 =1.4 但速度提高  1751/1079 = 1.62,性能提升还是很明显的。
下一步,着手移植逻辑分析仪,预期:速率 40M,深度128k;



本文内容包含图片或附件,获取更多资讯,请 登录 后查看;或者 注册 成为会员获得更多权限
本帖最近打赏记录:共3条打赏 ,M币+10
离线2545889167

发帖
13268
M币
20754
专家
302
粉丝
4860
只看该作者 1楼 发表于: 2016-06-30
请登录后查看
本帖最近打赏记录:共1条打赏 ,M币+3
离线kinneng

发帖
24095
M币
22888
专家
47
粉丝
3984
只看该作者 2楼 发表于: 2016-06-30
请登录后查看
本帖最近打赏记录:共1条打赏 ,M币+2
离线天宇科技
发帖
29
M币
-346
专家
0
粉丝
6
只看该作者 3楼 发表于: 2016-06-30
请登录后查看
本帖最近打赏记录:共1条打赏 ,M币+2
离线kinneng

发帖
24095
M币
22888
专家
47
粉丝
3984
只看该作者 4楼 发表于: 2016-07-02
请登录后查看
本帖最近打赏记录:共1条打赏 ,M币+3
离线coolrikuy

发帖
1852
M币
3781
专家
1
粉丝
22
只看该作者 5楼 发表于: 2016-07-05
请登录后查看
离线czthisme
发帖
950
M币
944
专家
1
粉丝
56
只看该作者 6楼 发表于: 2016-08-13
请登录后查看
离线zzqasim

发帖
120
M币
1111
专家
0
粉丝
9
只看该作者 7楼 发表于: 2016-08-26
请登录后查看
离线zxy882266

发帖
454
M币
-230
专家
0
粉丝
13
只看该作者 8楼 发表于: 2017-05-16
请登录后查看
离线liang118038

发帖
76
M币
665
专家
0
粉丝
4
只看该作者 9楼 发表于: 2018-03-17
请登录后查看
快速回复
限80 字节
温馨提示:所有技术区严禁灌水,“沙发”“顶”字样;禁止广告贴;以免被删除
 
上一个 下一个