- 博客(60)
- 资源 (3)
- 收藏
- 关注
原创 使用make savedefconfig 保存内核配置
2,通过menuconfig 修改配置,然后直接再用 make savedefconfig来保存新的配置文件。3,使用./scripts/config脚本简单修改。1,直接修改config文件,然后保存入库。
2025-11-03 10:47:59
143
原创 高通平台死机花屏问题分析记录
首先从问题的表现来看,应该是LA的内存空间被破坏了导致的系统panic,简单来说就是LA的内存出了问题,所以会导致随机性的panic,但是这种panic又和STR强相关,且与GPU/camera AIS强相关。4,在这个过程中,如果QNX和LA出现了同步问题,那么会导致QNX错误的往LA上已经释放的AIS的内存地址上存放数据,细节有点忘了,总之此时会出现LA内存被破坏的情况进而导致系统panic。进一步怀疑,在进入STR之前,系统是正常的,在进入STR时,或者在从STR恢复后,LA的内存遭到了破坏。
2025-10-22 14:15:01
382
原创 gdb调试记录
C++ 异常世界的“发射按钮”它把用户异常对象搬上堆,挂到全局链,然后调用unwinder完成栈回滚 + RAII 清理 + catch 匹配;所有 throw 最终都会走到这里。
2025-10-14 17:29:40
516
原创 gdb调试cat throw指令的作用
因为一旦异常传递到上层后再 crash,原始栈帧可能已经被展开销毁。“在任何 C++ 异常被抛出(throw)时中断程序执行。当前的调用栈(还没被 unwind);也就是说,程序一旦执行到。
2025-10-14 14:21:59
200
原创 nvidia Thor U与qualcomm 8295 DMPIS算力测试对比
Thor U总算力约为:35.8k*12核 约等于430k dmpis。测试参数:./dhrystone -l 100000 -t 12。测试参数:./dhrystone -t 8 -l 100000。sa8295总算力约为:250k左右。
2025-05-23 17:01:08
1054
原创 通过addr2line/GDB确定ko模块中的代码偏移
这个时候如果代码是built-in 那么可以看到具体的代码位置,但是当crash的位置在ko中时,则需要通过别的方式来确定crash的代码的位置。具体文件在:/sys/module/bstmac/sections/.text中。1.通过addr2line。2,通过gdb的方式。
2025-02-06 17:11:27
615
原创 QNX top是如何统计cpu使用率的
8,所有进程的cpu使用率总和一定等于user的使用率,如果你从top中计算出来的总和与user对不上,那说明有很多进程产生了微量的cpu使用率。2,top会进行2次采样,对其2次样之间的差值得到每个进程的增长量,同时也得到这段时间内总的cpu的计时器的增长量。3,总的cpu计时器=所有线程的计时器总和,同时也包含idle的计时器。1,top是通过PROC的接口从内核获取每个线程的cpu使用时间计数。
2024-10-24 15:24:25
1036
原创 dwceqos网络驱动性能优化
简单概括来说就是,在中断模式0(default)的情况下,只要检测到RX/TX的IOC标志位都会立即触发通用中断(sbd_intr_o),而在1/2模式下,则完全不触发sbd_intr_o中断,而只会触发sbd_perch_tx_intr_o[]或者sbd_perch_rx_intr_o[]从各方反馈的结果来看,测试结果似乎符合预期的?一般来说,cpu负荷过高通常有2个原因,一是,cpu现在的确一直在干活,那么优化的思路是优化cpu的工作内容,二是,cpu一直在被中断,反复的状态切换带来的高消耗。
2024-09-30 18:13:47
1533
原创 指针函数返回值被截断问题
这个函数会返回结构体指针,结构体的内存空间在函数内部申请。返回值在函数返回前是正常的,但是返回后内存地址被截断:比如地址0x5555556029d0,返回后地址被截断成0x556029d0,导致返回值为无效的内存地址,进而产生段错误。:在某些情况下,编译器可能未能正确传递函数的返回值。例如,当返回一个结构体指针时,可能存在一些编译器或调用约定相关的问题。进使用gdb进行调试,查看寄存器状态,发现的确是返回之后rax(保存返回值的寄存器)寄存器发生了改变。在正确声明函数定义之后,问题消除.
2024-08-05 15:39:29
504
原创 arm核的DMPIS是如何计算的
此数值和移远通信公布的100 KDMIPS算力有约12%的误差,但这其实是用ARM的方法计算了下三星的处理器。三星将ARM Cortex-A76内核优化后叫Kryo内核,还有硬件加速器等,猜想是三星对A76的性能优化已超50%性能提升,已到达ARM架构师Filippo(上面说的)所描述的50%-70%性能提升的中位数。2.419GHz * 1核 * 7.8 DMIPS/MHz + 2.131GHz * 3核 * 7.8 DMIPS/MHz + 1.785GHz * 4核 * 2.7 DMIPS/MHz。
2024-03-20 18:24:38
2383
原创 SA8255/8295上配置I2C bus(Q+A)
1,需要提前修改好tz.mbn/ devcfg_auto.mbn 并且刷写到目标板中这个至关重要,否则对应的GPIO无法配置成QUP3的功能2,确定原理图的I2C bus对应的GPIO是那一组。
2024-03-08 13:27:13
1551
原创 QEMU搭建arm虚拟机开发环境
使用git指令切换到对应的分支上,我这里使用的是stable-4.0的分支。然后执行make,视情况是否要执行make install。在工程的根目录下执行./configure。
2024-01-24 11:06:17
2174
原创 在qemu虚拟机环境下,使用kgdb调试kernel
这里使用的是arm64的gdb版本,而且已经export了其安装路径,如果你们有export则需要指定gdb的绝对路径,同样vmlinux镜像的位置也需要指定。从上面的截图可以看到,此时寄存器PC指向的是0x40000000 这个地址,可以理解为kernel启动的地址为0x40000000。2,在命令行中,输入target remote:1234 连接到kgdb server开始调试。1,使用指令aarch64-linux-gnu-gdb vmlinux,开始gdb调试。
2024-01-10 13:54:36
1029
原创 ctrl+c与kill -2的区别
在单进程的情况下,ctrl+c和kill -2是一模一样的,都是向指定的进程发送SIGINT信号.如果没有注册这个信号捕捉,当信号触发时,操作系统将会终止这个进程的运行.相关资源也会由系统回收.
2024-01-08 11:05:05
820
1
原创 在ubuntu上挂载QNX 镜像
1,将QNX imge转换成android sparse镜像使用python tools/mksparse.py $镜像文件 转换为android sparse镜像mksparse.py通常位于QNX 源码路径下的target目录中2,android sparse镜像转换为qnx6镜像,这个工具需要安装一下,通过apt-get就可以安装3, 通过loop设备挂载qnx6 镜像。
2023-12-29 16:18:49
1633
原创 Acronyms and terms (Qcom)
Acronym or term Definition ASIC Application specific integrated circuit BSP Board support package DAL Device abstraction layer DALTLMM DAL Top-level mode multiplexer DDI Device driver interface GPIO General purpose input/ou
2023-12-19 18:49:30
546
原创 diag_service的GLINK_IST是怎么来的
8155上集成了很多IP核,其中有不少的IP本质上是arm M核或者R核,这些模块在开发或者使用过程中也是需要监控和诊断的,但是他们并没有外部的调试接口,高通设计了整套诊断框架通过APSS(application processer subsystem)用来实现对这些IP核的诊断和监控。这套诊断框架支持从上位机PC的 QPST/QXDM软件对IP core的访问,也支持从APSS直接访问。我们想了解的是这几个线程是怎么来的,如何创建的。平台:SA8155,Q+A 1.2.1。
2023-12-13 13:14:57
959
原创 SA8255 Q+A QNX主要进程分析
基线:Snapdragon_Auto.HQX.4.5.6.0-00003.1-STD.PROD-1
2023-11-16 10:15:18
5502
6
原创 8255 boot介绍及bring up经验分享
下面这些信息来自文档:《QAM8255P IVI Boot and CoreBSP Architecture Technical Overview》 80-42847-11 Rev. AC,如果已经对这个文档比较熟悉可以跳过这个部分。
2023-11-10 10:33:14
3933
5
原创 高通STR/S2R基本介绍
Suspend to ram 是一种特殊的电源工作模式,在这种工作模式下,所有的CPU core/控制器/IP core都会进入特殊的电源模式下,同时SOC 内部总线时钟降到最低的工作频率,PMIC的绝大部分供电都会被关闭,外部DDR进入自刷新模式。系统可以通过外部的信号/中断经由AOP(always on processor) 切换回正常的电源模式.
2023-09-24 10:46:00
7348
原创 NPA日志查看方法
这个部分的日志是不会连入slog2info中的,所以无法通过slog2info的方式查看。可以通过直接查看这些文件的方式获取到NPA的日志。
2023-09-20 17:50:22
382
原创 android查看修改动态分区大小及使用量的方法
前面配置中我们看到动态分区由system vendor system_ext三个分区组成,所以我们需要关注这三个分区占用的总的大小是多少:4.8G+99M+451M/总的动态分区大小,这也可以算出来动态分区使用量。修改文件:device/qcom/msmnile_gvmq/BoardConfig.mk。BOARD_QTI_DYNAMIC_PARTITIONS_SIZE即为动态分区大小数值。1,需要先打开adb enable-verity。3,运行df 查看使用量。查看动态分区使用情况。
2023-09-06 14:55:10
2693
原创 qnx ais client app xml文件解释
display_id="1": 表明测试程序运行后camera图像要显示在那个屏幕上。nbufs="5", 表明display输出的buffer个数为5个。input_id: 对应哪一个camera。表明显示窗口的大小,位置。
2023-09-05 19:11:00
578
原创 AIS client的初始化过程
ais client 应用程序会调用qcarcam_initialize接口来初始化client,并建立与server端的连接:流程图:这个函数中会从全局数组变量sgs_ais_client中找到一个空的位置来初始化client,sgs_ais_client数组最大成员为64,也就是ais支持的client个数为64个:#define AIS_MAX_USR_CONTEXTS 64
2023-09-05 14:52:25
1317
1
原创 how to enable spi dma mode on 8155
【代码】how to enable spi dma mode on 8155。
2023-08-29 10:54:48
562
原创 hypervisor display显卡节点card0生成过程
我们知道android显示模块底层是由drm(Direct Rending Manger)提供的,drm驱动加载完成的一个标志是显卡设备节点生成:现在我们想探究一下,在QNX hypervisor下(高通基线1.2.1,内核版本5.4),android侧的这两个文件节点是如何生成的.要确定文件节点生成的过程就需要知道确切的驱动源码目录,所以第一步是先确定显卡的驱动目录。一般/dev/下的文件节点的名字都具有特殊性,通常由驱动模块源码或者驱动框架源码指定。这里我们先直接搜索card/render相关的字
2023-06-21 13:06:50
5552
原创 利用systrace中跟踪binder通信过程
从trace中可以看到,1546 InputReader线程通过binder向surfaceflinger(501)的线程发送了消息,请求requestNextVsync.systrace抓取到的trace日志中会记录android系统的很多通信过程,其中也包括了binder的通信细节。红框:现场名字及线程号,这里是截图所以没有体现出来,这个线程是system_server中的1102 1546 InputReader线程。点击绿色横条,可以看到这个thread是运行在CPU5上。
2023-06-16 13:59:51
1877
dlib-19.17.99-cp37-cp37m-win_amd64.whl.7z
2020-04-12
face_recognition-1.0.1.tar.gz.7z
2020-04-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅