本帖最后由 df_flying 于 2019-2-14 10:39 编辑
一、MINI RT1052简介 I.MX RT系列是NXP推出的一款跨界处理芯片,其自身定位既非传统的应用处理器也非传统的微控制器。目前该系列有RT1060,RT1050,RT1020,RT1015以及基于最近比较火的新架构Cortex-M33的RT600系列。 除去RT600这款最新架构的先不说,相比较cortex M7架构的较早的几款MCU,如ST的STM32F/H7系列(216MHz/400MHz),NXP的Kinetis® KV5x系列(240MHz),以及Microchip的SAM V7x系列(300MHz),RT系列给人的第一印象就是速度快,其主频最高达到了600MHz。其次就是价格便宜,其中RT1050系列算其中的性价比最高的一款了,当然这里得除去因为其封装为BGA的原因带来的PCB制板及工艺的附加成本外了。当然还有LQFP封装的RT10XX系列可供大家选择。 野火作为NXP的合作伙伴,也在第一时间推出了基于I.MXRT1052的核心板,不得不说这款核心板是目前为止配置较为凶悍的一款了,存储上集成了32MB SDRAM, 128MB NANDFLASH、 32MB QSPI FLASH,2Kb EEPROM,这样的存储空间足够评估数据储存,或者挂载简单的文件系统了 本次有幸以1元价格试用到其MINI的开发板,个人觉得MINI的板子更适合项目需求评测来使用,当然进一步学习的话,野火也有功能更加强大的Pro版本的开发板供大家学习。MINI板将所有的IO都使用了2.54mm排针引出,同时扩展了USB和网络等高级接口供大家方便评估。拿到板子的开关有点小问题,不影响使用的情况下就直接使用电阻跳接了。 二、RT1052 coremark跑分测试: 野火的资料使用起来还是比较方便的,工程可以直接使用进行测试,承接51等简单MCU的学习,也保留了对寄存器操作的例子,当然复杂的接口不太建议使用寄存器操作,毕竟NXP也推出了很多的函数库,并也在实时更新其中的bug。 这里直接使用野火提供的参考代码中的点LED灯的程序,并使用sysTick作为中断计时,使用的log打印是官方自带的打印函数,不过在开启PRINTF_FLOAT_ENABLE后, 发现打印float格式的数据还是有点问题,打印出全是0.0000,其中的原因还没分析,这里先对coremark中浮点型的打印使用了*1000打印lu格式处理。log使用/1000提示 Total time (secs),Iterations/Sec,CoreMark 1.0: 三项使用了*1000后的值, 测试的结果如下: 使用的芯片是MIMXRT1052CVL5B,其最大核心频率是528MHz,官方给的是600MHz下的3020 coremark跑分参考,跟频率简单计算下528MHz下约是2657.6,相比2442.797还有进一步优化的空间。测试代码见附件。 *简单说下移植的步骤: 1、由于core_main.c中有main函数,所以将原程序中main函数另命名,并保留其中的系统初始化,放到测试程序的init中,位于core_portme.c的portable_init函数中。 void portable_init(core_portable *p,int *argc, char *argv[]) { extern void main_init(void) main_init(); ... .... 2、定义#define ITERATIONS 30000 这个数字要足够大,否则会出现ERROR! Must execute for at least 10 secs for a valid result! 的error log 3、提供测试的时间,即core_portme.c中的start_time(),stop_time(),计数值,这里直接使用了sysTick中断提供的计数值作为时间基数,同时需要修改时间转换函数time_in_secs()。 4、重定义一些宏定义,这是打印一些使用的测试环境信息,位于core_portme.h中 5、提供log的打印入口,这里直接将ee_printf宏定义改为原先的打印入口,即: #defineee_printf DbgConsole_Printf
本次简测先到这,进一步学习在后期整理并分享
|