树莓派4b linux内核调试(jtag、kgdb)

news2025/7/27 17:46:20

1、-O0编译树莓派4b linux内核(linux-5.10.95)

        内核源码分支:

https://github.com/raspberrypi/linux/tree/rpi-5.10.y

        参考其他网站,注释掉arch/arm64/include/asm/jump_label.h文件里面的内联汇编分支;

        修改arch/arm64/include/asm/memory.h里面的MIN_THREAD_SHIFT为"(15 + KASAN_THREAD_SHIFT)",因为-O0编译的函数局部变量不会被优化,局部变量使用栈内存,调用层次过深会导致内核栈越界,所以增加内核栈大小;

        将Makefile里面的CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE下面的KBUILD_CFLAGS修改为“KBUILD_CFLAGS += -O0”;

        关闭虚拟化,-O0下暂时没有调通虚拟化;

        其他编译错误能屏蔽的屏蔽,少数未定义函数是编译检查使用的,-O1及更高级别不存在这类非法的函数调用,可以写成空函数或者直接注释掉调用的地方,其他大部分未定义函数是别的未打开编译选项模块的函数,正常需要加编译开关,-O1及更改级别不会报错,是因为编译器检查到这部分函数不会被调用,直接优化掉了对应代码,-O0不优化就保留了这部分函数调用,所以-O0根据具体情况注释掉相关代码调用即可;

        如果默认没有打开生成调试信息,那么打开内核生成调试信息的开关。

2、jtag连接树莓派4b

        下图从别的网站拷贝过来,下图左上角标注了各脚的连接方法,例如TCK对应树莓派的GPIO25,冒号后边对应的是FT232H的引脚,也就是FT232H的D0连接树莓派的GPIO25,RTCK可以不接;对于其他jtag工具,其接法也是一样,如果连接有问题,那么可以尝试把jtag其他引脚也连接上;便宜的jlink V9也支持,jlink V9需要接地、参考电压引脚。

         按照网上方法修改tf卡的配置文件使能jtag!

3、openocd连接树莓派

        在连接树莓派前,先在cmdline.txt里面添加"rodata=off nosmp"参数,"rodata=off"的作用是使内核代码段可写,低版本内核通过内核配置项设置,高版本内核在命令行添加参数即可,nosmp是让内核以单核的方式运行,只运行一个核,其他核不跑内核,目前调试多核不是很完善,待验证调试,目前先以单核运行问题不大。

        树莓派4b配置文件:

https://github.com/openocd-org/openocd/blob/master/tcl/target/bcm2711.cfg

        ft232h配置文件:

interface ftdi
ftdi_vid_pid 0x0403 0x6014
ftdi_layout_init 0x0078 0x017b
adapter_khz 1000
ftdi_layout_signal nTRST -ndata 0x0010 -noe 0x0040
ftdi_layout_signal nSRST -ndata 0x0020 -noe 0x0040

        将配置文件合并到一个文件即可。

        开发板上电,在电脑上执行"openocd -f <openocd配置文件>"连接树莓派4b:

         (3333~3336为每个核的gdbserver监听端口,核0监听的端口为3333,nosmp参数使内核只运行在核0上面,所以gdb需要连接3333端口)

4、gdb连接树莓派4b

        openocd实现的功能与gdbserver一样,gdb连接3333端口即可连接开发板并调试;在gdb里面执行”target remote :3333“即可连接openocd的gdbserver,连接如下所示:

         查看调度器的tick调用栈:

        查看cpu寄存器:

         单步执行等调试命令与调试应用程序没什么区别,线程查看不一样,jtag看到的是核,一个核也就是一个线程。

4、kgdb调试

        ARM64 kgdb单步需要给内核打补丁,请参考网上的修改方法修改,然后编译的时候打开KGDB及KGDB串口选项,关闭KDB。

        kgdb调试多核问题不大,可以不用nosmp参数。

        使用串口作为输入输出以及kgdb调试串口,使用agent-proxy代理串口,具体使用方法参考网上其他文档。

        在开发板上设置调试串口:

echo ttyAMA0,115200 > /sys/module/kgdboc/parameters/kgdboc

        在开发板执行如下命令进入调试模式等待gdb连接:

echo g >/proc/sysrq-trigger

        过程如下:

        gdb连接开发板:

         其他操作与jtag调试一致,目前Ctrl+c不能暂停开发板,在开发板再次执行”echo g >/proc/sysrq-trigger“可以暂停,但是之前gdb设置的断点都没有了,jtag不存在此问题,另外与jtag不同的是,kgdb看到的是内核线程,kgdb是基于内核的,jtag是基于cpu的,jtag不感知linux的存在。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/16671.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大一学生Web课程设计 美食主题网页制作(HTML+CSS+JavaScript)

&#x1f380; 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

传奇开服教程——传奇微端架设教程-GEE引擎

登录器和网站配置好后&#xff0c;我们进入游戏后会发现是黑屏的&#xff0c;更新不了地图和NPC这些&#xff0c;因为还没有做微端&#xff0c;会黑屏也是正常的。 有些GEE版本有配套的微端程序&#xff0c;有些版本没有&#xff0c;需要自己去gee官网下载更新时间比引擎还靠后…

多层固定分组计算

【问题】 I want to build opening closing report – ITEM_TRANSACTION TABLE- Consider below data– 1.When item is prepared entry is made into table wih NULL indicator.. 2. When Item is issued/sold entry is made into table with ISSUE indicator Date Iname I…

[附源码]SSM计算机毕业设计中学学生学籍管理JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

笔试强训第29天

单选 A选项&#xff1a;当内存访问越界的时候&#xff0c;线程会收到信号&#xff0c;进而进行信号处理。调用信号处理函数。 B选项&#xff1a;ACM时间。 A&#xff1a;最后访问时间&#xff0c;文件被读取而更新的时间 C&#xff1a;状态修改时间&#xff0c;文件的属性或者权…

遨博机械臂URDF功能包ROS仿真

文章目录知识目标1.机械臂URDF功能包文件结构2.URDF模型中的元素和参数3.任务描述3.1 修订launch启动文件参数3.2 URDF功能包编译知识目标 学习机械臂URDF功能包文件结构 掌握机械臂URDF模型文件各元素和参数概念 1.机械臂URDF功能包文件结构 2.URDF模型中的元素和参数 机械…

【mmDetection框架解读】入门篇三、VOC数据集转COCO数据集,在MMDetection中成功运行

目录一、voc数据集转coco数据集二、修改配置二、验证数据集是否转换成功相关源码文件一、voc数据集转coco数据集 执行命令&#xff1a; python tools/dataset_converters/pascal_voc.py ../../../data/devkit ../../../data/coco通过VOC的xml文件生成COCO的json标签文件。 再…

Linux下延时一定时间,又不挂起程序。

0.前言 这是一个解决篇Linux C语言怎么实现通过socket发送一秒数据&#xff0c;上次想要实现做一秒的事情没有写出来&#xff0c;这次解决掉。先推荐一部电影《猩球崛起》三部曲。 1.Linux下的sleep函数。 这个函数的确可以起到延时的作用&#xff0c;但是他会把整个进程挂起&a…

CentOS8替代盘点

常用的替代选项 国外替代 Rocky Linux AlmaLinux Oracle Linux UEK内核 CentOS Stream 国产替代 Anolis OS TencentOS Server(桌面版无法迁移) openEuler OpenCloudOS 宝塔面板 推荐 Rocky/Alma/Oracle linux 8 持保守态度 Centos 8 Stream Anolis&#xff08;Centos 8 Stream…

L1和L2正则化的三种不同角度的理解

观看B站视频后写的笔记&#xff0c;链接 降低模型复杂度>正则化>减小模型参数个数 0. 前言 正则化是一个专有名词&#xff0c;和正则表达式中的正则没有任何关系。L1和L2正则化就是用L1范数和L2范数来规范模型参数的这么一种方法&#xff0c;Dropout也叫正则化&#x…

[附源码]SSM计算机毕业设计中小型便民药店管理论文JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Linux17 --- 消息队列

一、IPC进程间通信&#xff1a;消息队列 消息队列是在两个进程之间传递二进制块数据的一种简单有效的方式。每个数据块都有一个特定的类型&#xff0c;接收方可以根据类型来有选择地接收数据&#xff0c;而不一定像管道和命名管道那样必须以先进先出的方式接收数据。 Linux消…

BootStrap响应式项目实战之世界杯网页设计

BootStrap实战 目标 响应式布局复习 HTML5的复习 CSS3的复习 了解BootStrap 一.复习 响应式布局&#xff1a;页面可以随着设备的变化而动态改变。 ​ 淘宝&#xff1a;pc端一套页面&#xff1a;不能随着屏幕的缩小而变化&#xff1b; ​ 移动端&#xff1a;另外一套页面&am…

Java中的::

今天在练习SpringBoot的时候&#xff0c;看到了以下这种写法&#xff1a; //实体类&#xff1a; Data public class Book {private Integer id;private String type;private String name;private String description; }//测试类 //实现功能&#xff1a;关键字查询 Test void t…

PCB设计---深入浅出的反弹图

作者&#xff1a;一博科技高速先生成员 孙小兵 众所周知&#xff0c;信号的反射与互连线的阻抗密切相关&#xff0c;可以说互连线中阻抗突变是产生信号反射的最直接原因。但究竟为什么会发生反射&#xff0c;反射对信号的影响是什么样的&#xff0c;信号反射的过程又是如何呢&…

MySql死锁

MySql死锁产生的原因?[面试7.0] 高并发情况下,事务之间对资源的访问顺序交替会导致死锁 加锁失败且出现环时触发死锁 事务1事务2begin;select *from testlock where id1 for update;begin;select *from testlock where id2 for update;select *from testlock where id2 for…

安卓系统的启动

Init.rc启动 创建和挂在启动所需的文件目录初始化和启动属性服务解析init.rc配置文件并启动Ztgote进程 Zygote进程 创建一个Server端的Socket预加载类和资源启动SystemServer进程等待AMS请求创建新的应用程序进程 SystemServer进程 启动Binder线程池&#xff0c;这样就可以…

环保数采仪 VOCs|污染源|水质污染源|烟气排放在线监测

计讯物联环保数采仪&#xff0c;丰富接口&#xff0c;符合环保行业规约标准&#xff0c;具备采集、无线传输、控制、告警等功能&#xff0c;广泛应用于Vocs在线监测、水污染大气污染远程监测、烟气排放在线监控等场景&#xff0c;数据全方位多角度实时采集、自动上报、远程在线…

汽车倒车防碰撞报警系统的设计

目 录 1 绪论 1 1.1 背景 1 1.2 国外研究情况 1 1.3 超声波测距的优势 2 2 基本原理 3 2.1 超声波简介 3 2.2 超声波基本特性 4 2.3 超声波模块简介 5 2.4 超声波传感器原理 6 2.5 超声波的测距原理 6 3 总体方案 8 4 硬件实现 9 4.1 电路 9 4.1.1 主控制最小系统电路 10 4.1.…

面试24K字节测试开发岗被血虐,到底具有怎样的技术才算高级水平?

前几天我朋友跟我吐苦水&#xff0c;这波面试又把他打击到了&#xff0c;做了6年软件测试。。。 下面这条招聘是在腾讯招聘官网截图下来的&#xff0c;首先我们对高级水平下一个定义吧&#xff0c;那它应该是对标这个职级该有的能力 什么样的工程师才能算高级&#xff1f;至少…