使用CodeViser调试RK3399处理器和Linux kernel指导(第二部分)

描述

CodeViser是J&D Tech公司开发的一款JTAG仿真器,支持ARM和RISC-V等CPU 核。配套的CVD调试软件提供高效稳定的调试环境,支持源码级调试和强有力的脚本命令。本文讨论使用CodeViser 调试瑞芯微公司RK3399 多核芯片的过程,开发板使用华清FS3399 开发板。

RK3399的CPU采用big.LITTLE大小核架构,双Cortex-A72大核+四Cortex-A53小核结构,对整数、浮点、内存等作了大幅优化,在整体性能、功耗及核心面积三个方面都具革命性提升。

04

Liunx Kernel 调试

1、按照华清FS3399的使用手册指导, 建立linux系统的虚拟机,按照第三章 Linux 系统编译中的说明,获取系统的所有源代码,在虚拟机中编译全系统所有代码,或者单独编译linux kernel,编译完成,将其打包拷贝到装有CVD64软件的机器上,并按照原始编译路径建立目录(例如:作者的路径为C:homelinux k3399_linux_sdk_v2.0),将linux kernel 源代码解压到所建立的目录中备用。

2、用串口如前所述,启动板子上的系统,按CTRL+C让其停在uboot环境中。

JTAG

3、启动CVD64软件,进入Config->Interface中,在System选项卡中,点按UP命令,连上板子,进入Debug模式。

JTAG

4、用Program->Load命令加载C:homelinux k3399_linux_sdk_v2.0kernelvmlinux,注意:选择 No-code。

JTAG

JTAG

开始加载源代码,由于源代码较多,加载需要一段时间。可以选择No-code,不下载板子上的代码。

JTAG

5、点按工具条上的黄箭头显示源代码,

JTAG

JTAG

6、从菜单Symbol -> Symbol by Name -> Symbol 或点按工具条黄箭头右侧的一个图标,打开Symbol Browse View视图如下图:

JTAG

7、在Symbol Browse View视图中输入:start_kernel, 然后,回车,就可以显示Debug List View,我们可以看到显示如下:我们在包含start_kernel这行设置一个断点,

JTAG

8、然后, 按当前窗口的Go命令,或按工具条上的Go 按钮,最后我们进入串口窗口,输入:run bootcmd 回车。

JTAG

这时,我们在串口窗口中可以看到,程序停在 Starting kernel ...的地方,这时我们就可以调试linux kernel的程序了。

9、这时我们可以在start_kernel 下面的语句设置断点,如下图:我们按两次本窗口上的Go命令,程序就停在了518行上了。

JTAG

05

多核调试

多核调试需要在多核启动以后才能调试,以下我们演示SMP 调试。我们就需要在多核启动完成后的smp_cpus_done函数处设置一个断点,选择System Browser View 视图,输入smp_cpus_done, 回车,

JTAG

将会在Debug List View视图中,弹出smp_cpus_done函数,在此处设置一个断点。

JTAG

在上面调试linux Kernel时,停在start_kernel以后,再点击图上工具栏上的运行按钮或或调试视图中Go按钮,继续运行, 程序就会停在smp_cpus_done函数处,

JTAG

这时我们看串口中断信息;

JTAG

这时我们双击下面工具条上的core选择core1,这时下面工具条上已经显示的是core1了,说明Debug List View中已经是core1的程序了。

JTAG

单步调试后,就跳到下图

JTAG

这时我们返回core0,继续调试一些步骤,我们可以自动进入core4调试程序,

JTAG

到第860多行以后程序自动进入了core4,我们可以看下图的下面的工具条上这时显示的是core4,

JTAG

以上就是对称多处理调试,也就是SMP调试简单的说明。CodeViser 也支持 AMP 调试,有机会在其他芯片平台上我们再作详细说明。





审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分