- 博客(27)
- 资源 (10)
- 收藏
- 关注
原创 mmap引起的内存泄漏分析
根据客户提供的/proc/meminfo数据发现,MemAvailable 由294072kB减小至18128kB,减小约269MB,引起该变化的最直接原因是PageTables由61416KB增加到了334460kB,增加约266MB。同时观察Aon和Slab的变化,均未出现明显的增加,由此可判定,内存单纯的消耗在了PageTables项了。为进一步分析,让客户提供了/proc/vmallocinfo信息,发现ioremap的次数并不多,所以推测可能是用户态做了重复的mmap映射,并让客户自查代码。
2024-06-14 14:05:45 330
原创 linux container_of宏
通过Student stu定义stu变量后,我们可以通过stu.id或stu.name来获取stu的成员。但如果想反过来,通过stu.id或者stu.name来获取stu的起始地址好像就没那么简单了,linux中的container_of宏的作用就是为解决此问题而生的。idPtr实际就是stu变量的地址,namePtr对应的是stu.name地址,mathPtr对应的是stu.math地址。ptr: 第三个参数member的地址,这里可以理解为&stu.id或&stu.name;
2024-05-08 21:55:12 405
原创 linux fixmap分析
Linux内核启动过程中,经过汇编阶段后,mmu功能已经开启,后续只能通过虚拟地址来访问DDR,但是此时能够访问的地址范围有限,只有idmap和swapper部分可以找到物理地址,其他没有通过MMU映射的虚拟地址是无法访问的。fixmap就是为了解决在正式建立所有物理内存映射之前,实现early console、FDT映射、early ioreamp、paging init等过程中使用虚拟地址问题的。
2024-04-08 10:44:04 273
原创 linux启动之__lookup_processor_type
_lookup_processor_type_data描述了__proc_info的信息:1. __lookup_processor_type_data地址;2. __proc_info_begin地址;3. __proc_info_end地址;4. __lookup_processor_type_data的大小;/** Note!* NOTE!*/
2024-03-29 20:03:11 790
原创 Linux启动之__mmap_switched
总结下来,主要干了两件事情:1. 清除.bss2. 保存process ID/Machine type/DTB地址。
2024-03-28 20:50:45 141
原创 gdb 定位coredump中so库的位置
libddd.c#include <stdio.h>#include <string.h>int fun_dll(){ void *pTmp = NULL; printf("In dll\n"); memcpy(pTmp, 0, sizeof(100)); return 1;}gdbso.c#include <dlfcn.h> #include <stdio.h>typedef int (*LPFun) (
2022-03-12 12:12:25 4663
原创 Linux pstore实现自动“抓捕”内核崩溃日志
说明:本文基于内核:linux-4.19.125概述最近因工作关系,启用了linux的pstore功能。pstore的主要功能是存储linux内核崩溃前的内核日志,具体可参考内核文档介绍:linux-4.19.125\Documentation\admin-guide\ramoops.rst也可以参考宋宝华老师的博客:Linux pstore 实现自动“抓捕”内核崩溃日志_宋宝华-CSDN博客在原理方面,宋宝华老师写的非常详细。我这里仅记录我的操作总结。总体来说,分为4步
2021-10-22 17:02:32 6373 5
原创 在glibc中添加自定义so
需求在glibc中添加一个mytest so文件1. 创建mytest文件夹~/projects/tstglib/glibc-2.25$ mkdir mytest2. 修改Makefile~/projects/tstglib/glibc-2.25$ vi Makeconfig2.1 确保生成libmytest.so# List of non-library modules that we build.built-modules = iconvprogs iconvdata l..
2021-09-17 16:16:12 347
转载 Linux Hung Task分析
Linux Hung Task分析来源:Linux Hung Task分析本文章向大家介绍Linux Hung Task分析,主要包括Linux Hung Task分析使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。经常会遇到内核打印“INFO: task xxx:xxx blocked for more than 120 seconds.”这样的log信息,这是内核的hung task机制在起作用。hung task机制通过内核线程khungt
2021-09-14 15:25:29 1067
原创 编译busybox
本文基于:busybox-1.32.0交叉编译器:arm-linux-gnueabi-下载busybox-1.32.0后解压:tar xjvf busybox-1.32.0.tar.bz2选择[*] Build static binary (no shared libs)保存退出,生成.config文件。编译# make CROSS_COMPILE=arm-linux-gnueabi-# make install CROSS_COMPILE=arm-linux.
2021-09-10 19:50:28 231
原创 busybox添加自定义applet
本文基于:busybox-1.32.0添加自定义applet的说明请参考busybox源码下的 docs/new_applet-HOWTO.txt 文档步骤:(1) 、在适当的目录编写 applet 代码#~/projects/busybox-1.32.0$ mkdir myapplet#~/projects/busybox-1.32.0$ cd myapplet#~/projects/busybox-1.32.0/myapplet$ vi myapp.cmyapp.c#inc
2021-09-10 19:36:17 401
原创 Linux kernel模块(.ko)实现unix domain socket通信(server)
Linux kernel模块(.ko)实现unix domain socket通信(server)ko server代码:srv.c#include <linux/module.h>#include <linux/kernel.h>#include <linux/init.h>#include <linux/socket.h>#include <linux/net.h>#include <linux/un.h>
2021-09-08 16:09:55 845
转载 [转]ARM MOV指令对立即数的要求
MOV R1,#9 以上指令表示把9传送到寄存器R1中。需要注意的是,这里的立即数是有要求的,不是说任何一个立即数都可以。要求是:立即数可以由一个8位的常数循环右移偶数位得到。其中循环右移的位数由一个4位二进制的两倍表示。如果立即数记作immediate,8位常数记作immed_8,4位的循环右移值记作rotate_imm,则immediate=immed_8循环右移(2*rotate_imm)所以,MOV r0, #0xFF, 2这里2是循环右移数,必须...
2021-05-08 07:47:48 1431
原创 RT-Thread MDK开发环境搭建
1. MDK安装MDK下载路径:https://www.keil.com/download/product/注意:安装路径不能有空格否则会安装失败。安装成功2.Keil MDK模拟器STM32F103下载地址:https://www.rt-thread.org/document/site/tutorial/quick-start/stm32f103-simulator/rtthread_simulator_v0.1.0.7z然后等待导入结束3. 下..
2021-05-02 10:50:23 2628
原创 标准及论文获取方法
标准及论文是工程师进行研发及创新的重要依据。标准可以分为国际标准、国家标准、行业标准、地方标准或团体标准等不同的层级,论文也包括会议论文及期刊论文等不同类型。1 国际标准国际标准是指国际标准化组织(ISO)、国际电工委员会(IEC)和国际电信联盟(ITU)制定的标准,以及国际标准化组织确认并公布的其他国际组织制定的标准。比如我们熟悉的3GPP制定的LTE-Advanced标准,经过ITU评估认证为IMT-Advanced后,才正式确认为国际认可的4G标准,在全世界范围内通用。1.1 ITU国
2021-04-30 10:48:10 704
原创 arm 将全局变量指定到固定地址
1. 定义全局变量sensorhub_dynamic_table#pragma arm section rwdata="sensorhub_extern_call"volatile xxx_t sensorhub_dynamic_table = { copy_fun_ptr, i2c_rd, i2c_wr, ...};#pragma arm section rwdata关于#pragma arm section的使用可以参考《#pragma arm sec...
2021-04-30 10:44:29 2048
原创 Crash 工具使用
1. cat sysdump.core* > vmcore2. crash -m phys_base=0x80000000 vmlinux vmcore crash -m phys_base=0x80000000 --cpus=2 --no_data_debug sysdump vmlinux crash64 -m phys_offset=0x80000000 --no_data_debug sysdump.core symbols/vmlinux3. crash常用命令: .
2021-04-19 10:06:08 1086
原创 Python获取行号/函数名/文件名
实现:import inspectget_line = lambda :inspect.getframeinfo(inspect.stack()[1][0]).linenoget_file = inspect.__file__get_func = lambda :inspect.getframeinfo(inspect.stack()[1][0]).function调用get_line()测试#encoding=utf-8import inspectget_line =
2021-03-05 18:23:55 1004
原创 百度AI 文字识别示例
百度AI 文字识别示例#encoding=utf-8from aip import AipOcr""" 你的 APPID AK SK """APP_ID = '你的app id'API_KEY = '你的api key'SECRET_KEY = 'CkuOy82dFdkg50bsIivmz4jRdf1xCXZ0'img_file="C:\\1.jpg"client = AipOcr(APP_ID, API_KEY, SECRET_KEY)""" 读取图片 """def get_f
2021-03-04 10:30:43 406 1
原创 Python读写tty设备
环境Linux + Python 2.7import osimport sysimport selectMAX_READ_CNT = 256def write(dev, endl="\r", timeout=5 #seconds ): try: tty = os.open(dev, os.O_RDWR) while True: at = raw_input() #input() Python 3.x if at.lower() in ["quit",
2021-03-02 17:58:15 1072
原创 如何使用C/C++为Python编写DLL
1. 使用C/C++编写DLLVS创建一个Win32 Project选择DLl,勾选Empty Project新建test.h#ifndef _TEST_H_#define _TEST_H_int sum(int, int)int sub(int, int);#endif新建test.cpp#define DLLEXPORT extern "C" __declspec(dllexport)DLLEXPORT int sum(int a, int b) { re
2021-02-26 14:52:49 332
原创 OpenCv漫水填充floodFill详解
函数原型int cv::floodFill ( InputOutputArray image, InputOutputArray mask, Point seedPoint, Scalar newVal, Rect * rect = 0, Scalar loDiff = Scalar(), Scalar upDiff = Scalar(), ...
2018-07-09 10:56:27 32868 10
原创 OpenCV threshold函数详解
threshold函数作用:去掉噪,例如过滤很小或很大像素值的图像点。threshold函数原型:double threshold( InputArray src, OutputArray dst, double thresh, double maxval, int type );参数说明:src:原图像。dst:结果图像。thresh...
2018-07-03 17:33:56 98194 2
C Programming.rar
2021-04-14
OpenCV threshold Demo code V2
2018-07-04
OpenCV threshold Demo code
2018-07-03
Computer Vision with OpenCV 3 and Qt5 pdf + code
2018-05-29
Learning Image Processing with OpenCV pdf + code
2018-05-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人