自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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

原创 DVR常见问题汇总

之前自己总结的思维导图,可以给大家作为参考:

2024-06-26 14:21:39 384 3

原创 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

原创 什么是GLINK

这是一种新的点对点链路层传输协议.主要用于SOC中各个IP核之间通信。

2024-01-10 15:59:37 7791 1

原创 在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

原创 高通座舱智驾芯片信息汇总

总结的比较全面:自动驾驶计算&域控平台-Qualcomm

2023-11-23 14:25:33 737

原创 SA8255 EVB antutu auto跑分

跑了两次:

2023-11-23 10:00:46 1541 2

原创 SA8255 Q+A android 登录QNX

需要工具busybox。

2023-11-22 19:24:28 901

原创 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 内核做了什么

参考这篇文章:写的很清晰。

2023-10-19 18:25:34 455

原创 STR android实现介绍

来源于:需要翻墙,如果翻不了的看下面这张图片:

2023-10-17 10:14:21 3942 2

原创 S2R 系统框架

S2R 整个系统框架,来源于文档:80-PG469-7 Rev. P。

2023-10-16 14:20:42 697

原创 高通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

原创 常见的座舱系统框架图

MCU侧

2023-07-20 18:02:44 1110

原创 8155/8255/8295参数对比

qualcomm 主流座舱芯片参数对比

2023-06-27 15:21:05 67602 4

原创 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

原创 SCREEN基本编程

screen基本编程介绍

2023-06-13 17:25:38 973

原创 SCREEN graphics.conf配置

介绍QNX screen graphic.conf配置

2023-06-13 17:24:45 1186

原创 QNX 7.0 SCREEN开发者手册

截止到2020年。

2023-06-13 15:54:40 645

linux kernel 5.9.2 内核源码

linux kernel 5.9.2 内核源码

2024-01-29

qemu-stable4.0源码包

qemu-stable4.0源码包

2024-01-29

源码============

源码============

2023-09-25

UB981寄存器手册,比较老的版本

UB981寄存器手册,比较老的版本

2023-07-31

远古版本983寄存器手册

远古版本的983寄存器手册,可能和最新的硬件有些出入,但是大体是一样的。 优点是有些已经不开放的寄存器描述这里可以找到,但是不保证适用最新的硬件

2023-07-31

QNX SDP 7.0 SCREEN开发者手册

QNX SDP 7.0 SCREEN开发者手册

2023-06-13

TI 941 bring up手册

TI 941 bring up手册

2023-04-10

TI FPD-LINK III 941 寄存器手册

TI FPD-LINK III 941 寄存器手册

2023-04-10

dlib-19.17.99-cp37-cp37m-win_amd64.whl.7z

python dlib python 3.7库,无需编译,下载之后直接安装即可 pip install $package dlib-19.17.99-cp37-cp37m-win_amd64.whl

2020-04-12

face_recognition-1.0.1.tar.gz.7z

face_recognition-1.0.1.tar.gz.7z 最新1.0.1版本 解压之后直接使用pip 安装即可 1、下载 face_recognition 1.0.1 2、解压压缩包,进入face_recognition目录,安装

2020-04-12

yuvplayer.7z

网上想找一个能用的yuv播放器太难了,翻箱底找出N年前下载的软件共享给大家。

2020-04-14

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除