NXP

[SylixOS & iMXRT1050][6] 仿真调试

2019-07-12 12:01发布

  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:ACOINFORealEvocompilerarm-sylixoslitele-toolchainin 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源码处停止