- 博客(22)
- 资源 (1)
- 收藏
- 关注
原创 矩阵XY轴翻转
buf = [ -1, 90, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 600, 890, 700, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1080, 1200, 860, ..
2022-05-14 21:00:49 418
原创 Android 读取bin文件方法
找了比较多的资料,发现读出来的bin文件内容,和实际有差异,经调试发现如下:问题:底层C读bin文件可以按一个字节一个字节读出来,但是java读出来的是,一个int类型,打印出来是负值。这就很奇怪了。bin文件如图,我们要读第一个字节的内容为 0xF0分析:1. Java代码:返回值是 -16,看到这里发现没道理啊,为什么呢? static String readBinFile(String name, int len) { String pa..
2021-10-24 16:25:29 7356
原创 Android TextView 空格显示不对齐问题
当我们想要在TextView设置字符串的时候里面包含多个空格,并且想要用空格来填充对齐时,往往达不到我们想要的效果,查了比较多的资料发现,其实很简单,只需要设置一个属性即可想要的效果:实际的效果:如果遇到这种情况,请在textview属性上加上,等宽字体的属性。android:typeface="monospace"这样就能满足要求啦如果对你有帮助,请帮忙点赞啦,感谢!...
2021-10-24 16:03:26 3144
原创 Toast 重复显示 解决办法
问题描述: 当连续点击按钮后,Toast会连续显示,直到响应完所有点击,这不是我们想要的效果。 我们想要的是,每次点击后取消上一次的toast,立即响应这一次的点击编写一个方法如下:只需要在显示之前取消当前的toast,然后再显示即可!!! private static Toast toast = null; static void toastShow(Context context, String text, int duration) {...
2021-10-22 16:30:13 632
原创 Bin文件和Hex文件相互转换
代码如下:#!/usr/bin/python# -*- coding: UTF-8 -*-# 文件名:server.pyimport sysimport osimport pyperclipprint()print("*****************************************************")print("* USAGE: python binToHex [bin_file] [hex_file_name] *")print("*********
2021-09-23 14:57:45 2796
原创 git 创建远程新分支(没有提交记录的)
1. 创建本地没有提交历史记录的空分支git checkout --orphan <branchname>2. 创建远程新分支git push origin localbranch:remote_new_branch_name3. 删除远程分支git push origin -d remote_branch_name
2021-09-16 11:00:12 650
原创 PDE_DATA定义说明
1. 找到原型,文件路径kernel/fs/proc/generic.cvoid *PDE_DATA(const struct inode *inode){ return __PDE_DATA(inode);}EXPORT_SYMBOL(PDE_DATA);2. 按calltrace最终找到调用container_of,到这里大家都熟悉了吧! 通过结构体中的一个成员变量的地址获得该结构体的首地址。文件路径:kernel/fs/proc/internal.hstati...
2021-09-13 14:52:40 1233 2
原创 SPI原理(物理层-协议层-驱动层)
SPI物理层、协议层和驱动层介绍1.物理层 1.1 SPI概述 1.2 SPI接口 1.3 SPI互联 1.4 内部结构2.协议层 2.1 SPI时序 2.2 SPI数据格式 2.3 SPI主从模式 2.4 SPI发送和接收数据 2.5 [使用DMA的SPI通讯]3.Linux SPI子系统SPI物理层、协议层和驱动层介绍1.物理层1.1 SPI概述 全双工同步串行通讯接口,能够实现主设备和从设备之间...
2021-08-30 16:49:02 1804
原创 strsep函数用法
1. 位置:在kernel/lib/string.c中,头文件<linux/string.h>中2. 函数功能:破坏性分割字符串,返回分割前一部分,后一部分保存在原字符中3. 函数原型:char * strsep(char **,const char *);/** * strsep - Split a string into tokens * @s: The string to be searched * @ct: The characters to search for
2021-08-20 12:14:24 7241 2
原创 PC端程序和安卓应用进行socket通讯
实现功能:1.PC端发送命令给app2.app收到后,根据命令执行操作3.app将操作的结果返回给PC首先来看PC端发送接收程序代码(文件名Client.java):1. connect/reconnect: 建立和app端的连接2.Client_listen:PC端监听来自app端的数据模块3.Client_send:PC端发送给app端的数据模块4. 查看手机的ip地址(我的:10.1.1.18,端口设置为9911)(注意,pc和手机连接同一个wifi)impo
2021-08-07 16:44:57 3223 13
原创 Hikey960 代码拉取命令和环境配置
Hikey960 env build:1.System base: Ubuntu 18.04 server2.download repo: a. mkdir ~/bin b. PATH=~/bin:$PATH c. curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo d. chmod a+x ~/bin/repo3.download aosp and hikey960 ...
2021-07-30 18:18:50 241
原创 Ubuntu 18.04 LTS server 编译环境配置(For sda810):
Ubuntu 18.04 LTS server ENV Settings(For sda810):0.install packages: sudo apt-get install bc bison build-essential sudo apt-get install curl flex g++-multilib gcc-multilib sudo apt-get install gnupg gperf imagemagick lib32ncurses5-dev sud...
2021-07-30 18:15:32 222
原创 Android应用通过JNI调用ioctl操作设备驱动
前提背景:1. 底层设备驱动已经实现ioctl相关操作接口2. 本篇主要讲如何实现JNI层和应用层的ioctl相关内容3. 这里是基于sda810开发板调试,其他arm开发板搭载安卓系统均可以调试NDK环境搭建和Demo代码实现环境搭建下载NDK包和配置环境变量1.到官网下载android-ndk-r13b-windows-x86_64.zip(我用的是这个版本,最新版本)2.解压缩后将目录添加到PATH中,我这里是d:\android-ndk-r13b\......
2021-07-30 17:49:49 3137 6
原创 Linux内核中断子系统学习笔记
一直想写一篇关于Linux 中断子系统文章,终于有时间可以静下心来写一些,前后预计花费15天左右的时间来完成这个文章,希望能帮助到有需要的人,先写一部分内容,后面再补充进来。目录中断1.中断类型a.同步中断和异常 b.异步中断2.硬件IRQ3.处理中断 a.进入和退出任务b.中断处理程序4.数据结构 a.IRQ控制器抽象 b.处理程序函数的表示5.中断电流处理 a.设置控制器硬件 b.电流处理6.初始...
2020-08-28 22:40:14 414
原创 proc文件系统下创建节点的两种方法
##创建只读节点文件###第一种static ssize_t vendor_read(struct file *file, char *buf, size_t len, loff_t *pos){ ssize_t ret = 0; if (!PROC_SEND_FLAG) { ret += snprintf(buf_tmp + ret, sizeof(buf_tmp) - ret, "FW_VER = 0x%2.2X\n", ic_data->vendor_fw_
2020-08-01 10:42:28 1093
原创 python实现递归查找文件中的字符串
先贴完整代码,功能描述见代码中的备注运行命令:python grep.py D:\linux-master touch脚本名为:grep.py参数1:文件夹路径(D:\linux-master)参数2:要检索的关键字(touch)import osimport reimport sys# 遍历当前路径下所有的文件路径,并保存到names里面def find_files(path, names): for root,dirs,files in os.walk(path):
2020-07-02 16:12:24 1446
原创 union和struct使用小技巧
联合体中的所有成员共用一块内存区域,这个区域的长度取决于占用空间最长的成员看代码效果,比较直观/* * arr 和 addr共用一块空间,空间长度为32bit * 如果arr类型是uint16_t,那么此空间长度就是16*4=64(bit) */struct addr { union { uint32_t addr; uint8_t arr[4]; };};/** * union中的struct和addr共用一块空间,struct用__pa.
2020-07-02 14:43:06 477
原创 linux通过改变系统属性值来触发行为
1. 找到system/core/init/stable_properties.h文件,添加only_for_test属性 static const std::set<std::string> kExportedActionableProperties = { "dev.bootcomplete", "init.svc.console", "init.svc.mediadrm", "init.svc.surfaceflinger", "in.
2020-06-24 16:38:47 1595
原创 创建linux可执行程序
背景有些时候我们需要定制一些功能来debug,而/system/bin下没有我们想要的可执行程序,这个时候就需要我们自己来封装一个此demo主要功能是循环读取proc/目录下某个文件,然后在控制台show出来环境编译环境(ubuntu),开发板源码(我自己的qcom,mtk都可)步骤1.在vendor/rockchip目录下创建工程目录himax2.目录结构如下: |--himax.mk |--sepolicy/ |--file_contexts |--hima
2020-06-24 10:44:52 792
原创 Linux内存泄漏调试
背景循环压力测试驱动某个模块功能时,会出现alloc不到memory情况工具利用Linux自带的工具(kmemleak),进行调试怎样编译出工具配置config,默认配置如下:CONFIG_DEBUG_KMEMLEAK=yCONFIG_DEBUG_KMEMLEAK_EARLY_LOG_SIZE=4000CONFIG_DEBUG_KMEMLEAK_DEFAULT_OFF=y修改后:CONFIG_DEBUG_KMEMLEAK=yCONFIG_DEBUG_KMEMLEAK_EARL
2020-06-23 17:54:09 647
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人