- 博客(233)
- 资源 (8)
- 问答 (1)
- 收藏
- 关注
原创 NVRAM相关
假设修改的是NVRAM_EF_IMS_PROFILE_LID这只NVRAM的默认值,它的文件名前缀MT79,升级前的NVRAM_EF_IMS_PROFILE_LID_VERNO号是000,修改默认值后将NVRAM_EF_IMS_PROFILE_LID_VERNO修改为001,那么Download Only升级前/data/nvram/md/NVRAM/NVD_DATA/目录中就有MT79_000这只文件。里面存的是普通NVRAM,2G RF driver NVRAM,3G RF driver NVRAM。
2023-12-07 14:34:32
23
原创 TP触摸屏调试
在系统亮屏或灭屏时,会调用回调tpd_fb_notifier_callback,并通过参数data实时传入FB_BLANK_UNBLANK(亮屏)与FB_BLANK_POWERDOWN(灭屏)的值,从而在亮屏时queue_work调度任务touch_resume_work运行并执行敦泰的resume(g_tpd_drv->resume(NULL)),灭屏时cancel_work_sync挂起任务touch_resume_work并执行敦泰的suspend(g_tpd_drv->suspend)。
2023-11-11 15:54:35
1027
原创 LCD调试
BOOT_LOGO = hd720 --- 根据屏分辨率来选择开机logo 位置在 vendor\mediatek\proprietary\bootable\bootloader\lk\dev\logo。后续所有围绕lcd的驱动处理,都会回到上面nt35521_hd_dsi_vdo_truly_nt50358_lcm_drv中所注册的函数。lcm_drv->init_power 对应 lcm_init_power --- 上电。--- 主要是跑屏初始化列表寄存器。
2023-11-04 16:16:42
134
原创 Flash ddr调试
流程:先确认所使用DDR类型(eMCP或分离式DDR+eMMC,可与项目经理确认),确认完DDR类型后,在官网online上面QVL查询是否有对应时序,若无,则可让flash供应商提供时序。大概意思为先读取eMMC firmware的emmc id,再与解析后的xlm时序表中的emmc id做遍历,若找到,则初始化ddr。--- CUSTOM_CONFIG_MAX_DRAM_SIZE的大小不能小于实际DRAM大小,DRAM会自适应物理DRAM的size。背景: Android T。
2023-06-17 17:18:13
387
原创 Keil v5小红叉消除
1. Project中的小红叉,如:去除方式:右键 --> Update Config File(Ver:0.0.0 -> 1.0.0):2. 代码中的红叉,如:以上红叉并不影响正常编译与程序的执行,可通过以下方式消除:
2022-03-25 15:16:40
2840
原创 keil编译报错找不到core_cm3.h文件
安装一次CubeMx后,可编译的工程报错:.\platform\Start_up\stm32f10x.h(478): error: #5: cannot open source input file "core_cm3.h": No such file or directory因为缺失CMSIS
2022-01-18 09:09:38
5622
3
原创 简单的链式队列
链式队列为使用链表来实现队列的存储结构。它创建两个指针top与rear分别指向链表头与链表尾部。下面是一个头节点的示意图:此时队列中未存储数据,top与rear指针同时指向头节点。添加一个新节点示意图:1. rear->next指向新添加的节点node2. 新添加的节点node成为新的rear节点删除一个元素示意图如下:完整代码如下:#include <stdio.h>#include <string.h>#includ...
2021-11-12 14:31:40
737
原创 SELinux
1.何为SELinux:SEAndroid是SELinux in Android的缩写。SELinux全称Security Enhanced Linux,即安全增强版Linux,它并非一个Linux发布版,而是一组可套用在类Unix操作系统(如Linux、BSD等)的修改,主要由美国国家安全局(NSA)开发,已经被集成到2.6版的Linux核心之中,现已有十几年的开发和使用历史,是Linux上最杰出的安全子系统。标准的UNIX安全模型是“自主访问控制“DAC(Discretionary Access..
2021-08-25 17:33:08
190
原创 property_get_bool 获取系统属性并强制转为bool
int8_t property_get_bool(const char *key, int8_t default_value);根据键key所设置的值来判定返回一个bool值,若未对键key设置值,则返回默认值default_value。若key所设置的值为以下值时,函数返回true:"1", "true", "y", "yes", "on"若key所设置的值为以下值时,函数返回false:"0", "false", "n", "no", "off"若是值为" off",其中带有一个空格,则为非
2021-07-02 14:33:45
2869
原创 芯片制程与功耗,运算速度关系
首先芯片制程越小,功耗越少,运算速度越快。芯片内部实际计算单元用到的都是二极管。二极管是什么?二极管是一种半导体,实际它是单向通电的,和我们普通电线做对比,普通电线正负极对调仍然可以通电,只不过是电流方向改变了而已,但是二极管是只有在正负极接对时才通电,解反是不通电的。下面以水管止逆阀为例,该阀门只能朝一个方向打开,若水流与打开方向不一致时,则阀门就会自动闭合上。如下图所示,有两个1米高的水桶,当向A中倒水时,止逆阀就会闭合,水流不会像C桶流动;当向C桶倒水时,止逆阀就会自动打开,水流就会顺着管子向
2020-08-11 15:32:07
6072
原创 u-boot之logo show
位于u-boot\drivers\video\drm\rockchip_display.c 函数display_logo:static int display_logo(struct display_state *state){ struct crtc_state *crtc_state = &state->crtc_state; struct connector_state *conn_state = &state->conn_state; struct l..
2020-06-09 16:23:22
770
原创 uboot驱动之udevice
struct udevice --> driver的一个实例该结构保存关于设备的一些信息,这个设备是驱动绑定的某个端口或外设,在本质上它也还是个driver实例。可通过调用bind函数创建一个device,使用U_BOOT_DEVICE()宏实现(在这种情况下,platdata为非空)或在设备树中创建一个节点(在这种情况下of_offset大于0)。在后一种情况下,是将设备树信息保存到platdata中去的,保存操作的函数为驱动的ofdata_to_platdata方法(当设备是一个设备树节点形式
2020-06-04 19:36:29
2835
1
原创 Makefile赋值符 = := ?= +=
[ = ] 与c语言类似,有一个特点就是在Makefile完全展开后,变量取最后一次的赋值。如:x = fooy = $(x) barx = abc此时y值是abc bar,而不是foo bar。[:=] 与前面[=]对比,[:]表示变量值取决于它在makefile中的位置,而不是等makefile展开后的值。如:x := fooy := $(x) barx := abc此时y值时foo bar,而不是abc bar。[?=] 表示若变量没有被赋值过,则就赋等号后面的值,如:foo .
2020-06-03 11:58:47
185
原创 unexport export locale LC_X
export: 表示将当前make中声明的变量和值传给sub makeunexport: 表示不要将当前make中声明的变量传给sub make。LC 是 locale的意思,它是根据计算机用户所使用的语言,所在国或地区及当地文化习俗所定义的一个runtime语言环境。比如中国大陆通常讲“文件系统”,而台湾或香港地区则使用“档案系统”,因此就需要有一套为各地区服务的本地化系统。locale根据使用习惯分为了12大类:1.LC_CTYPE 表示语言符号及其分类,控制字符处理方式,包括字符编码,字符.
2020-06-03 11:09:17
945
原创 System.loadLibrary动态库加载
System.loadLibrary先查找APK中的so目录,再查找系统目录/system/lib(64),/vendor/lib(64), Android中动态库的加载与Linux本质上是一样的,最终都是调用了dlopen,dlerror,dlsym, dlclose方法,通过动态库句柄和所需调用的函数名来调用动态库中对应的函数。...
2020-05-28 15:58:33
1058
原创 libcardboard_jni.so missing and no known rule to make it
需要编译一下sdk。编译方式如下:
2020-05-27 19:48:03
456
1
原创 PS8622 DP转LVDS
DP转LVDS转换器:1. 1 Lane DP输入,1 Lane LVDS输出PS8622是一款DP转LVDS的器件。DP信号或eDP信号来自于带GPU的PC机,转换后的LVDS输入到一个显示面板去显示。2.功能:1. 使能LVDS显示面板,源视频设备有着DP或eDP接口2.支持视频格式色深18位 高达1680x1050@60Hz或色深24位 高达1440x900@60fps3. 采用普瑞的CystalFree技术,无需额外的晶体或时序参考4. 单一3.3V或2.5V供电,功耗低,普通
2020-05-15 14:27:24
1856
原创 TI快充芯片-BQ25890
它是一个针对单个锂电池和聚合物锂电池的,5A开关模式电池充电芯片。它集成输入反转模块FET(RBFET-Q1),高端开关FET(HSFET-Q2),低端开关FET(LSFET-Q3)和电池FET(BATFET-Q4)。在高端门驱集成升压二极管。功能描述:1. 设备POR(Power-On-Reset)VBUS和BAT给内部偏置电路供电,当VBUS大于Vvbus_uvloz或BAT大于Vb...
2020-04-30 10:19:06
7676
1
原创 散列表(哈希表)
数组特点是查找容易,插入删除困难;链表特点是查找困难,插入删除容易。而散列表可以取数组与链表的优点。散列表就是把key通过一个固定算法函数(哈希函数)转换成一个整型数字,在将该数字对数组长度取余,取余的结果就当做数组下标,后将value存储在以该取余结果为下标的数组中。公式: 存储位置 = f(关键字)实例:#include "stdafx.h"#include <stdlib...
2020-04-16 15:53:59
299
原创 双向循环链表
双向链表节点有两个指针域,一个前驱指针,一个指向后继指针。且链表中第一个节点前驱节点为NULL,最后一个节点后继节点为NULL// myLink.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <stdlib.h>typedef struct bidir_link_list { struct bidir_lin...
2020-04-16 11:28:47
284
原创 notify通知链机制
notifier是一种异步通信机制,比如模块A对事件E感兴趣,但事件E是由模块B产生的,则A可通过通知链机制从B获取事件E。notifier结构体在文件kernel\include\linux\notifier.h中声明:1. notifier回调函数声明, action即为发生的事件,data为携带的结构数据信息:2.notifier通知链表3.优先级,数字越大优先级越高,表示任务执行...
2020-04-15 13:11:01
631
原创 devm_regmap_init_i2c
内核在3.1版本加入了regmap模块,主要是给I2C,SPI总线的读写提供一个统一的接口,后来陆续添加了以下接口的支持:1. 支持SPMI,MMIO2.Spinlock和客制化lock机制3.Cache支持4.字节序转换5.寄存器范围检查6.IRQ支持7.只读和只写寄存器8.Precious寄存器和volatile寄存器9.寄存器页两个最重要的结构体struct regm...
2020-04-14 17:16:12
5056
原创 devm_kzalloc
devm_kzmalloc()是资源管理版本的kzalloc(),它与设备关联,来进行内存的申请与释放。也就是设备从系统中剥离,设备驱动被卸载后,使用该函数申请的内存会自动释放。void * devm_kzalloc(struct device *dev, size_t size, gfp_t gfp);参数:dev --> 需要申请内存的设备size --> 申请的内存大...
2020-04-14 15:58:07
643
原创 Android Kernel 等待队列waitqueue --NFC PN54x的处理过程
等待队列中存放的是被阻塞的进程。而唤醒进程,就是从等待队列中把进程放到就绪列表中去等待运行。1.声明等待队列:2.probe中初始化等待队列:3.等待队列中去睡眠,其中又分为有条件睡眠和无条件睡眠,一般使用有条件睡眠:有条件休眠函数:wait_event_interruptible(queue, condition)当condition为true(BOOL值)时,立即返回;否则让进程进...
2020-04-13 15:22:53
323
原创 dtsi属性
各符号含义如下:/ --> 表示根节点@ --> 指定设备地址& --> 引用节点: --> 冒号前的是节点别名label,一般是以&label方式使用。如上面vdd_gpu所示。, --> 都好可用于属性名称中,如上面compatible属性可知,以逗号分隔开。# --> 表示reg属性的格式,比如address-cells...
2020-04-08 19:15:10
1476
原创 Flash烧录工具SuperPro Model610P 操作记录
a. 1个电源adapter供电,1根USB数据线插入到PC的USB端口1个烧录座子,以Flash WINBOND W25Q32FW芯片为例,实物安放如下:b.操作软件:1.快捷键图标:2.界面,主要操作步骤:文件打开,选择器件以及Auto:a.打开文件:b.器件选择,可选多个厂商芯片配置。...
2020-03-26 10:11:53
2648
原创 RK3399PRO的字符spi设备驱动
Linux 4.4内核SPI驱动特性:①默认采用摩托罗拉SPI协议②支持8位和16位③软件可编程时钟频率和传输速率高达50MHz④支持SPI 4中传输模式的配置⑤每个SPI控制器支持一个到两个片选1. 首先申请设备号(动态):int alloc_chrdev_region(dev_t *dev,unsigned baseminor,unsigned count,const cha...
2020-03-16 11:55:02
940
原创 RK3399Pro ueventd.rockchip.rc
1. 该文件位于 rk3399pro\device\rockchip\common\ueventd.rockchip.rc, rc只是一个资源文件,类似于xml,以gps为例:/dev/ttyS1 0660 gps gps分别对应设备节点,设备权限,设备所有者,设备所有者所在组。2. 在它被解析使用前,还有一个init.rc文件会用到,位于rk3399pro\sys...
2020-02-28 11:48:07
965
原创 RK3399Pro DTSI PIN-CTRL
1. 类似IOMUX的如下配置含义: i2c3_gpio: i2c3_gpio { rockchip,pins = <4 17 RK_FUNC_GPIO &pcfg_pull_none>, ...
2020-02-13 11:20:05
1422
原创 Windows orb-slam2 单目测试工程
VS2015 + Opencv2.4.13.6-vc14 + cmake 3.8.0+logi HD720P+ Intel Core i7-8700@3.2GHz 3.19GHz RAM 8G 64Bit1.有现成依赖库的,打开翻墙软件下载快.a. opencv:下载OpenCV库,直接解压安装在D:\ORB-SLAM2\Thirdparty目录下。b.eigen库: 下载地址,同样解...
2019-12-26 21:19:10
362
原创 STM32F4 CubeMX Flash读写代码片段
//.h#include <stdint.h>#include "stm32f4xx.h"#define ADDR_FLASH_SECTOR_0 ((uint32_t)0x08000000) /* Base @ of Sector 0, 16 Kbyte */#define ADDR_FLASH_SECTOR_1 ((uint32_t)0x08004000...
2019-12-26 18:48:39
1207
1
原创 STM32F4xx添加浮点运算解算IMU(CubeMX + μVision 5.14)
1.在IMU四元数解算文件内添加 #include <arm_math.h>。2.支持更为快速的sin/cos三角函数运算,需添加以下三个文件:①arm_cos_f32.c,arm_sin_f32.c位于:Drivers\CMSIS\DSP\Source\FastMathFunctions\②arm_cortexM4lf_math.lib位于:Dr...
2019-12-20 15:18:19
1503
原创 tensorflow pip3国内源配置
1.mkdir ~/.pip2.vim ~/.pip/pip.conf[global]timeout=6000index-url=https://pypi.douban.com/simpletrusted-host=pypi.douban.com3.pip3 install tensorflow
2019-12-06 11:54:25
378
原创 wifi adb log打印笔记留存
1. 开发板WiFi与带无线网卡的PC机(笔记本)连上同一个局域网2.开发板U口插上带无线网卡的PC(笔记本)的U口,使用adb启动并设置tcpip端口3.拔掉USB线,在PC(笔记本)端通过WIFI使用adb连接。偶尔第一次是没法连上的,可使用adb kill-server杀一下,再连即可。4.转到使用Powershell tee来打印logcatadb l...
2019-11-18 14:07:23
286
原创 结构体与链表进行任意长度数字相加Test
#include "stdafx.h"#include <iostream>#include <string>#include <cstdlib>#include <string.h>#include <stdlib.h>#include <conio.h>using namespace std;//ad...
2019-11-05 18:12:16
182
原创 STM32CubeMX V5.4.0 在 IAR EW V7.70中运行报错
报错如下:Error[Pe018]: expected a ")" D:\STM32\ARPro\Drivers\CMSIS\Include\mpu_armv7.h 246 Error[Pe020]: identifier "len" is undefined D:\STM32\ARPro\Drivers\CMSIS\Include\mpu_armv7.h 249 Error[Pe020...
2019-10-30 11:57:30
1592
原创 Source Insight添加 注释 宏
1.Project--->Open Project... 打开Base工程。2.选中Base工程的文件Utils.em,将下面代码Copy进去。macro MultiLineComment() { hwnd = GetCurrentWnd() selection = GetWndSel(hwnd) LnFirst = GetWndSelLn...
2019-10-25 09:20:48
996
原创 TypeC 基础
type-C接口形式:PD最大支持20V,5A 100W功率,通过CC线来协商Power供给。由于Type-C的扩展功能(SBU1/SBU2),大部分配件诸如耳机,视频接口,debug接口等都可以实现兼容设计。在USB2.0端口,USB根据输出传输方向定义HOST/Device/OTG三种角色,其中OTG即可作为HOST也可作为Device,在Type-C中也是类似定义,只...
2019-10-24 11:39:54
3740
原创 C# internal
总共有四种访问修饰符public protected internal private,可指定以下五个可访问级别:1. public 访问不受限制2. protected 访问仅限于包含类或从包含类派生出来的类型3. internal 访问仅限于当前程序集4. protected internal 访问限制到当前程序集或从包含派生的类型5. private 访问仅限于包含类型inte...
2019-10-15 11:27:51
11162
glfw-3.3.2.bin.WIN64.zip
2020-04-21
套件php 集成最新的Apache+Nginx+LightTPD+PHP+MySQL+phpMyAdmin+Zend Optimizer+Zend Loader
2020-03-12
客户端断开服务端就会产生异常并断开
2018-01-08
TA创建的收藏夹 TA关注的收藏夹
TA关注的人