- 主题:顺便在这里问问有没有人在51上跑过Dhrystone
私信下核心代码,我在STC上试试
【 在 tom6bj (tom) 的大作中提到: 】
: 我在若干开发板上测的结果如下
: NRF24LE1也号称1T 8051,看指令集,效率比STC还稍高一点,结果实测DMIPS/MHz性能只有AVR和STM8的1/10左右
: 到处都找不到STC的数据,STC官网只说“DMIPS比传统51快69.7倍”,就是不说具体多少
: ...................
--
FROM 36.45.173.*
扫了眼,发现ram是在xdata中,众所周知,51访问xdata是很慢的,不过架构定了也没啥好办法。
【 在 tom6bj (tom) 的大作中提到: 】
: 见附件, nrf24le1的,稍微改改应该就能在stc上跑了
: e_lib.h里, avr/stm8/stm32都是用标准库的strcpy和strcmp就可以, 不知道为啥51只能用自己写的,可能是sdcc的问题
: 以及25和25*25的两个数组本来应该是32位的吧,nrf24le1的ram不够, 8K的STC应该够了,得改回来,你参考一下gd32f350的
: ...................
--
FROM 36.45.173.*
补充一下STC测试结果
型号:STC8G1K17A
频率:22.1184MHz
内存模型:Large,数据全部在xdata,默认的small模式data空间装不下。
编译器:C51.exe V9.59.0.0
速度优化运行时间:476ms
尺寸优化运行时间:482ms
折算到16MHz的话大概是658ms,比nrfle01稍微快一点点,也可能是编译器的差异。
AVR不是太清楚,STM8稍微熟悉一点,这东西说是8位机,实际上就是个16位机。它的X Y SP都是16位的,PC甚至是24位的。51真正寻址快的区域只有256字节。XDATA区域实际是间接寻址的,快不起来。
【 在 tom6bj (tom) 的大作中提到: 】
: 我在若干开发板上测的结果如下
: NRF24LE1也号称1T 8051,看指令集,效率比STC还稍高一点,结果实测DMIPS/MHz性能只有AVR和STM8的1/10左右
: 到处都找不到STC的数据,STC官网只说“DMIPS比传统51快69.7倍”,就是不说具体多少
: ...................
--
FROM 36.45.173.*
换成标准库确实快很多
速度优化:476->235ms
面积优化:482->246ms
我这里也测试了下nRF24LE1
使用标准库,16M主频
速度优化:597ms
面积优化:624ms
16M主频折算到22.1184,分别是432ms和451ms,比STC慢了接近一倍。
【 在 tom6bj (tom) 的大作中提到: 】
: zan
: strcpy和strcmp试试用标准库的?我这儿用不了, 不知道为啥
: stm32和avr,用标准库的strcpy和strcmp快得多
: ...................
--
修改:spadger FROM 36.45.173.*
FROM 36.45.170.*
都是弱鸡,没啥意义。但凡有一点性能需求的都不会用8位机了。
相比之下便宜好用更重要。
【 在 tom6bj (tom) 的大作中提到: 】
: 不过比avr和stm8还是慢不少…… 主频35M也只能接近16M的stm8,还超不过
: - 来自「最水木 for iPhone 8」
--
修改:spadger FROM 111.18.44.*
FROM 111.18.44.*