- 博客(47)
- 收藏
- 关注
原创 加速度传感器术语解析
一般用g表示加速度,g即为重力加速度9.8米/秒的平方如上图表示了加速度传感器的量程范围,可选为±2g,±4g,±8g,±16g,即对应±19.6米/秒的平方、±39.2米/秒的平方、±78.4米/秒的平方、±156.8米/秒的平方。
2023-08-30 17:10:13 3208
原创 Unico-GUI软件关于ST传感器机器学习(MLC)基本操作步骤
UNICO-GUI软件用于意法半导体产品组合(加速度计、陀螺仪、磁力计和环境传感器)中所有MEMS传感器的评估板。它可用于Linux(基于Debian) / Mac OS X / Windows平台。用这个软件的前提是需要有一个专用的传感器评估板,比如STEVAL-MKI109V3(),如下图:还需要一个适配板,比如 STEVAL-MKI227KA(),如下图:适配板其实就是一个传感器的扩展板,插到评估板上即可。
2023-08-09 18:45:00 1011 2
原创 蓝牙HID与Android的通信--多点触摸问题
从中可以看出,如果report中有usage为HID_DG_CONTACTID,即判断为多点触摸的设备,会加载多点触摸的hid相关驱动,也就是linux内核中drivers\hid\hid-multitouch.c代码,该代码对HID的多点触摸设备进行了相关的转换,以适应android系统上报正确的多点触摸input事件。在其代码中,也可以找到static const struct hid_device_id mt_devices[]结构体数组,里面定义了支持该驱动的设备ID和厂商ID。
2023-07-01 14:07:30 1795
原创 Android P安装第三方输入法需要注意so文件的处理
androidP在集成第三方输入法的时候,根据网络给的教程一直没法打开。最后发现原来是写Android.mk文件的时候没有处理so库导致apk找不到库。把so库加上去即可以正常打开。注意这些so库名字可能会变化,而且需要注意自己的Android是64位还是32位的,根据需要进行添加。把上面的编辑一下,添加进Android.mk文件即可。...
2022-08-01 17:56:53 1172
原创 Android P 源码如何修改屏幕密度
1. device/模块公司名称/模块平台名称/system.prop比如:device/qcom/sdm660_64/system.prop这个文件添加字段:ro.sf.lcd_density=300 (300为密度值,根据自己要求填写不同的值)2. 屏幕密度修改可能导致设置-->显示-->显示大小里面设置不正常。可以修改如下代码:packages\apps\Settings\src\com\android\settings\display\DensityPreference.java 这里有两个数
2022-06-15 19:00:00 3213
原创 十六进制数据改写为C语言数组形式
/*十六进制数据改写为C语言数组形式如:011102222203333333生成:{0x01,0x11},{0x02,0x22,0x22},{0x03,0x33,0x33,0x33},如果第一个数为数据长度信息,第二个数为地址,其他为数据如:011102222203333333生成:{0x01,0x01,0x11},{0x02,0x02,0x22,0x22},{0x03,0x03,0x33,0x33,0x33},*/#include <stdio.h>
2022-02-09 18:38:32 2033
原创 C语言二维数组相关操作方法
1. 定义一个二维数组,并赋值:#define ROW 32#define COL 16//定义一个32行,16列的数组,并赋值。unsigned char str[ROW][COL] = {{0x01, 0x01, 0x02}, //第一行 赋值str[0][0], str[0][1], str[0][2],其他为0{0x01, 0x01}, //第二行 赋值str[0][0], str[0][1],其他为0{0x01}, //第三行 赋值str[0][0], 其他为0//其他未赋值的行默
2022-02-09 17:56:56 1088
原创 Linux 内核I2C设备驱动代码模板
Linux内核版本:Linux 4.4.153设备树:hello@3e { compatible = "HELLO1,HELLO2"; reg = <0x3e>; };驱动代码:#include <linux/module.h>#include <linux/i2c.h>static int hello_probe(struct i2c_client *client, const
2022-01-24 12:30:22 1370
原创 移远USB3.0 5G模块无法休眠问题跟踪
在调试移远5G模块时,发现5G模块通过USB3.0方式连接的时候,android系统无法进入休眠,原因自然跟USB有关系。联系移远FAE, 反馈回来的结果是根据他们给的文档,增加一下USB自动休眠与支持远程唤醒即可。依据移远给的提示,增加了相关代码,usb_enable_autosuspend()与device_init_wakeup()。通过测试,发现USB终于可以进入休眠,但当系统进入休眠,唤醒的时候,5G模块与主机之间断掉了。usb_wwan_port_remove--port=2usb.
2021-11-09 16:09:43 1868 3
原创 Android9.0 kernel上传的input键值与frameware层需要做一个转换或者声明
做项目时,需要从安卓内核层写驱动上传一些键值到上层。结果发现很多都对不上号。查看了frameworks\native\include\android\keycodes.h里面安卓的标准键值,然后再查看kernel\msm-4.4\arch\mips\boot\dts\include\dt-bindings\input\linux-event-codes.h,发现两者相差特别大。安卓是怎样把两者对应起来呢?肯定需要做一些转换。结果查到设备的/system/usr/keylayout目录下面有很多.
2021-08-26 16:06:14 307
原创 先复制文件再打开文件C语言函数
int read_file(const char* path, char* buf, int* lenp, pthread_t tid){ char cmd[512] = {}; unsigned long cmdlen = sizeof(cmd); int ret = -1; FILE *fp = NULL; const char * ftmp = "/sdcard/qianshi_file"; int rand; if (path == NULL || buf == NULL) .
2021-08-25 16:53:58 82
原创 高通PWM调试笔记
本笔记基于SDM660平台记录一、PWM信号电平转换不能用普通三极管或者二极管,需要用高速三极管或者分压否则出来的信号可能因为PN结的电容效应而变得不是方波,比如如下图:蓝色是4V的PWM信号,黄色是通过三极管反向输出的波形,显然因为三极管的电容效应,无法得到转换后的波形。二、改变PWM的高电平电压路径:kernel\msm-4.4\arch\arm64\boot\dts\qcom\sdm660-mtp.dtsigpio@c500->qcom,vin-sel = <0&
2021-08-13 19:36:33 1843
原创 android9.0 linux用户空间编写测试程序方法记录
做驱动有时需要测试一下驱动的各项功能,可写一些简易的用户空间程序去测试。如下:cd external/external目录下创建自己的文件夹,比如test。cd test/编写C程序,比如test.c在你创建的文件夹下,添加Android.bp编辑Android.bp,添加如下:(比较易懂,可参考tinyalsa目录下的做法)cc_binary {name: "test",srcs: ["test.c"],cflags: ["-Werror"],}在test目录下mm,编译该
2021-05-11 12:17:12 119
原创 C语言 8位数字 unsigned char类型高低位对换
#include <stdio.h>/* 8位数字高低位调换 */unsigned char ltoh(unsigned char data){ int i = 0; unsigned char buf = 0; for(i = 0; i < 8; i++) { buf |= (((data >> i) & 0x1) << (7 - i));
2021-05-08 17:59:09 1655
翻译 ARM Cortex-A(arm v7) 裸机及Linux内核启动代码过程官方介绍翻译
本文是一篇翻译的文章,翻译自《ARM Cortex-A Series Programmer’s Guide》第13章Boot Code。文档来自https://developer.arm.com/,由于在移植Linux内核到exynos4412芯片上时,遇见了一些问题,所以决定把ARM的启动过程分析一下。Chapter 13 Boot CodeThis chapter considers the boot code running in an ARM processor based system, a
2020-11-20 12:35:53 2727 3
原创 tiny4412 uboot 2020.10版本移植(四)——uboot修改支持sd卡、eMMC引导内核及其他一些杂项设置
本文描述了在《tiny4412 uboot 2020.10版本移植(三)——uboot初步启动》 的基础上继续向tiny4412 uboot 2020.10版添加的各种功能。一、串口设置1.1. 把早期的uart debug关掉:默认配置文件configs/tiny4412_defconfig去掉:CONFIG_DEBUG_UART = yCONFIG_DEBUG_UART_BASE=0x13800000CONFIG_DEBUG_UART_CLOCK=100000000CONFIG_D
2020-11-16 23:23:02 3706 1
原创 tiny4412 uboot 2020.10版本移植(三)——uboot初步启动
这篇文章主要描述如何把2020.10版本的uboot在tiny4412核心板(1412版)上启动起来,而不关注一些细节问题。一、添加交叉编译器信息到Makefile打开uboot源代码根目录下的Makefile,在开头添加如下:ARCH = armCROSS_COMPILE = ~/WDC250GBHD/toolchain/gcc-arm-none-eabi-9-2020-q2-update/bin/arm-none-eabi-CROSS_COMPILE是自己交叉编译器所在的路径。(有关
2020-10-22 22:49:01 3254 3
原创 tiny4412 uboot 2020.10版本移植(二)——下载uboot及对uboot移植的构想和准备工作
一、uboot下载这个网站提供所有uboot版本的下载:ftp://ftp.denx.de/pub/u-boot/我下载了最新版本的uboot:u-boot-2020.10.tar.bz2二、uboot启动流程分析uboot源码根目录下的README是一个好文件,里面会告诉你很多关于uboot源码怎么使用的信息,仔细阅读会带来很多便利。uboot的启动流程可以参见README文件Board Initialisation Flow: 下面的信息。这里进行一些简略的记录:uboot源
2020-10-19 12:17:57 2577
原创 tiny4412 uboot 2020.10版本移植(一)——交叉编译器的选择
交叉编译器的选择并不需要一定是开发板光盘提供的编译器,可以自己上网下载最新的编译器,也可以下载自己认为稳定的编译器。我这里移植的目的是为了学习,所以我下载了最新的编译器版本。tiny4412核心板使用的是Samsung ARM Cortex-A9 四核 Exynos 412 Quad-core处理器,是一个32位Cortex-A系列的Arm处理器。可以到如下网站下载交叉编译器。https://developer.arm.com/tools-and-software/open-source-sof
2020-10-19 09:10:38 1425
原创 关于tiny4412开发板烧录uboot时不成功的一个原因可能是mkbl2造成的
tiny4412核心板用到了三星exynos4412芯片。2020版的uboot支持spl, spl使得uboot可以编译出一个比较小巧的uboot_spl.bin的镜像文件,叫做辅助引导程序。可以加载到芯片SoC里面的ram上进行运行。在为tiny4412编译uboot时,烧录的时候用到三星提供的sd_fuse程序。烧录程序时,uboot_spl.bin小于14KB,我打算把uboot_spl.bin变为bl2.bin,烧录到sd卡的bl2分区上。运行脚本sudo ./sd_fusing.
2020-10-15 11:20:17 851
原创 Linux设备驱动程序(第三版)第四章示例驱动程序
Linux设备驱动程序(第三版) 作者科波特(Corbet, j.)书本的示例代码比较零乱,而且网站上给的示例代码是旧版或者是比较完整的代码,且没有单独成章。初学者学习起来比较困难,所以笔者分享一下在学习过程中调试过的模块,供有需要的读者参阅。由于侧重书本每章的知识,所以模块仅反映每章的知识点,不是一个全面的驱动模块,但对学习驱动的编写可能比看书本本身网站提供的代码会更有侧重点。仅仅是每一章相对前一章增加一些代码,而不是一个全面的代码。希望能够交流学习。也可以通过 https://gitee.com/san
2020-09-19 00:30:09 187
原创 Linux设备驱动程序(第三版)第三章修正过的示例驱动程序
Linux设备驱动程序(第三版) 作者科波特(Corbet, j.)书本的示例代码比较零乱,而且网站上给的示例代码是旧版,且没有单独成章。学习起来比较困难,所以笔者分享一下在学习过程中调试过的模块,供有需要的读者参阅。由于侧重书本每章的知识,所以模块仅反映每章的知识点,不是一个全面的驱动模块,但对学习驱动的编写可能比看书本本身网站提供的代码会更有侧重点。希望能够交流学习。也可以通过 https://gitee.com/sanzhouzi/ldd3ex.git 下载第三章主要是编写一个“完整”的字符设备驱
2020-09-16 21:18:33 423 2
原创 linux内核驱动调试常见错误笔记
错误:[ 2432.550000] Division by zero in kernel.[ 2432.550000] [<c001aa44>] (unwind_backtrace+0x0/0xf0) from [<c0254514>] (Ldiv0+0x8/0x10)[ 2432.555000] [<c0254514>] (Ldiv0+0x8/0x10) from [<c02544fc>] (__aeabi_idivmod+0x8/0x18)[ 2
2020-09-15 09:56:50 800
原创 openwrt添加linux内核驱动--helloworld示例笔记
一、linux内核驱动相关位置在openwrt目录下执行make menuconfig选择Kernel modules --->发现这里存在内核驱动的各种选项:这个选项表是通过openwrt/package/kernel/linux/modules目录下的.mk文件生成的:二、创建相应的目录与文件在openwrt/package/kernel/linux/modules目录下创建helloworld.mk文件...
2020-09-14 13:19:49 3766
原创 Openwrt编译完之后的目录解析笔记
目录一、openwrt/binopenwrt/bin/packages -- 里面存放这编译好的ipk包比如:ppp_2.4.8.git-2020-09-04-2_mipsel_24kc.ipkppp-mod-pppoe_2.4.8.git-2020-09-04-2_mipsel_24kc.ipkopenwrt/bin/targets/xxxxxx/xxxxxx --里面存放编译好的bin文件,是可以直接烧录到板子里面的二进制文件。不同型号的板子文件名不同。比如MT7688板子,路
2020-09-11 17:30:49 7510
原创 MT7688路由器 openwrt编译笔记
代码下载:git clone https://gitee.com/mirrors/openwrt.git查看README.md,查看编译说明执行 ./scripts/feeds update -a错误1:Build dependency: Please install GNU 'awk'Prerequisite check failed. Use FORCE=1 to override.make: *** [/home/lgcdb/openwrt/openwrt/include/to
2020-09-10 14:30:17 3219
原创 设置MT7688路由器短按复位按键时重启开机
编译主机:Debian10 64位编译SDK:MediaTek_APSoC_SDK5030_20170331路由芯片:MT7688开发过程:短按按键,出现如下信息:ralink_gpio: sending a SIGUSR1 to process 112也就是按键的中断处理函数给进程112发送SIGUSR1导致112进程退出。ps命令查看,没有发现112进程。重启路由器,ps查看112 admin 2396 S nvram_daemon得知112进程是n...
2020-09-10 12:03:10 871
原创 MT7688路由器 wifi驱动移植笔记
MT7688 SDK包:MediaTek_APSoC_SDK5030_20170331移植过程:下载wifi驱动包:MT7628_LinuxAP_V4.1.0.0_DPA_20160310.tar.bz2解压:tar jxvf MT7628_LinuxAP_V4.1.0.0_DPA_20160310.tar.bz2得到mt_wifi 、mt_wifi_ap两个文件夹。查看 source/linux-2.6.36.x/ralink/Kconfig 文件发现有下面这行代码:source
2020-09-09 16:55:58 1548
原创 MT7688路由器启动时无法进入联发科图标的解决办法
编译主机:Debian10 64位编译SDK:MediaTek_APSoC_SDK5030_20170331路由芯片:MT7688问题描述:编译生成xxxx_uImage固件烧录进板子里面,发现内核启动完毕引导init的时候不动了。PPP generic driver version 2.4.2PPP MPPE Compression module registeredNET: Registered protocol family 24PPTP driver version 0.
2020-09-09 11:28:27 571
原创 gitlab及git相关操作
服务器端:启动gitlabsudo gitlab-ctl start关闭gitlabsudo gitlab-ctl stop重启gitlabsudo gitlab-ctl restart客户端:
2020-09-08 15:38:58 94
原创 MT7688 SDK固件编译错误记录
编译错误1:extra/locale/gen_ldc.c:197:15: error: '__LOCALE_DATA_WCuplow_diff_data' undeclared (first use in this function); did you mean '__LOCALE_DATA_Cuplow_data'? out_i16(lso, __LOCALE_DATA_WCuplow_diff_data, __LOCALE_DATA_WCuplow_diff_TBL_LEN, "tblwuplo.
2020-09-08 15:17:05 860
原创 MT7688 SDK编译环境安装记录
工作主机:Debian10 64位SDK包:MediaTek_ApSoC_SDK_4320_20150414.tar.bz2一、安装gcc解压toolchain/buildroot-gcc463_32bits.tar.bz2 到/opt目录下二、安装LZMA
2020-09-07 22:32:18 1712
原创 sbrk系统函数在Ubuntu 18.04.4 LTS 64位系统中的一些疑问
//查找100以内的素数#include <stdio.h>#include <unistd.h>//素数检测函数int isPrimer(int a){ int i; for(i = 2; i < a; i++) { if(a % i == 0) { return 1;...
2020-04-02 21:46:10 255 1
原创 Wireshark抓包分析TCP连接、发送数据与断开过程
准备工具:1. 两台连接到同个局域网的电脑,或者虚拟机;2. 在其中一台电脑安装Wireshark;3. 在两台电脑上面都有TCP&UDP测试工具软件TCP连接建立过程(三次握手):抓包分析TCP连接过程:1.两台主机都分别打开TCP&UDP测试工具这里设置主机A的IP地址为10.1.13.2, 主机B为10.1.13.3。主机A作为客户...
2020-03-12 16:25:53 9078
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人