全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 处理器/DSP >

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

时间:2023-08-08 11:11

人气:

作者:admin

标签: 虚拟机 

导读:CodeViser是JD Tech公司开发的一款JTAG仿真器,支持ARM和RISC-V等CPU 核。配套的CVD调试软件提供高效稳定的调试环境,支持源码级调试和强有力的脚本命令。...

CodeViser是J&D Tech公司开发的一款JTAG仿真器,支持ARMRISC-VCPU 核。配套的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环境中。

41f60ffa-3598-11ee-9e74-dac502259ad0.png

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

42296468-3598-11ee-9e74-dac502259ad0.png

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

4256b198-3598-11ee-9e74-dac502259ad0.png

4275cce0-3598-11ee-9e74-dac502259ad0.png

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

42a8b7ea-3598-11ee-9e74-dac502259ad0.png

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

42c6d72a-3598-11ee-9e74-dac502259ad0.png

42dfff84-3598-11ee-9e74-dac502259ad0.png

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

4316053e-3598-11ee-9e74-dac502259ad0.png

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

4330ea3e-3598-11ee-9e74-dac502259ad0.png

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

435b1d0e-3598-11ee-9e74-dac502259ad0.png

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

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

4381e9f2-3598-11ee-9e74-dac502259ad0.png

05

多核调试

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

43acce38-3598-11ee-9e74-dac502259ad0.png

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

43cc3c6e-3598-11ee-9e74-dac502259ad0.png

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

43f2f930-3598-11ee-9e74-dac502259ad0.png

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

44217530-3598-11ee-9e74-dac502259ad0.png

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

446b50b0-3598-11ee-9e74-dac502259ad0.png

单步调试后,就跳到下图

44a21050-3598-11ee-9e74-dac502259ad0.png

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

43f2f930-3598-11ee-9e74-dac502259ad0.png

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

44fbf070-3598-11ee-9e74-dac502259ad0.png

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





审核编辑:刘清

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信