这款号称32位的8051,实际上就是Intel的C251架构,向下兼容8051,地址空间扩展到了24位,堆栈空间扩展到了16位共64kB,扩大了内部SARM(edata)数据复制速度也有了很大提高,解决了8051架构的一些弊端。
STC花了很大力气宣传,芯片刚刚到手不久,板子打好测一下性能,看看是不是和他们宣传的一样好。
软件还是使用Dhrystone,编译器C251.exe 版本v5.60.0.0,速度优化,使用标准库。
第一次测试结果376ms,奇怪,怎么比8位的8051还慢?查了好久,原来WTST寄存器搞的鬼,复位值是最大值7,加了7个等待,手册建议35M主频以下改为0,修改为0重新测试,速度果然快了很多,结果如下。
结论就是大约0.38DMIPS/MHz,这个结果和ARM在 https://www.keil.com/benchmarks/c251_bmark.asp 这个文章中的测试结果是一致的。这就是C251架构的性能了,比8051提高很多,然而在现代一众32位MCU中显然不算入流。
其实我对这个来自古代的C251核心一点兴趣都没有,现代的Cortex-M和RISC-V比它要好得多,买这个芯片主要是想看看它的USB和两个CAN表现如何,尤其是两个CAN,从寄存器接口来看,就是内置了两片SJA1000控制器,光这两个CAN都值回票价了,具体如何,有待以后分解。
最后再吐槽下这个C251编译器,不知道是因为用户太少还是什么原因,真的是不太好用,很多标准C库函数没有实现,比如strstr,strtok,strtoul,都要自己实现。
一个结构体中定义的一个函数指针,指向实际的函数,它也分析不出来,然后报L57警告,实际呢又能运行,也就是函数并没有被优化掉,让人困惑。
*** WARNING L57: UNCALLED FUNCTION, IGNORED FOR OVERLAY PROCESS
离线
膜拜。
另,问下价格如何?也是用MDK编译吗?
STC官网价格5元,量少可能加一点,开发用Keil,装个C251编译器即可,基本和51开发一样。
离线
STC32G性能提升主要是内存架构优化带来的,在同样的22.1184M主频和速度优化时:
STC8G用时235ms,成绩0.109DMIPS/MHz
STC32G用时67ms,成绩0.384DMIPS/MHz,相对提升0.384/0.109=3.523倍
STC32G内存模型切换为Large后用时189ms,成绩0.136DMIPS/MHz,相对提升0.136/0.109=1.248倍
https://zhuanlan.zhihu.com/p/482337395
离线