[SylixOS iMXRT1050][6] 仿真调试

2023-11-03 06:38

本文主要是介绍[SylixOS iMXRT1050][6] 仿真调试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  1. 仿真调试

SylixOS IDE集成多种仿真调试功能,对于i.MX-RT1050平台可以使用J-Link仿真器进行代码调试。

    1. 准备工作
  1. 首先安装好需要的软件,以及准备好开发板和J-Link仿真器,本文档调试使用的各软硬件版本如下:
  1. 操作系统 :Windows10  64位教育版
  2. RealEvo-IDE :V3.7.3 Ultimate
  3. 目标开发板 :MIMXRT1050-EVK
  4. J-Link调试器 :硬件为J-LinkV9,固件版本V9.40,软件版本V6.31a
  1. 去掉开发板上J32,J33的跳帽,断开板载DAP仿真器与SOC的SW仿真接口,防止与J-Link仿真器硬件冲突。用跳帽短接J1的5脚和6脚,用USB线连接电脑与J28口,使用USB接口为开发板供电,同时使用板载DAP仿真器提供的USB转串口功能作为串口调试接口。
  2. 关闭或断开J-Link仿真接口2脚的电源输出功能,使用20PIN排线连接J-Link与开发板,J-Link的USB口连接电脑。
  3. 修改BSP工程中的BSP_CFG_BOOT_MODE宏,定义为BSP_CFG_SDRAM_BOOT,编译获取sdram版系统镜像。镜像运行前需要初始化外部sdram并加载镜像到sdram中。
    1. 设置调试参数
  1. 选择“Run→Debug Configurations”或者点击Debug按钮(小虫子图标)右边三角下拉框选择“Debug Configurations”。打开Debug Configurations设置页面。右键“GDB SEGGER J-Link Debugging”选择“New”新建一个调试对象。

图 4.1新建调试对象

  1. “Name”栏为调试对象名称。“Name”栏下为5个设置标签页。

图 4.2 调试对象设置界面

  1. “Main”标签页
  1. “Project”栏填写要仿真的工程名称。或点击“Browse”按钮,在弹出的对话框中选择。
  2. “C/C++ Application”栏填写要仿真的.elf目标文件,或通过下方三个按钮进行选择,一般使用“Search Project...”。
  3. “Build before launching”栏是选择启动仿真前是否要编译工程,一般默认即可。

 

  1. “Debugger”标签页
  1. “Actual executable”填写实际要运行的J-Link GDB Server程序,需要到J-Link驱动安装路径下查找,一般都能自动识别。这里的值为“C:/Program Files (x86)/ SEGGER/ JLink_V631a// JLinkGDBServerCL.exe”。
  2. “Device name”填写目标处理器型号,这里是“MCIMXRT1052”
  3. “Executable”填写要调用的本地GDB Client可执行程序,也可以通过右边的按钮进行选择。这里使用的值为“C:\ACOINFO\RealEvo\compiler\arm-sylixoslitele-toolchain\bin\ arm-sylixoslitele-eabi-gdb.exe”。
  4. 其他选项按图 4.3设置。

 

图 4.3 Debugger标签页设置

  1. “Startup”标签页
  1. “Initialization Commangds”栏用于设置目标初始化命令,方框中用于填写要执行的命令。因为sdram版的系统镜像是要在外部sdram中运行,所以在仿真运行前需要通过此处添加的命令来初始化外部sdram,初始化外部sdram命令如下:

monitor writeu32 0x400FC068=0xffffffff

monitor writeu32 0x400FC06C=0xffffffff

monitor writeu32 0x400FC070=0xffffffff

monitor writeu32 0x400FC074=0xffffffff

monitor writeu32 0x400FC078=0xffffffff

monitor writeu32 0x400FC07C=0xffffffff

monitor writeu32 0x400FC080=0xffffffff

monitor writeu32 0x400D8030=0x00002001

monitor writeu32 0x400D8100=0x001d0000

monitor writeu32 0x400FC014=0x00010D40

monitor writeu32 0x401F8014=0x00000000

monitor writeu32 0x401F8018=0x00000000

monitor writeu32 0x401F801C=0x00000000

monitor writeu32 0x401F8020=0x00000000

monitor writeu32 0x401F8024=0x00000000

monitor writeu32 0x401F8028=0x00000000

monitor writeu32 0x401F802C=0x00000000

monitor writeu32 0x401F8030=0x00000000

monitor writeu32 0x401F8034=0x00000000

monitor writeu32 0x401F8038=0x00000000

monitor writeu32 0x401F803C=0x00000000

monitor writeu32 0x401F8040=0x00000000

monitor writeu32 0x401F8044=0x00000000

monitor writeu32 0x401F8048=0x00000000

monitor writeu32 0x401F804C=0x00000000

monitor writeu32 0x401F8050=0x00000000

monitor writeu32 0x401F8054=0x00000000

monitor writeu32 0x401F8058=0x00000000

monitor writeu32 0x401F805C=0x00000000

monitor writeu32 0x401F8060=0x00000000

monitor writeu32 0x401F8064=0x00000000

monitor writeu32 0x401F8068=0x00000000

monitor writeu32 0x401F806C=0x00000000

monitor writeu32 0x401F8070=0x00000000

monitor writeu32 0x401F8074=0x00000000

monitor writeu32 0x401F8078=0x00000000

monitor writeu32 0x401F807C=0x00000000

monitor writeu32 0x401F8080=0x00000000

monitor writeu32 0x401F8084=0x00000000

monitor writeu32 0x401F8088=0x00000000

monitor writeu32 0x401F808C=0x00000000

monitor writeu32 0x401F8090=0x00000000

monitor writeu32 0x401F8094=0x00000000

monitor writeu32 0x401F8098=0x00000000

monitor writeu32 0x401F809C=0x00000000

monitor writeu32 0x401F80A0=0x00000000

monitor writeu32 0x401F80A4=0x00000000

monitor writeu32 0x401F80A8=0x00000000

monitor writeu32 0x401F80AC=0x00000000

monitor writeu32 0x401F80B0=0x00000010

monitor writeu32 0x401F80B4=0x00000000

monitor writeu32 0x401F80B8=0x00000000

monitor writeu32 0x401F8204=0x000110F9

monitor writeu32 0x401F8208=0x000110F9

monitor writeu32 0x401F820C=0x000110F9

monitor writeu32 0x401F8210=0x000110F9

monitor writeu32 0x401F8214=0x000110F9

monitor writeu32 0x401F8218=0x000110F9

monitor writeu32 0x401F821C=0x000110F9

monitor writeu32 0x401F8220=0x000110F9

monitor writeu32 0x401F8224=0x000110F9

monitor writeu32 0x401F8228=0x000110F9

monitor writeu32 0x401F822C=0x000110F9

monitor writeu32 0x401F8230=0x000110F9

monitor writeu32 0x401F8234=0x000110F9

monitor writeu32 0x401F8238=0x000110F9

monitor writeu32 0x401F823C=0x000110F9

monitor writeu32 0x401F8240=0x000110F9

monitor writeu32 0x401F8244=0x000110F9

monitor writeu32 0x401F8248=0x000110F9

monitor writeu32 0x401F824C=0x000110F9

monitor writeu32 0x401F8250=0x000110F9

monitor writeu32 0x401F8254=0x000110F9

monitor writeu32 0x401F8258=0x000110F9

monitor writeu32 0x401F825C=0x000110F9

monitor writeu32 0x401F8260=0x000110F9

monitor writeu32 0x401F8264=0x000110F9

monitor writeu32 0x401F8268=0x000110F9

monitor writeu32 0x401F826C=0x000110F9

monitor writeu32 0x401F8270=0x000110F9

monitor writeu32 0x401F8274=0x000110F9

monitor writeu32 0x401F8278=0x000110F9

monitor writeu32 0x401F827C=0x000110F9

monitor writeu32 0x401F8280=0x000110F9

monitor writeu32 0x401F8284=0x000110F9

monitor writeu32 0x401F8288=0x000110F9

monitor writeu32 0x401F828C=0x000110F9

monitor writeu32 0x401F8290=0x000110F9

monitor writeu32 0x401F8294=0x000110F9

monitor writeu32 0x401F8298=0x000110F9

monitor writeu32 0x401F829C=0x000110F9

monitor writeu32 0x401F82A0=0x000110F9

monitor writeu32 0x401F82A4=0x000110F9

monitor writeu32 0x401F82A8=0x000110F9

monitor writeu32 0x402F0000=0x10000004

monitor writeu32 0x402F0008=0x00030524

monitor writeu32 0x402F000C=0x06030524

monitor writeu32 0x402F0010=0x8000001B

monitor writeu32 0x402F0014=0x8200001B

monitor writeu32 0x402F0018=0x8400001B

monitor writeu32 0x402F001C=0x8600001B

monitor writeu32 0x402F0020=0x90000021

monitor writeu32 0x402F0024=0xA0000019

monitor writeu32 0x402F0028=0xA8000017

monitor writeu32 0x402F002C=0xA900001B

monitor writeu32 0x402F0030=0x00000021

monitor writeu32 0x402F0004=0x000079A8

monitor writeu32 0x402F0040=0x00000F31

monitor writeu32 0x402F0044=0x00652922

monitor writeu32 0x402F0048=0x00010920

monitor writeu32 0x402F004C=0x50210A08

monitor writeu32 0x402F0080=0x00000021

monitor writeu32 0x402F0084=0x00888888

monitor writeu32 0x402F0094=0x00000002

monitor writeu32 0x402F0098=0x00000000

monitor writeu32 0x402F0090=0x80000000

monitor writeu32 0x402F009C=0xA55A000F

monitor sleep 100

monitor writeu32 0x402F0090=0x80000000

monitor writeu32 0x402F009C=0xA55A000C

monitor sleep 100

monitor writeu32 0x402F0090=0x80000000

monitor writeu32 0x402F009C=0xA55A000C

monitor sleep 100

monitor writeu32 0x402F00A0=0x00000033

monitor writeu32 0x402F0090=0x80000000

monitor writeu32 0x402F009C=0xA55A000A

monitor sleep 100

monitor writeu32 0x402F004C=0x50210A09

  1. “RAM application”是否为RAM中的应用程序,需要勾选。
  2. “Run/Restart Commands”栏方框内填写加载或下载完成后仿真运行前要操作的命令。此处需要设置向量表偏移,初始化栈地址及PC值。命令如下:

monitor writeu32 0xE000ED08=0x80000000

monitor reg sp = (0x80000000)

monitor reg pc = (0x80000004)

  1. 其他项按照图 4.4进行设置。

图 4.4 “Start”标签页设置

 

    1. 启动调试

点击“Debug”按钮启动仿真调试,IDE会进入Debug视图模式,不同配置下界面会有所区别,此处的界面如下图所示:

图 4.5 Debug视图模式

按F8快捷键即可进行全速仿真,另外单步执行、暂停、设置断点、查看变量等都可以使用。

 

    1. 调试Extension
  1. 编译好sdram版的BSP工程和Extension工程。
  2. 启动BSP工程仿真,等待镜像加载完成。

图 4.6 Console窗口

  1. 导入Extension工程的.elf文件。方法是在Debugger Console窗口中输入“add-symbol-file D:/project/imxrt1050/extExample/Debug/extExample.elf 0x81800000”。“add-symbol-file”为GDB命令,第一个参数为要导入的.elf文件,第二个参数为对应文件的链接地址。

图 4.7 Debugger Console窗口

  1. 在Extension工程源文件打一个断点,然后全速仿真,加载运行Extension工程,仿真会在断点处停止。

图 4.8 加载运行Extension工程

图 4.9 仿真在Extension源码处停止

这篇关于[SylixOS iMXRT1050][6] 仿真调试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/336290

相关文章

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

如何在Visual Studio中调试.NET源码

今天偶然在看别人代码时,发现在他的代码里使用了Any判断List<T>是否为空。 我一般的做法是先判断是否为null,再判断Count。 看了一下Count的源码如下: 1 [__DynamicallyInvokable]2 public int Count3 {4 [__DynamicallyInvokable]5 get

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(五):Blender锥桶建模

前言 本系列教程旨在使用UE5配置一个具备激光雷达+深度摄像机的仿真小车,并使用通过跨平台的方式进行ROS2和UE5仿真的通讯,达到小车自主导航的目的。本教程默认有ROS2导航及其gazebo仿真相关方面基础,Nav2相关的学习教程可以参考本人的其他博客Nav2代价地图实现和原理–Nav2源码解读之CostMap2D(上)-CSDN博客往期教程: 第一期:基于UE5和ROS2的激光雷达+深度RG

vscode中文乱码问题,注释,终端,调试乱码一劳永逸版

忘记咋回事突然出现了乱码问题,很多方法都试了,注释乱码解决了,终端又乱码,调试窗口也乱码,最后经过本人不懈努力,终于全部解决了,现在分享给大家我的方法。 乱码的原因是各个地方用的编码格式不统一,所以把他们设成统一的utf8. 1.电脑的编码格式 开始-设置-时间和语言-语言和区域 管理语言设置-更改系统区域设置-勾选Bata版:使用utf8-确定-然后按指示重启 2.vscode

perl的学习记录——仿真regression

1 记录的背景 之前只知道有这个强大语言的存在,但一直侥幸自己应该不会用到它,所以一直没有开始学习。然而人生这么长,怎就确定自己不会用到呢? 这次要搭建一个可以自动跑完所有case并且打印每个case的pass信息到指定的文件中。从而减轻手动跑仿真,手动查看log信息的重复无效低质量的操作。下面简单记录下自己的思路并贴出自己的代码,方便自己以后使用和修正。 2 思路整理 作为一个IC d

起点中文网防止网页调试的代码展示

起点中文网对爬虫非常敏感。如图,想在页面启用调试后会显示“已在调试程序中暂停”。 选择停用断点并继续运行后会造成cpu占用率升高电脑卡顿。 经简单分析网站使用了js代码用于防止调试并在强制继续运行后造成电脑卡顿,代码如下: function A(A, B) {if (null != B && "undefined" != typeof Symbol && B[Symbol.hasInstan

php 7之PhpStorm + Nginx + Xdebug运行调试

操作环境: windows PHP 7.1.10 PhpStorm-2017.2.4 Xdebug 2.5.4 Xdebug helper 1.6.1 nginx-1.12.2 注意查看端口占用情况 netstat -ano //查看所以端口netstat -aon|findstr "80" //查看指定端口占用情况 比如80端口查询情况 TCP 0.0.0.0:8

文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《考虑燃料电池和电解槽虚拟惯量支撑的电力系统优化调度方法》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源程序擅长文章解读,论文与完整源程序,等方面的知识,电网论文源程序关注python