自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(478)
  • 收藏
  • 关注

原创 Linux内核INIT_WORK如何传参数

怎样传递参数到工作队列

2023-12-06 17:36:37 245

转载 I2C设备应用测试程序

i2c 测试代码

2023-04-17 16:40:11 601

转载 本地通信实例(AF_UNIX)

socket

2023-03-07 11:43:16 641

转载 AF_UNIX 本地通信

socket AF_UNIX

2023-03-03 14:27:48 845

转载 保持SSH长连接防止终端卡死

ssh

2022-12-09 13:58:00 1432

转载 05-SA8155 QNX通过QUB配置GPIO/INT/SPI/I2C/SPI等

SA8155

2022-12-08 09:39:58 1609

转载 Bootloader和Recovery的基本介绍

高通的 BCB 介绍

2022-08-24 15:59:06 1587

转载 android virtual A/B OTA降级策略

android virtual A/B OTA降级策略

2022-08-11 15:07:42 1597

原创 spi 自带驱动spidev.c 的测试使用

1. Linux 提供了一个功能有限的 SPI 用户接口,如果不需要用到 IRQ 或者其他内核驱动接口,可以考虑使用接口 spidev 编写用户层程序控制 SPI 设备。代码在kernel\drivers\spi\spidev.c。注册部分代码如下:static const struct file_operations spidev_fops = { .owner = THIS_MODULE, /* REVISIT switch to aio primitives, so that user

2022-04-11 17:01:53 2097

转载 linux spi字符类驱动注册流程spi_register_driver和简单实例

一、用spi_register_driver函数注册spi驱动。spi的驱动在\kernel\drivers\spi\spi.c二、这里初始化driver结构的总线类型,然后是调用driver_register注册一个driver,到这里可以回到总线驱动模型的知识,driver_register是所有总线注册一个driver进总线中的统一接口,在学习总线模型的时候知道,在调用driver_register注册一个driver会去遍历总线下的device,并调用总线提供的总线提供的match函数进

2022-04-08 16:09:56 1895

转载 Ubuntu 14.04安装Python3

1、添加源sudo add-apt-repository ppa:fkrull/deadsnakes2、更新 & 安装sudo apt-get updatesudo apt-get install python3.5 python3.5-dev3、修改软链接sudo cp /usr/bin/python /usr/bin/python_bak //先备份sudo rm /usr/bin/python //删除sudo ln -s /usr/bin/python

2022-04-02 19:57:44 460

转载 Recovery启动流程(3)--recovery.cpp分析

转载请注明来源:cuixiaolei的技术博客这篇文章主要通过分析高通recovery目录下的recovery.cpp源码,对recovery启动流程有一个宏观的了解。MTK和高通的recovery几乎一样,只是使用自己家的mt_xxx文件。为什么要分析recovery.cpp这个文件?我们知道,当我们通过按键或者应用进入recovery模式,实质是kernel后加载recovery.img,kernel起来后执行的第一个进程就 是init,此进程会读入init.rc启动相应的服务。在r

2022-02-14 17:13:02 1494

转载 Android Recovery:功能简介。Recovery模式介绍

Android Recovery TheoryAndroid Recovery:功能简介Android支持Recovery模式。在某些操作之后,系统会自动重启并进入到Recovery模式,用户按组合键开机(HOME+POWER),也可进入Recovery模式。该模式提供如下功能:1、擦除用户数据恢复系统到出厂模式,即擦除用户数据和缓存数据。2、系统升级系统升级的概念比较广,包括系统文件的升级、恢复损害的系统数据、firmware的升级,以及应用软件的维护,甚至影音文件的下载。系统升级

2022-02-14 17:10:38 7141

原创 怎么获得system() 函数的返回值

在 c 或者 c++ 代码中,有时我们需要调用系统功能,例如执行一个脚本;则只能使用system() 来实现,那么怎么根据system()函数的返回值来确认,脚本是否执行成功?或者脚本是否完成所打算执行的功能呢?下面通过一个例子来说明。1.实现功能的脚本如下, 脚本名字是 update_mcu.sh: 以下脚本是一个给mcu升级的脚本,实现了检测是否有升级包,对升级包的md5sum校验等功能;校验完成后进行升级,升级函数upgrade_mcu 有返回值,根据返回值确定是否升级成功,根据是否升级成功.

2022-01-07 11:31:00 8998

转载 Shell $?:获取函数返回值或者上一个命令的退出状态

$? 是一个特殊变量,用来获取上一个命令的退出状态,或者上一个函数的返回值。所谓退出状态,就是上一个命令执行后的返回结果。退出状态是一个数字,一般情况下,大部分命令执行成功会返回 0,失败返回 1,这和C语言的 main() 函数是类似的。不过,也有一些命令返回其他值,表示不同类型的错误。1) $? 获取上一个命令的退出状态我们使用两个脚本文件来演示。先编写下面的代码,并保存为 a.sh:#!/bin/bashif [ $1 == 100 ]thenreturn 0 #参数正.

2021-12-30 20:14:34 3018

原创 Shell脚本怎么获取C语言可执行程序返回值

#!/bin/sh#./test是c程序,该程序 返回0./testRET_VALUE=$?echo $RET_VALUE# $? 显示最后命令的退出状态。test 返回什么值, $RET_VALUE 就是什么值。

2021-12-30 20:07:56 1648

转载 Linux内核notifier机制通知链

内核使用通知链的机制在内核各子系统之间进行事件通知(注:无法用于内核态和用户态之间的事件通知)。一、通知链介绍在文件include/linux/notifier.h中,可以查看Linux内核定义的四种通知链类型:通知链类型 初始化 注册函数 通知函数 Atomic notifier chains(原子通知链) ATOMIC_NOTIFIER_HEAD() atomic_notifier_chain_register()/ atomic_notifier_c

2021-12-23 18:10:23 1333

转载 快速排序qsort函数使用方法总结(详细全面+代码)

文章目录1. qsort函数原型2. compar参数3. int 数组排序4. 结构体排序5. 字符串指针数组排序6. 字符串二维数组排序7. qsort函数应用:整型二维数组1. qsort函数原型void qsort( void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *) );  头文件:<stdlib.h>  函数功能...

2021-10-25 17:48:33 1666

原创 安卓系统编写一个动态链接库和测试文件的mk文件编写

在安卓系统下,编写一个动态链接库 .so 文件的Android.mk文件如下:LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)# This is the target being built.LOCAL_MODULE:= librpcLOCAL_MODULE_TAGS := optional# All of the source files that we will compile.LOCAL_SRC_FILES:= \ librpc.

2021-09-28 15:00:12 555

转载 Android.mk的用法和基础 && m、mm、mmm编译命令

一个Android.mk file用来向编译系统描述你的源代码。具体来说:该文件是GNU Makefile的一小部分,会被编译系统解析一次或多次。你可以在每一个Android.mk file中定义一个或多个模块。每个模块属下列类型之一: 1)APK程序,一般的Android程序,编译打包生成apk文件 2)JAVA库,java类库,编译打包生成jar文件 3) C\C++应用程序,可执行的C\C++应用程序 4)C\C++静态库,编译生成C\C++静态库,并打包成.a文件...

2021-09-27 17:41:38 2899

转载 android 查看gpio状态_神操作!Linux不写驱动控制直接控制GPIO

说到控制硬件,马上就能想到写个内核模块,驱动一下,像gpio_request、open、read、write……一堆API就出来了。其实,只是想简单的控制一下GPIO输入或者输出,不用这么复杂,系统已经实现相关驱动了,只需要了解怎么用就可以了。在用户空间通过sysfs控制GPIO,先访问/sys/class/gpio/,向export文件写入要操作的GPIO编号,使得该GPIO的操作接口从内核空间暴露到用户空间,GPIO的操作接口包括direction和value等,direction控制GPIO输

2021-09-04 16:57:06 955

转载 高通平台如何新增加一个分区,并mount到android系统中

1.首先需要更改partition.xml文件,在userdata的前面增加一个temp的分区,这里要注意的是userdata的分区大小需要同步的减小,还有一点需要留意,temp分区的UUID需要改一下\MSM8953.LA.2.0\common\config................... <partition label="qpdata2" size_in_kb="10240" type="5AF80809-AABB-4943-9168-CDFC38742599" bootabl

2021-07-23 15:36:40 1361 1

转载 Userdata 分区 resize 功能

1. 挂载分区时添加resize功能system/core/fs_mgr/fs_mgr.cpp #include "cryptfs.h"#define RESIZE2FS_BIN "/system/bin/resize2fs"static void resize_fs(const char *blk_device, char *fs_type, char *key_loc) { uint64_t device_sz; uint64_t device_ss;

2021-07-22 14:55:05 1112

转载 一次spinlock死锁故障的定位(太经典,收藏!)

本文讲述一次spinlock死锁故障的定位过程,目的不在于问题本身,而在于展现一个内核bug的分析过程,提供一种分析思路,供大家参考。一、问题现象内核出现panic,kdump搜集到了vmcore。vmcore中直接导致panic的log信息为(包含相应CPU上的堆栈):点击(此处)折叠或打开Kernel panic-notsyncing:Watchdog detected hard LOCKUPoncpu 18 Pid:12410,comm:xxxxNottai...

2021-06-18 09:38:36 3312

转载 【算法】大数乘法问题及其高效算法

题目编写两个任意位数的大数相乘的程序,给出计算结果。比如:题目描述: 输出两个不超过100位的大整数的乘积。输入: 输入两个大整数,如1234567 和 123输出: 输出乘积,如:151851741或者求 1234567891011121314151617181920 * 2019181716151413121110987654321 的乘积结果1分析所谓大数相乘(Multiplication algorithm),就是指数字比较大,相乘的结果超出了基本类型的表示范围,所以这样的数

2021-06-06 11:30:13 1691 1

转载 数据结构与算法——两个大整数的乘积问题

2016年腾讯实习在线笔试题目:大整数乘法输入数据有两行,分别是两个非负整数,最多1000位,输出它们的乘积。示例:输入:21389712983712893712343502789523572345输出:9305121819000846375051201723846663435/************************************************************************* > File Name: string_bi...

2021-06-06 11:20:48 370

转载 移植FreeRTOS到STM32F103全过程

转载出处:http://blog.chinaunix.net/uid-22072065-id-5196763.html目标: 移植freeRTOS到stm32开发板。1. 熟悉freeRTOS的firmware结构解压源码到..\FreeRTOSv8.2.2,首先一定要浏览一下各个文件夹下的readme.txt文件。进到这个目录:FreeRTOSv8.2.2\FreeRTOS\Source 看看这个readme文件:Each real time kernel po...

2021-05-11 10:21:11 484

转载 学习FreeRTOS之队列管理_1

1. 概述基于FreeRTOS 的应用程序由一组独立的任务构成——每个任务都是具有独立权限的小程序。这些独立的任务之间很可能会通过相互通信以提供有用的系统功能。FreeRTOS 中所有的通信与同步机制都是基于队列实现的。2. 队列特性数据存储队列可以保存有限个具有确定长度的数据单元。队列可以保存的最大单元数目被称为队列的“深度”。在队列创建时需要设定其深度和每个单元的大小。通常情况下,队列被作为FIFO(先进先出)使用,即数据由队列尾写入,从队列首读出。当然,由队列首写入也...

2021-05-11 10:12:19 194

原创 ubuntu 16.06 LTS 不显示 WIFI 列表

编辑 NetworkManager.conf 文件:sudo vim /etc/NetworkManager/NetworkManager.conf更改 managed=false 为 managed=true, 然后重启网络管理服务:sudo service network-manager restart重启系统,发现又出现 WIFI 列表了。

2021-03-19 11:41:02 321

转载 Linux Shell中的延时函数 sleep

在 linux shell 脚本中经常需要做一些延时处理。所以经常要用到 sleep 或 usleep 函数。下面来说一下 sleep 和 usleep 的区别:sleep : 默认以秒为单位。usleep : 默认以微秒为单位。1s = 1000ms = 1000000ussleep 不但可以用秒为单位,还可以指定延迟的单位,例如:sleep 1s 表示延迟一秒sleep 1m 表示延迟一分钟sleep 1h 表示延迟一小时sleep 1d 表示延迟一天...

2021-03-05 13:49:32 13093

转载 Android lowmemorykiller 原理分析

frameworks/base/services/core/java/com/android/server/am/ProcessList.java platform/system/core/lmkd/lmkd.c kernel/common/drivers/staging/Android/lowmemorykiller.c 一. 概述Android的设计理念之一,便是应用程序退出,但进程还会继续存在系统以便再次启动时提高响应时间. 这样的设计会带来一个问题, 每个进...

2020-12-30 16:37:48 572

转载 函数 —— sprintf() 拼接字符串

描述C 库函数int sprintf(char *str, const char *format, ...)发送格式化输出到str所指向的字符串。参数str-- 这是指向一个字符数组的指针,该数组存储了 C 字符串。 format-- 这是字符串,包含了要被写入到字符串 str 的文本。它可以包含嵌入的 format 标签,format 标签可被随后的附加参数中指定的值替换,并按需求进行格式化。format 标签属性是%[flags][width][.precision][len...

2020-12-28 15:55:57 5188

转载 OpenCV两种畸变校正模型源代码分析以及CUDA实现

转载:https://www.cnblogs.com/riddick/p/7811877.html图像算法中会经常用到摄像机的畸变校正,有必要总结分析OpenCV中畸变校正方法,其中包括普通针孔相机模型和鱼眼相机模型fisheye两种畸变校正方法。普通相机模型畸变校正函数针对OpenCV中的cv::initUndistortRectifyMap(),鱼眼相机模型畸变校正函数对应OpenCV中的cv::fisheye::initUndistortRectifyMap()。两种方法算出映射Mapx和Ma

2020-11-06 19:17:06 2141

转载 OpenCV--摄像机图像畸变校正

使用摄像头,采集一副图像,然后对图像畸变校正,摄像头事先标定好。 #include "cv.h" #include "highgui.h" #include "cxcore.h" #include "cvcam.h" //图像的像素直接提取 #define _I(img,x,y) ((unsigned char*)((img)->imageData + (img)->widthStep*(y)))[(x)] //亚..

2020-11-06 19:13:21 4202

转载 摄像机模型(内参、外参)

一、针孔模型  下图是针孔摄像机的基本模型。平面π称为摄像机的像平面,点OcOc称为摄像机中心(或光心),f成为摄像机的焦距,OcOc为端点且垂直于像平面的射线成为光轴或主轴,主轴与像平面的交点p是摄像机的主点。  如图所示,图像坐标系为o-xy,摄像机坐标系为Oc−xcyczcOc−xcyczc。记空间点XcXc在摄像机坐标系中的齐次坐标为:Xc=(xc,yc,zc,1)TXc=(xc,yc,zc,1)T它的像点m在图像坐标系中的齐次坐标记为m=(x,y,1)Tm=(x,y,1...

2020-11-06 19:09:12 1116

转载 傅里叶分析之掐死教程(完整版)

原文出处:韩昊 1 2 3 4 5 6 7 8 9 10 作 者:韩 昊 知 乎:Heinrich 微 博:@花生油工人 知乎专栏:与时间无关的故事 谨以此文献给大连海事大学的吴楠老师,柳晓鸣老师,王新年老师以及张晶泊老师。 转载的同学请保留上面这句话,谢谢。如果还能保留文章来源就更感激不尽了。 ——更新于2...

2020-11-03 19:07:47 363

转载 CMake的安装及其简单使用

一、CMake的安装(本文是在Ubuntu 17.04下的安装,安装的版本为 2.8.9)1、卸载原有系统上安装的cmake,便于安装更高版本的cmake。(如果不卸载系统自带的,直接安装,可能会出现错误。) apt-get autoremove cmake2、去官网下载cmake的最新版的安装包 官网地址:https://cmake.org/download/ 注:下载和自己的OS匹配的版本;3.将下载的安装包放到 /usr路径下,并且解压;...

2020-10-30 10:11:51 2288

转载 Linux和Uboot下eMMC boot分区读写

1. eMMC的分区大部分eMMC都有类似如下的分区,其中BOOT、RPMB和UDA一般是默认存在的,gpp分区需要手动创建。BOOT主要是为了支持从eMMC启动系统而设计的;RPMB即Replay Protected Memory Block简称,通常用来保存安全线管的数据;GPP主要用于存储系统或者用户数据。UDA通常会进行再分区,然后根据不同目的存放相关数据,或者格式化成不同文件系统。2. Linux下读写boot分区因为boot分区中一般存放的是bootloader或者相关配

2020-09-24 09:27:10 2395

转载 hexdump命令的使用

hexdump命令是Linux下的打印16进制的利器,它可以按我们指定的格式输出16进制,特别有用,配合eeprom来用简直是绝配。今天我们来介绍一个hexdump命令的使用:首先我们准备一个测试用的文件test,十六进制如下:选项:-n length只格式化输入文件的前length个字节-C 输出十六进制和对应字符hexdump高级用法:-e 指定格式字符串,格式字符串包含在一对单引号中,格式字符串形如:...

2020-09-22 11:18:33 9845

原创 在ubuntu上编写C程序“Hello world!“

1.首先,ubuntu有自带的编译器gcc,直接运行即可2.用gedit , vim或者其它什么编辑软件.编辑一个c 文件。如下: #include <stdio.h> int main() { printf("hello world!"); return 0; }3.通过“gcc helloworld.c -o helloworld”命令编译...

2020-09-22 08:58:15 2029

空空如也

空空如也

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

TA关注的人

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