当前位置: 首页 > news >正文

遂宁市网站建设_网站建设公司_在线商城_seo优化

做二手的网站都有哪些,开发游戏软件需要学什么专业,长沙网络推广服务,企业网站icp备案申请最近公司准备启动一个新的项目#xff0c;使用NXP的MIMXRT1170芯片作为主控#xff0c;在熟悉芯片的过程中发现RT1176具备ITM和SWO功能模块#xff0c;于是针对之前项目中因工程庞大导致调试困难的问题#xff0c;决定使用SWO输出调试信息#xff0c;这样既可以节省硬件的… 最近公司准备启动一个新的项目使用NXP的MIMXRT1170芯片作为主控在熟悉芯片的过程中发现RT1176具备ITM和SWO功能模块于是针对之前项目中因工程庞大导致调试困难的问题决定使用SWO输出调试信息这样既可以节省硬件的一个串口同时还可以通过PC指针信息对工程资源进行分析经过与芯片厂家沟通RT1170芯片目前不支持MDK配置SWO又因为NXP的IDE因为某些个人原因不想用所以该功能实现都是通过软件寄存器直接配置和开源解析工具实现。 ITMInstrumentation Trace Macrocell和SWOSerial Wire Output是Arm Cortex-M处理器中用于调试和跟踪的两个重要功能模块。ITM是一种用于在微控制器上进行实时跟踪的调试技术它允许程序在运行时输出调试信息例如变量值、函数调用等。ITM通过SWOSerial Wire Output接口将这些信息输出到调试工具例如调试器或者调试控制台。 1、初始化TRACE_SWO引脚 IOMUXC_SetPinMux(IOMUXC_GPIO_LPSR_11_ARM_TRACE_SWO, 0); IOMUXC_SetPinConfig(IOMUXC_GPIO_LPSR_11_ARM_TRACE_SWO, 0x02U); 2、SWO的寄存器配置代码如下所示 #define ITM_TER0 *(volatile unsigned int *)0xE0000E00 #define ITM_TPR *(volatile unsigned int *)0xE0000E40 #define ITM_TCR *(volatile unsigned int *)0xE0000E80#define ITM_TER_PORT0 (10) #define ITM_TCR_ENABLE_ITM (10) #define ITM_TCR_ENABLE_DWT (13) #define ITM_TCR_BUS_ID (116)#define DEBUG_DEMCR *(volatile unsigned int *)0xE000EDFC#define BASE_CSSYS_SWO 0xE0048000 #define BASE_CSSYS_TSGEN 0xE0047000 #define BASE_CSSYS_TPIU 0xE0046000 #define BASE_CSSYS_ATB_FUNNUL 0xE0045000 #define BASE_CSSYS_CTI 0xE0044000 #define BASE_ATB_FUNNUL 0xE0043000 #define BASE_CTI 0xE0042000 #define BASE_ETM 0xE0041000#define SWO_CODR *(volatile unsigned int *)(BASE_CSSYS_SWO0x10) #define SWO_SPPR *(volatile unsigned int *)(BASE_CSSYS_SWO0xf0) #define SWO_LOCK *(volatile unsigned int *)(BASE_CSSYS_SWO0xfb0)#define CSSYS_ATB_FUNNUL_CTRL *(volatile unsigned int *)(BASE_CSSYS_ATB_FUNNUL0) #define CSSYS_ATB_FUNNUL_LOCK *(volatile unsigned int *)(BASE_CSSYS_ATB_FUNNUL0xfb0) #define ATB_FUNNUL_CTRL *(volatile unsigned int *)(BASE_ATB_FUNNUL0) #define ATB_FUNNUL_LOCK *(volatile unsigned int *)(BASE_ATB_FUNNUL0xfb0)void BOARD_InitHardware(void) {CLOCK_EnableClock(kCLOCK_Cstrace);DEBUG_DEMCR 0x01000000; // Enable trace and debug blockCSSYS_ATB_FUNNUL_LOCK 0xC5ACCE55;CSSYS_ATB_FUNNUL_CTRL 0x000003FF; ATB_FUNNUL_LOCK 0xC5ACCE55;ATB_FUNNUL_CTRL 0x000003FF;SWO_LOCK 0xC5ACCE55;SWO_SPPR 0x00000002; // Select NRZ protocolSWO_CODR 0x00000015; // 5 MHzITM_TCR ITM_TCR_BUS_ID | ITM_TCR_ENABLE_DWT | ITM_TCR_ENABLE_ITM; //0x0001040AITM_TER0 ITM_TER_PORT0; // Enable stimulus ports 0*(volatile unsigned int *)0xE0001000 0x40000001 // DWT_CTRL [Disable cycle counter and PC events]*(volatile unsigned int *)0xE0001004 0x00000000 // DWT_CYCCNT [Clear the cycle counter]*(volatile unsigned int *)0xE0001000 0x40001199 // DWT_CTRL [Program Counters] } 软件寄存器配置大致如上其中SWO的寄存器配置参考数据手册《Armv7-M Architecture Reference Manual》、《i.MX RT1170 Processor Reference Manual》详细配置可参考以上手册。 3、如果需要使用SWO的printf输出功能那么则需要重新定向printf本工程中直接使用的NXP的《MCUXpressoIDE》安装自带的重定向文件“retarget_itm.c”如果需要可自行安装下载或者使用其它重定向方法。 4、在程序调用printf输出日志将初始化的外部SWO引脚与jink的swo引脚相连接如果你一切顺利都配置成功通过Jlink SWO Viewer软件即可看到printf输出的日志注意输入正确的CPU和SWO的频率。 5、 接下来进来PC值的采样及分析本项目使用的Openocd对SWO输出的日志进行存储。OpenOCDOpen On-Chip Debugger是一个开源的调试和编程工具它用于与嵌入式系统中的调试接口例如JTAG、SWD等进行通信从而实现对目标芯片的调试、烧录和编程等功能类似于jlink软件。 6、Openocd的文件配置。本项目使用的是openocd 0.12.0版本据测试openocd的不同版本调用指令好像有些差异使用时应该注意一下避免后面造成不必要的使用问题jlink.cfg文件配置如下 adapter driver jlinktransport select swd 7、接下来配置芯片的配置文件本项目使用rt1170芯片所以在openocd的对应目录下创建相应的芯片配置文件名如果有可以不创建mimxrt1170.cfg配置如下 source [find ../tcl/target/swj-dp.tcl] source [find ../tcl/mem_helper.tcl]#定义MCU型号 if { [info exists CHIPNAME] } {set _CHIPNAME $CHIPNAME } else {set _CHIPNAME MIMXRT1170 } #内存小端 set _ENDIAN littleadapter speed 1000swd newdap $_CHIPNAME cpu -irlen 4 -ircapture 0x01 -irmask 0x0f -enabledap create $_CHIPNAME.dap -chain-position $_CHIPNAME.cpu target create $_CHIPNAME cortex_m -endian $_ENDIAN -dap $_CHIPNAME.dap#RT1170的SWO配置基地址 --- 0xE0048000 tpiu create $_CHIPNAME.tpiu -dap $_CHIPNAME.dap -ap-num 0 -baseaddr 0xE0048000#配置trace及swo引脚时钟、输出文件、使能 $_CHIPNAME.tpiu configure -protocol uart $_CHIPNAME.tpiu configure -traceclk 132000000 -pin-freq 6000000 $_CHIPNAME.tpiu configure -output trace.fifo $_CHIPNAME.tpiu enableitm port 0 on 8、修改USB串口驱动因为openocd使用的winusb驱动所以我们需要将jlink的驱动程序替换成USB驱动程序以解决驱动问题本项目使用的zadig软件进行的替换替换步骤如下 9、启动openocd进入openocd.exe文件目录下输入指令分别调用上面配置的jlink.cfg和mimxrt1170.cfg文件如下所示 10、 如果不出意外在你的openocd.exe的根目录下会自动生成一个trace.fifo文件里边便是SWO的日志文件。 11、解析trace.fifo文件本项目使用的是itm-tools链接如下https://github.com/japaric/itm-tools下载后需要搭建rust环境进行编译如下所示 12、itm-tools编译成功后 进入debug目录下将上面生成的trace.fifo和工程文件的.elf或.axf拷贝到这个目录下输入指令pcsampl trace.fifo -e 文件名.axf/elf输入指令如下所示说明解析成功。 参考文章链接 https://interrupt.memfault.com/blog/profiling-firmware-on-cortex-m#enabling-pc-sampling-with-itm-and-openocd
http://www.ihoyoo.com/news/141036.html

相关文章:

  • 武进网站建设公司网站设计报价
  • 做商城网站设计php 怎么做网站超链接
  • 宠物网站模板下载网站制作推广公司
  • 网站开发手机模拟器婚恋网站建设分析
  • 网站备案是否收费芜湖的网站建设公司
  • 都匀经济开发区建设局网站wordpress中页面编辑
  • 如何注册国外网站怀化电视台网站
  • 哪个网站可以做印章图案宿迁手机网站建设公司
  • 地方汽车网站模板购买微官网入口
  • 网站建设的费用是多少深圳物流网站建设
  • 个人网站的设计及实现网站建设与开发专业
  • 官方网站投诉平台移动端是什么
  • 在洪雅网站做企业招聘购物网名
  • 网站建设能赚钱吗wordpress插件看访问者数量
  • 个人网站备案名做网站的时候卖过假货而出过事
  • 学网站论坛响应式网站模板费用
  • 关于网站建设的申请报告做电影方面的网站怎么做
  • 做网站前端网址可以自己写吗河北唐山网站建设
  • 专业做网站的wordpress如何增加page样式
  • 山西企业网站模板建站平台53货源网下载app
  • 网站数据库备份怎么做wordpress经典主题下载
  • 网站后台无法修改信息jsp网站开发制作
  • 丹阳网站建设价位哪种类型的网站比较难做
  • 做专利网站的重要点成寿寺网站建设公司
  • 天津市建设银行租房网站分类目录是什么意思
  • 专做蔬菜大棚的网站银行管理系统网站建设
  • wordpress网站关键字发外链的网站排名
  • 盱眙县建设局网站手机 wordpress
  • 做软件营销网站怎么样襄阳门户网站建设
  • 用jsp做的网站需要什么工具栏温州如何进行网站推广