nxp rt1052性能调试(SWO)--Apple的学习笔记

一,前言

nxp RT1052的FlexRAM及cache--Apple的学习笔记
里面最后提及了性能调试,那么是需要硬件条件的,为了要everything under the control,关于性能调试环境的搭建及验证是一个项目启动前的必须项。

二,调试说明

对应xip的芯片,代码运行在片外的flash中,速度一定比运行在内部ram慢,但是内部ram有限的情况下,到底应该把哪些rom代码放入到内部来运行呢?常用的方法就是看哪些代码是会被频繁切换调用的。那么要怎么才能统计到这些数据呢!就得靠调试器的trace高级功能。

三,实战

因为我买了rt1052的开发板, 内部时钟528M,可惜没有内部rom,内部ram最大512K,所以便宜。对于我来说stm32 cortexM4太经典的,不想玩了。换个cortex M7带cache,且xip方式运行的板子玩玩,了解了bootpin及烧录了几个demo配置,确认主要硬件功能是正常后,我就开始swo调试环境搭建了。
1)基于硬件板子,我需要添加1根杜邦线(jlink的13脚)要连接到板子的CN4的28脚(SWO)。
2)手册中搜索swo,发现pin脚是GPIO_B0_13,它和JTAG_TDO不是共用一个脚的,所以要进行初始化配置,且要启动trace时钟。具体可以参考nxp的应用手册AN13234。
3)一开始使用,io口打印的都是乱码。
猜测是频率设置不对,修改了JLINK页面的600M为528M就能看到io打印输出A,完全正确。
4)Function Profiler运行正确,这是我本次主要想获得的信息。
5)datalog玩了下,我以前怕不准,毕竟是调试模式下。但是我今天在调试模式下,用逻辑分析仪也同步进行了测试,结果还挺准确的。那么同时也说明了FreeRTOS的点灯周期不符合预期,误差超过了10%。这块之后需要了解根本原因及进行优化,今天自定义的任务项仅完成swo调试trace环境验证。
查到误差原因后补充更新:猜测导致误差的原因是printf或时钟配置对正确。结果printf注释掉依然不正确,那么就去检查时钟相关代码,果然实际配置的主频是528M,但是clock_config.c中为SystemCoreClock赋值为600M是不对的,删除后,delay延时比较准确了,当然下图的测量中我把printf也注释掉了。


准.png

四,效果图

rt1052开发板的swo调试环境已完成搭建及验证,将来随时就可以用了。


时间准.png

五,小结

我喜欢在源头就发现一切风险,而不是最后再救火,有多少人会写代码,又有多少人写出来的代码是优秀的,又有多少人能高效且优秀的写出代码,且不给别人添麻烦。我想说,一个好的开头代表成功了一半,千万不要拍脑袋来决定任何事!一定要进行深度思考,且必要时,还要进行闭环验证。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容