- 博客(7)
- 收藏
- 关注
原创 Linux ARM64硬件断点驱动实现及解析
硬件断点是cpu自带的用于调试程序的断点,分为执行断点和内存断点。比如ARM64架构,它有4个内存断点和6个执行断点。执行断点是最常见的断点类型,就是在某个程序地址处加断点,CPU运行到这里时就会触发,而内存断点是,在某个内存地址处加断点,当CPU访问这块内存时就会停下来。硬件断点与软件断点的不同之处也在于此,硬件断点可以使用内存断点,而软件断点无法实现内存断点。Linux内核里也自带硬件断点模块,只需要开启如下选项即可。Linux内核自带的硬件断点是跟很多业务捆绑的,开启硬件断点就要把这些业务都打开。
2023-08-19 21:36:53 2699 33
原创 KGDB原理分析及远程挂载调试ARM64内核
kgdb是内核提供的一种内核调试程序,kgdb将自身代码插入在内核中,编译后,与内核一起作为一个整体的程序运行。所以kgdb本身运行在内核空间,因此kgdb可以访问内核空间或者用户空间,获取相应的被调试程序的数据信息。在2.6.25以后的内核版本,kgdb已经被整合到内核中,是内核源码的一部分,要开启kgdb调试,只需要添加对应的kgdb配置选项即可。kgdb调试的连接通信过程和gdbserver类似,需要远程服务器的gdb配合。target和host之间通过串口或网络连接。
2023-08-15 14:56:50 759 2
原创 vscode+clangd远程服务器看linux内核源码,完美替换source insight
vscode+clangd远程服务器看linux内核源码,完美替换source insight。clangd编译,llvm编译,bear编译
2023-02-23 19:09:35 2615 4
原创 FileX+LevelX移植stm32f407
分享下之前移植ThreadX+FileX+LevelX移植到stm32f407+nandflash的经验板子的话,用的是我之前自己布板焊接的。我这里使用的是标准库移植的。先放上ThreadX官方的文档介绍,都是中文的很好懂。链接: Azure RTOS ThreadX 文档.通过上面那个链接可以进入到ThreadX全家桶的所有文档里移植前的准备工作首先要先移植ThreadX,移植完后,移植levelX,通过LevelX对接到FileX里。ThreadX移植这里移植ThreadX参考硬汉哥的
2021-08-27 00:33:06 3559 12
原创 用栈来实现深度优先搜索
栈栈是一种后入先出(LIFO)的数据结构。可以把栈想象成一个羽毛球桶,只有一个开口,最先放进去的羽毛球会在最里面,而最后放进去的羽毛球会在最外面。当我们拿出羽毛球时会先从最外面开始拿,也就是拿的最后放入的羽毛球。用栈来完成二叉树的三种遍历以下练习题均来自于leetcode二叉树的前序遍历思路:用数组来替代栈,首先是根节点入栈。从栈里面取出一个元素,用一个指针指向这个元素,只要这个元素不为空,就一直指向这个元素的左节点,路上挨个输出节点的字,碰到右节点不为空的时候就把右节点压入栈里。一直循环到栈里
2021-08-26 21:15:33 2045 1
原创 深度优先搜索
深度优先搜索我的理解深度优先搜索就是,前方有可选择的路,就一直往前走,知道没有路或只有走过的路为止再原路返回。一直返回到出现了未走过的路,再继续顺着这条路走下去,如此往复,一直走到终点为止。练习以下题目均来源于leetcode二叉树的最大深度思路:使用深度优先搜索,分别遍历左右子树,每往下一层,深度就+1,直到遇到NULL为止。/** * Definition for a binary tree node. * struct TreeNode { * int val; *
2021-08-25 22:11:36 124
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人