本帖最后由 netlhx 于 2016-7-28 22:36 编辑
收到官方提供的NUCLEOF767板子,开箱就免了,颜值虽高,看多了也就是那么一回事。
点灯,跑个例程,试试MBED的神奇,都很好,咱玩点闲得蛋疼的事,拿COREMARK来跑个分,算是另类评测!
就是这个东西,不过得赞下ST的慷慨,100块,也就21IC有这个魄力,赞!
随着STM32F7家族的壮大,无论是CUBEMX还是MDK的HAL BSP包是越来越大了,下载一个BSP也要花费不少的时间啊
下面准备一个基本的程序框架,算是COREMARK程序的基础,顺便测试下基本功能。
本贴需要使用以下板载资源
所以先要把这些设备的情况搞清楚,一个一个的来看。
RCC,通过阅读官方文档,MCU使用的外部晶振默认没有提供,不过ST巧妙的将STLINK/V2-1的MCO引出来了,可以充当STM32F767的外部时钟源,默认是8MHZ。如下
LED居然提供了3个,大手笔啊。这里只用到一个
USART3是默认引出到STLINK/V2-1上的通信接口
了解了这些东西,接下来就可以在STM32CUBEMX中进行配置,先点个灯,然后再在点灯的基础上添加COREMARK的功能。
首先是时钟配置,F767最高支持216MHZ的主频,所以当然要将它的值设定到最高。别的也不多说,各位都是老司机,熟悉得很!
现在的程序功能很简单,先用UART3输出一段简单的欢迎信息,然后就是点灯咯!主要的代码如下
/* USER CODE BEGIN 2 */
HAL_UART_Transmit(&huart3, (uint8_t *)msg, strlen(msg), 100);
clockFrequence = HAL_RCC_GetSysClockFreq();
sprintf(clkmsg, "Current System Clock Frequency: %d\r\n\r\n", clockFrequence);
HAL_UART_Transmit(&huart3, (uint8_t *)clkmsg, strlen(clkmsg), 100);
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
HAL_Delay(500);
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_14);
}
/* USER CODE END 3 */
编译,运行,如果串口输出如下信息并且LED3开始闪烁,应该算正常了。
接下来准备移植COREMARK到NUCLEO-F767,由于之前在NUCLEO-L432上移植过,所以这个过程就很简单了,大部分是复制工作,再作简单的修改即可。关于COREMARK在STM32上的移植,官方有文档,详情参考:http://www.stmcu.org/article/id-327973
移植后的目录结构见上图
编译,没有错误了!开始跑了,注意默认的优化参数为-O3。
第一种情况:没有开时间优化的结果,请忽略输出中的-Otime,实际上是没有为TIME优化的。
只有可怜的500多分!
第二种情况,加上时间优化后的结果
COREMARK的得分值为881,与官方宣称的1082差距非常大!
不过倒是在PROFILE_RUN模式下得到过1167的结果,比官方宣称的值还要高那么一点点!
欢迎各位拍砖,看看是否还有优化不足的地方,否则测试值就相差太多了
补充一下:代码中对ICACHE及DCACHE都是开启了的
|