首页
chatGPT
关于
友链
其它
统计
更多
壁纸
留言
Search
1
cgroup--(4)cgroup v1和cgroup v2的详细介绍
6,538 阅读
2
修改Linux Kernel defconfig的标准方法
6,453 阅读
3
Android系统之VINTF(1)manifests&compatibility matrices
6,057 阅读
4
使用git生成patch和应用patch
3,572 阅读
5
c语言的__attribute__
3,184 阅读
默认分类
文章收集
学习总结
算法
环境配置
知识点
入门系列
vim
shell
Git
Make
Android
Linux
Linux命令
内存管理
Linux驱动
Language
C++
C
Rust
工具
软件工具
Bug
COMPANY
登录
Search
标签搜索
Rust
shell
Linux
c
uboot
Vim
vintf
Linux驱动
Android
device_tree
git
DEBUG
arm64
链表
数据结构
IDR
内核
ELF
gcc
ARM
adtxl
累计撰写
380
篇文章
累计收到
16
条评论
首页
栏目
默认分类
文章收集
学习总结
算法
环境配置
知识点
入门系列
vim
shell
Git
Make
Android
Linux
Linux命令
内存管理
Linux驱动
Language
C++
C
Rust
工具
软件工具
Bug
COMPANY
页面
chatGPT
关于
友链
其它
统计
壁纸
留言
搜索到
380
篇与
的结果
2023-08-15
卡在Starting Kernel时如何查看kernel log
1. 简介Android的启动流程中,很多soc厂商在kernel启动前一阶段一般都是uboot。Starting kernel ...一般是默认情况下uboot能打印出的最后一行log.在这行log后面就是kernel的启动log.在开发过程中,我至少遇到两次印象深刻的问题,就是导致卡在Starting kernel...。由于没有kernel的log,导致很难继续debug。这里记录一种方法,可以在uboot中直接查看kernel启动时log的方法。当然,这个方法至少有两个前提:第一,就是kernel确实启动起来了,但可能因为有问题,又没完全启动到console初始化完成,导致无法在串口输出kernel log。因为打印starting kernel ...并不一定代表uboot是正常的,打印完这行log后uboot还是有些其它准备动作的,如何问题是出在uboot中,kernel并未完成启动,那自然也没办法查看kernel log了。第二,就是开发板必须有reset功能。也就是有reset按键,重启时ddr不断掉,数据不会丢失。因为卡在starting kernel后是没有办法再输命令的。只能按开发板中的reset回到uboot,或者有看门狗功能能自动重启。不过我也接触过一种开发板,可能是电源适配器的问题,虽然开发板上没有reset按键,但只要快速的开关电源,ddr上的数据也不会丢失。2.实操2.1 搞清楚kernel在ddr中的地址也就是kernel在ddr中运行的起始地址,我做的是android项目,从log中能直接看出来,如上所示,kernel在ddr中的的运行地址是0x04280000,需要记住这个物理地址。2.2 确定log_buf相对于kernel入口的偏移如下图,查看编译输出文件System.map。在文件中查找如下两个符号,然后再相减,ffff00000a5c9680-ffff000008080000=0x25496802.3 在uboot中使用md命令查看内存信息在上面已知了kernel实际的物理起始地址,以及log_buf相对于起始地址的偏移,因此很容易计算出log_bug在物理内存中的实际地址,即把两者相减即可,0x042800000+0x2549680=0x067c9680.然后在uboot中用md命令查看这段内存的数据,如下所示,通过不断的回车,可以一直显示完整的log内容,可以看下kernel中具体启动到哪里挂掉了,定位问题。
2023年08月15日
379 阅读
0 评论
3 点赞
2023-07-05
/proc/sysrq-trigger节点
暂无简介
2023年07月05日
323 阅读
0 评论
0 点赞
2023-06-26
ubuntu18配置VNC server实现远程桌面连接
转载自https://blog.csdn.net/hnhgwfm/article/details/128498485----试了下还是这个介绍的最简单有用,保存下方便查找本文介绍了在 Ubuntu 系统上安装和配置 VNC 服务器所需的步骤,并展示在windows端如何通过 SSH 隧道安全地连接到 VNC 服务器。本文测试环境Ubuntu版本18.04,其它版本也行。整个安装过程只需要两条命令,再简单配置一下就能搞定。ubuntu系统先连接好互联网第一条命令sudo apt install x11vnc第二条命令x11vnc -passwd gy666661 -display :0 -forever
2023年06月26日
387 阅读
0 评论
0 点赞
2023-06-26
gdb调试前端工具--ddd使用说明
1. 简介DDD全称Data Display Debugger,它是gdb的最优图形化前端,它继承了gdb的所有功能,它还加入了数据结构可视化能力,什么一维二维栈数组,二叉三叉N叉树,DDD统统都能用图形显示出来。2. 安装本文使用ubuntu18平台为例,直接apt 安装sudo apt install ddd然后运行,效果如下3. 使用作为图形化软件,使用逻辑与绝大部分软件逻辑相同,下面对其做个简单介绍,主要还是介绍如何使用ddd来运行抓取的ke数据。详细的使用可以多在实践中探索。1.使用ddd加载ke文件如下所示,–debugger指定了所使用的gdb,一般使用aosp源码中自带的即可。init.gdb文件为ke脚本解析出来的文件。2.ddd窗口介绍在运行上面的命令行,ddd的打开界面如下所示。会根据ke信息在源码窗口打开对应保存时src的位置。也可以在下方的gdb命令行窗口直接输入命令调试。3.show data在调试ke问题时,因为是离线调试,是无法run的,主要以查看信息为主。下面简单介绍下data目录中的一些功能。由于截图软件的问题,无法在Data菜单打开时截图,下面只能展示一些常用的功能。如下所示,是展示函数中的Args和一些本地变量查看memory信息,如下所示,可以查看某个地址范围中的信息4.show backtrace也就是bt命令,因为是图形化界面,可以点击backtrace窗口中的不同frame。可以结合show data信息。在点击不同的frame信息是,data中的信息也会随之变化。如下是显示寄存器信息。可以结合backtrace使用,查看不同frame下的寄存器信息4.问题记录1.ddd打开时hang主,状态栏提示opening session xxxx解决方案:参考ddd-hangs-on-start,删除本地的.ddd目录rm -rf ~/.ddd/2.打开时提示一些字体warning解决方案:参考ddd 启动警告解决安装了下面的包之后,重启后ddd的字体看起来更大了,看着舒服点sudo apt-get install xfonts-100dpi
2023年06月26日
534 阅读
0 评论
0 点赞
2023-06-26
[转载]怒啃 24 小时,终于搞懂上下文切换!
本文转载自https://heapdump.cn/article/4506550
2023年06月26日
429 阅读
0 评论
0 点赞
2023-06-12
Android平台使用kgdb在线调试内核
1. 简介本文介绍的Kgdb调试方法是一种源码级的Linux内核调试器。使用Kgdb调试内核时,需要结合gdb一起使用,使用他们可以对内核进行单步调试,设置断点,观察变量、寄存器的值等。本文仅简单介绍使用串口的Kgbd的流程(kgdboc方式),除此之外还网卡方式即kdgboe方式,不做介绍。2. 步骤2.1 cmdline 传参修改uboot中的bootargs,增加如下console=ttyS0,115200 kgdboc=ttyS0,115200"2.2 kernel kgdboc config打开CONFIG_KGDB=y CONFIG_KGDB_KDB=y2.3 关闭wdt如果板子有打开wdt,需要关闭wdt3. kgdboc host端调试安装agent-proxy 虚拟串口,能够同时吐出log$ git clone http://git.kernel.org/pub/scm/utils/kernel/kgdb/agent-proxy.git $ cd path_to_agent-proxy_Dir $ make绑定串口,启动aget-proxy$ sudo ./agent-proxy 2223^2222 localhost /dev/ttyUSB0,115200 &连接到板子$ telnet localhost 2223 配置KGDBoC# echo ttyS0 > /sys/module/kgdboc/parameters/kgdboc进入kdb 模式# echo g > /proc/sysrq-trigger进入kgdb模式kdb> kgdbhost端另开一个窗口,进行如下操作:$ /opt/gcc-linaro-aarch64-linux-gnu-4.9-2014.09_linux/bin/aarch64-linux-gnu-gdb vmlinux进入gdb(gdb) target remote localhost:2222即可进入kgdb调试了reference linkhttps://docs.windriver.com/bundle/Wind_River_Linux_Tutorial_Kernel_Debugging_with_GDB_and_KGDB_LTS_1/page/hvd1552585247474.htmlhttps://blog.csdn.net/tinylab/article/details/45330771
2023年06月12日
579 阅读
0 评论
0 点赞
2023-05-24
使用gdb离线调试Android coredump文件记录
使用gdb离线调试Android coredump文件步骤1.aosp源码目录执行:./prebuilts/gdb/linux-x86/bin/gdbor 使用本机机器上的gdbgdb-multiarch2.进入gdb后设置symbols路径set solib-absolute-prefix xxx/symbols3.设置在symbols目录中药调试的文件,如果是app,可以选择app_processfile xxx/symbols/system/bin/app_process324.加载coredump文件core-file xxx/COREDUMP问题记录问题1:在ubuntu18上安装gdb在ubuntu上安装gdb-multiarch时,遇到下面的报错,也就是无法访问下面这个网站。从网上找了两个个方案:方案一就是把下面这个网站替换成一个国内的源方案二可以直接把这个源给注释掉由于是在公司内部,换源也是无法访问的,所以这里直接注释掉。修改/etc/apt/sources.list.d/目录里的文件,把有这个源的都注释掉。错误:67 http://ppa.launchpad.net/fcitx-team/nightly/ubuntu bionic InRelease 无法发起与 ppa.launchpad.net:80 (2620:2d:4000:1::3e) 的连接 - connect (101: 网络不可达) 无法连接上 ppa.launchpad.net:80 (185.125.190.52),连接超时 错误:68 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu bionic InRelease 无法发起与 ppa.launchpad.net:80 (2620:2d:4000:1::3e) 的连接 - connect (101: 网络不可达) 已下载 44.7 MB,耗时 30秒 (1,474 kB/s) 正在读取软件包列表... 完成问题2:使用aarch64版本的gdb提示 don't know how to handle section `.relr.dyn' [0x 13]?目标平台cpu是arm64的,编译的Android image是arm32,按照道理应该是使用arm版本的gdb调试。不过实际使用开发机gcc-6.3.1-2017这个版本里的gdb调试时,确有问题,bt也无法获取trace信息使用Android自带的这个x86版本的gdb竟然可以,也是不知道为啥。。。。。。./prebuilts/gdb/linux-x86/bin/gdb
2023年05月24日
822 阅读
0 评论
0 点赞
2023-05-11
git问题记录--非常规问题
记录一些不是经常遇到的问题
2023年05月11日
455 阅读
0 评论
0 点赞
2023-04-27
Linux中的preempt_count
转载自https://zhuanlan.zhihu.com/p/88883239 作者:兰新宇
2023年04月27日
544 阅读
0 评论
0 点赞
2023-04-27
ARM的中断处理[二]
转载在https://zhuanlan.zhihu.com/p/90074320 作者:兰新宇
2023年04月27日
443 阅读
0 评论
0 点赞
1
...
6
7
8
...
38