本帖最后由 eltonchang2001 于 2022-11-9 11:29 编辑
#申请原创#
依照惯例,首先感谢合泰半导体!感谢21IC电子论坛!联合举办了这么优秀的活动,我有幸参与并获得合泰半导体赠送的Starter Kit开发板,不甚荣幸!
Starter Kit开发板的美图就不上了,好些评测都已贴过,只是有一点想特别说一下的是收到的Starter Kit开发板连排针都已经焊接好的,拿来使用就只需连连杜邦线即可,这点特别贴心。
Starter Kit开发板使用的是HT32F52352芯片,基于Cortex-M0+核心,最高主频不算高48MHz,128KB FLASH+16KB RAM很给力,外围设备也很丰富,支持USB2.0full-speed(12Mbps)模式,本次评测的主要目的是移植超轻量MOS系统到Starter Kit开发板上,同时跑跑Coremark看看HT32F52352的性能。
因为之前有适配Cortex-M0核心的MCU,Cortex-M0+核心与Cortex-M0核心在代码上基本没什么差别,可以直接拿来使用,只是针对不同MCU定制一些参数适配就可以跑起来了,下面是具体过程:
首先,使用Starter Kit开发板的官方配套例程,https://www.holtek.com.tw/esk32-30501 这里下载,如图所示标红的几个是需要下载的文档及软件。
就决定选用USART中的Interrupt_FIFO例程来移植了。就例程来说,合泰半导体官网上下载的HT32_STD_5xxxx_FWLib_V1.0.25_5831.zip,使用方法有点点不同以往,使用时需要在解压后的目录中使用_CreateProject.bat创新Keil的项目,在第一次使用时还需选择一下编译器选项为KEIL的MDK_ARMv5,按N键后方可完成,虽然操作上会繁琐一点点,但主要是为了能在更多主流编译平台上通用,也是厂家用心良苦了。
进入新建的目录MDK_ARMv5,将MOS核心代码拷贝过来,源代码悉数拷贝到src目录,引用文件拷贝到inc目录中,如图所示
进入Keil新建好的项目,选择增加组Coremark并添加源代码coremark目录下的所有文件进去,选择增加组MOS并添加mos.s进去,最终如图所示
在Keil编译器的C和ASM选项页中配置include paths选项,在其中均加入路径“..\MDK_ARMv5\inc”,如图所示
在ht32f5xxxx_01_it.c中增加gTick定义并在SysTick_Handler函数中自加一,供MOS系统调用并在coremark中会需要这个变量来计数跑分的运行时长,如图所示
修改一下startup_ht32f5xxxx_01.s中的代码,主要是更改PendSV_Handler和SysTick_Handler中断函数入口为MOS对应的中断函数,详见源代码。
修改一下mos.inc中的RAM定义项用以适配HT32F52352芯片,主要就是调整一下那几个标示(参数可调)的项,HT32F52352芯片的16KB RAM对应上即可,和详见源代码。
修改一下main.c,将原来main.c中的UxART_TxTest和UxART_RxTest串口发送显示代码单独定义到一个单独任务(任务task0,这样原例程中的功能依旧,可以在串口中收到自己发出字符串)中,再增加一个MOS的初始化函数和一个Coremark的守护任务就可以愉快的开跑了,详见源代码。
等待一会后,跑分结果让人大吃一惊,实在太低了,有点不敢相信,所以一定是哪里有误!一般来说得分过低就得要找Flash零等待设置来背锅,果然查看例程中发现Flash零等待设置为1,参阅数据手册也能看到,Flash零等待设置为1是主频为24MHz和48MHz之间,所以修改system_ht32f5xxxx_01.c中Flash零等待设置为0等待,但是实测当Flash零等待设置为0时主频最大只能到32MHz(高到40MHz就直接跑飞),于是还得修改PLL倍频(PLL_NF2_DIV)为4(4 * 8 = 32MHz),mos.s的mos_start函数中也需要一起修改SysTICK重装值配合主频32MHz,再次开跑。。。
好吧,得分有所提高,但每MHz得分1.216分还是偏低,试了开关PRE_FETCH_ENABLE和BCACHE_ENABLE跑分结果都没变化,一时间没想通还有什么原因可能影响到跑分了,因为时间所限未做过多分析,待有空时再深入研究一下。因为试用了Starter Kit开发板后一直有一种与其他MCU有点点不同的感觉,可能是例程的使用上或者数据手册的介绍中或者其他什么说不清道不明的原因,总之是有些不明觉厉!所以跑分结果偏低可能是我个人使用水平问题导致,回头还得仔细看看数据手册。
最后附上本次评测的源代码:
评测用例子_coremark_HT32_STD_5xxxx_FWLib_V1.0.25_5831.zip
(1.19 MB)
|