CrossCore Embedded Studio——Debug on a Hardware Target(七)

记录一下,方便以后翻阅~

本章将介绍如何在CrossCore Embedded Studio(CCES)IDE中,调式硬件终端Hardware Target的整个流程。

1)Debug Quick Start

1.1 创建和启动一个Debug Configuration

首先创建一个调试配置
单击菜单栏里的Run——>Debug As——>Application with CrossCore Debugger,
在这里插入图片描述
弹出Debug Configurations窗口时,还会弹出任务向导界面,先完成任务向导界面的设置:选择处理器型号(这里选项SC589),单击Next,
在这里插入图片描述
选择Emulator连接,如果自定义目标平台有多个CPU或JTAG扫描路径,单击Configurator…进行配置(这里暂不用操作),单击Next,
在这里插入图片描述
选择ADSP-SC589 via ICE-1000连接方式,单击Finish。
在这里插入图片描述
回到Debug Configurations窗口,该向导选择了配置的名称,若要改名称,在Name栏里改名。该向导还确定是否有双核应用软件,然后将dxe文件和各自的核进行映射。如果要手动编辑程序在特定的核上加载,或要手动编辑任何加载选项,可选项目标核的有关项,单击edit,在这里插入图片描述
然后浏览到合适的项目,选择合适的dxe文件。如要调式启动代码,要编辑与加载程序有关的选项,例如禁用run immediately after load 选项。
在这里插入图片描述
大部分设置在session选项卡中进行,其它有关的选项卡有自动断点选项卡,
在这里插入图片描述
对于自定义目标可能会用到的一个选项卡是Custom board support选项卡,调式硬件目标时,要使能定制,定制板支持文件会为几个寄存器提供复位值,通常这些复位值与外部内存控制器有关。
在这里插入图片描述
Multiprocessor Group选项卡可将内核分组,除非需要在来源和公共选项卡下进行更改,否则很少用到。
在这里插入图片描述
单击Apply保存配置,关闭窗口。

然后启动调式任务

单击菜单里的RUN——>Debug启动调试,此时会生成项目,所有修改过的项目会出现空白构建,可以更改此默认操作,选择首选项、运行/调试、启动之后,在启动Windows下拉菜单选项之前,取消选择构建。启动调试任务时会切换到调试透视图,该透视图包含了支持应用程序调式的视图,然后建立与目标的连接,把程序加载到两个内核。由于配置的加载设置,如加载后立即运行程序,所以两个内核会启动。
在这里插入图片描述

默认情况,调式透视图有这么几个视图

1)调试视图显示了加载的可执行文件,程序在运行还是挂起,视图中还有许多工具栏图标可控制执行过程。
调试视图提供了在终端上执行代码的大量控件,Resume图标可启动执行,Suspend可暂定执行,step运行执行一行源代码,包括step into、step over和step return,Assembly step类似step,区别是执行一行汇编代码。step return后面四个图标支持多处理器调试,可以配置或设定多处理器组,默认情况,两个内核都是多处理器组的一部分,包括MP Resume,MP Suspend,MP step into。reset会复位选定的内核,restart会重新载入上一个应用程序,terminate会终止启动。本例程中,调式视图显示core0在断点处挂起,而core1在运行。
在这里插入图片描述
在双核应用程序中,core1启动代码中的循环会检查来自core0的信号并启用它,执行时可跳过core0的前几行代码,会看到执行core1启动函数:

adi_core_enable(ADI_CORE_SHARC0);

之后,core1会自动断点切换到主程序的某项,并进入挂起状态。
在这里插入图片描述
2)变量视图显示运行时所调用函数的入口参数变量和返回变量(个人理解)
如果从一个函数切换到另一个函数,那么变量视图里的变量会发生改变。同时还能在变量视图中看到调用的堆栈,调用某个函数会创建新的堆栈帧,最上边的帧用于当前函数,选择不同的堆栈帧时,还能看到源窗口跳到选定堆栈帧的函数。
在这里插入图片描述
通过单击pin to debug context图标,能把大多数调试视图与某个内核关联,按下后可以看到(下图)变量视图与Core0关联。
在这里插入图片描述
这时可以打开第二个变量视图,选择调式视图的Core1,并关联起来。这样可以切换合适的视图,观察对应内核的变量。
在这里插入图片描述
3)断点视图显示了系统中用户定义的断点。 可以取消复选框,禁用该断点。
在这里插入图片描述
4)其他调试视图可以在菜单栏里window——>show view里找到。
这里介绍一个常用的视图,单击Window——>show view——>Expressions,这个视图可以查看某个核里的全局变量(如下图中,我在core0里放了一个int aaa的全局变量),同时也可以查看该变量的地址(在变量前加&即可),还可以查看内存位置的内容,在寄存器前面加$,还可以检查寄存器。同样我们也可以将expressions与某个核关联。
![![在这里插入图片描述](https://img-blog.csdnimg.cn/20210402114450779.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_50,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0xlaXN1cmVfa3Nq,size_16,color_A8A8A8,t_70#pic_center =500x200)
检查内存时,另一个有用的视图是内存浏览器视图,单击Window——>show view——>Memory Browser,在地址行中输入要检查内存地址的数字,或者要查看变量的符号名,还可以选择浏览功能,选择要检查的符号。
在这里插入图片描述
内存浏览器还允许用常量或数据文件的内容来填充内存,数据文件格式可以指定。
在这里插入图片描述
还可以将内存部分内容存储到一个文件,可以是文本格式或二进制格式,输入地址、说明和步长,手动指定内存区域。此外浏览器选择某个符号,会返回实体的正确大小。在这里插入图片描述
同样我们也可以将内存浏览器视图与某个核关联。
在这里插入图片描述
数据缓冲可以可以在内存浏览器中显示为由数字组成的表格,有时以图形方式查看数据,会提供更多有用信息。
在这里插入图片描述

2)低层次调试

调试应用程序时,有时想要进入靠近CPU本身的底层应用程序,包括遍历汇编代码或检查寄存器。

2.1 反汇编视图Disassembly

在已经调试汇编文件时反汇编视图会自动出现,如程序运行完毕后,会看到反汇编视图弹出,并停在lib_prog_term。此处有一个自动断点,一旦程序执行到应用程序的末端就挂起。
在这里插入图片描述
若重新载入时,程序会停在adi_initComponents,在源文件和反汇编视图中都能看到该调用,右击空白区选择show line numbers,可现实行号。
在这里插入图片描述
在这里插入图片描述

2.2 寄存器浏览器视图 Registers Browser

在这里插入图片描述
在寄存器浏览器视图中单击New Tab,弹出可选的寄存器表,可选择指针、数据或调试等内核寄存器,以及DMA、外设、中断控制等系统寄存器。
在这里插入图片描述

2.3 追踪视图 Trace

低层次调试中,追踪视图也很有用。该视图允许查看过去执行的代码。单击Window——>Show View——>Trace打开,该页面显示不支持调式终端(我用的是SC589和ICE1000仿真器),所以暂时不多研究了。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天亮继续睡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值