- 博客(54)
- 资源 (3)
- 收藏
- 关注
原创 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 236
原创 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 935
原创 指针函数返回值被截断问题
这个函数会返回结构体指针,结构体的内存空间在函数内部申请。返回值在函数返回前是正常的,但是返回后内存地址被截断:比如地址0x5555556029d0,返回后地址被截断成0x556029d0,导致返回值为无效的内存地址,进而产生段错误。:在某些情况下,编译器可能未能正确传递函数的返回值。例如,当返回一个结构体指针时,可能存在一些编译器或调用约定相关的问题。进使用gdb进行调试,查看寄存器状态,发现的确是返回之后rax(保存返回值的寄存器)寄存器发生了改变。在正确声明函数定义之后,问题消除.
2024-08-05 15:39:29 232
原创 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 1413
原创 SA8255/8295上配置I2C bus(Q+A)
1,需要提前修改好tz.mbn/ devcfg_auto.mbn 并且刷写到目标板中这个至关重要,否则对应的GPIO无法配置成QUP3的功能2,确定原理图的I2C bus对应的GPIO是那一组。
2024-03-08 13:27:13 769
原创 QEMU搭建arm虚拟机开发环境
使用git指令切换到对应的分支上,我这里使用的是stable-4.0的分支。然后执行make,视情况是否要执行make install。在工程的根目录下执行./configure。
2024-01-24 11:06:17 1346
原创 在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 669
原创 ctrl+c与kill -2的区别
在单进程的情况下,ctrl+c和kill -2是一模一样的,都是向指定的进程发送SIGINT信号.如果没有注册这个信号捕捉,当信号触发时,操作系统将会终止这个进程的运行.相关资源也会由系统回收.
2024-01-08 11:05:05 609 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 1042
原创 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 455
原创 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 685
原创 SA8255 Q+A QNX主要进程分析
基线:Snapdragon_Auto.HQX.4.5.6.0-00003.1-STD.PROD-1
2023-11-16 10:15:18 3177 5
原创 8255 boot介绍及bring up经验分享
下面这些信息来自文档:《QAM8255P IVI Boot and CoreBSP Architecture Technical Overview》 80-42847-11 Rev. AC,如果已经对这个文档比较熟悉可以跳过这个部分。
2023-11-10 10:33:14 1842 5
原创 高通STR/S2R基本介绍
Suspend to ram 是一种特殊的电源工作模式,在这种工作模式下,所有的CPU core/控制器/IP core都会进入特殊的电源模式下,同时SOC 内部总线时钟降到最低的工作频率,PMIC的绝大部分供电都会被关闭,外部DDR进入自刷新模式。系统可以通过外部的信号/中断经由AOP(always on processor) 切换回正常的电源模式.
2023-09-24 10:46:00 4152
原创 NPA日志查看方法
这个部分的日志是不会连入slog2info中的,所以无法通过slog2info的方式查看。可以通过直接查看这些文件的方式获取到NPA的日志。
2023-09-20 17:50:22 202
原创 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 1707
原创 qnx ais client app xml文件解释
display_id="1": 表明测试程序运行后camera图像要显示在那个屏幕上。nbufs="5", 表明display输出的buffer个数为5个。input_id: 对应哪一个camera。表明显示窗口的大小,位置。
2023-09-05 19:11:00 369
原创 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 833 1
原创 how to enable spi dma mode on 8155
【代码】how to enable spi dma mode on 8155。
2023-08-29 10:54:48 321
原创 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 3487
原创 利用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 1072
原创 Implement secure boot on H3/M3
Secure boot is a secure mechanism/feature to protect system only allow CPU boot from complete and authorized binary images.With this function, when System is booted, Boot ROM Program verifies whether IPL (initial program loader) binary image has not been t
2023-05-30 10:10:12 302
原创 systrace抓取超过10s trace文件
这个case会设置trace buffer到比较大的size,但是同时也限定了抓取的时间为10s。默认使用systrace.py -t 10 参数抓取到的trace文件,实际抓到的时间只有4s。如果想抓取超过4s的trace文件,需要设置systrace trace buffer大小。
2023-05-22 17:50:33 294
原创 高通hypervisor display框架解析
下面这张图是高通文档上能看到的对于高通hypervisor的display显示框架,但是关于QNX和LA侧是如何交互的,好像没有找到相关的文档介绍。正好最近遇到了一些和display相关的问题,趁着这个档口稍微研究了下QNX和LA侧两边是怎么交互的。
2023-05-18 14:51:36 4997 2
原创 DSI连续时钟和非连续时钟引发的DS90UB941低温(-40℃)黑屏分享
当前系统为了满足实现一机多屏的需求,比较常见的使用了superframe/split mode这种方式来实现分屏。大致原理如下,SOC侧输出一幅较大的图像画面(superframe),然后在941侧进行切分为左右两个画面,分别通过port0(DOUT0)、port1(DOUT1)经FPD-Link III发送到解串器上(948 Des)达到实现分屏目的.汽车行业中对于设备元器件的温度范围要求是-40°~120°,在这个温度区间内能正常工作的元器件可以称为符合车规级要求的元器件。
2023-05-10 19:12:18 1270 1
face_recognition-1.0.1.tar.gz.7z
2020-04-12
dlib-19.17.99-cp37-cp37m-win_amd64.whl.7z
2020-04-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人