![](https://img-blog.csdnimg.cn/20190918140145169.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
rk3399
rk3399
qq_34738528
这个作者很懒,什么都没留下…
展开
-
1.2.3-1.2.8内核子系统-pinctrl子系统
1.pinctrl子系统之框架组成Pinctrl整个驱动模块可以分成4个部分:pinctrl api : pinctrl提供给上层用户调用的接口pinctrl common framework : pinctr1提供给上层用户调用的接口. pinctrl driver :平台需要实现的驱动board configuration :设备 pin 配置信息,格式device tree source或者sys_config如上图可知: Pinctrl framework主要处理pinstate...原创 2021-09-24 15:11:35 · 119 阅读 · 0 评论 -
1.2.1-1.2.1内核子系统-GPIO子系统
1.linux子系统框架在Linux中,GPIO子系统大致分为3层:GPIO硬件GPIO硬件驱动层抽象驱动框架从上到下为:2.结构体抽象1、GPIO描述符gpio_desc在Linux 中,GPIo驱动框架是在gpiolib.c中实现的。对于每一个GPIo引脚,抽象了一个描述符gpio_desc :目录: kernel-4.4\drivers \gpiolgpiolib.hstruct gpio_desc { struct gpio_devic...原创 2021-09-24 11:28:23 · 103 阅读 · 0 评论 -
1.11.2、低功耗-Runtime Power Management框架分析
Linux的RPM ( Runtime power management)框架,是一套运行时电源管理框架,为系统中所有的device提供了一种运行时电源管理的机制。其目的很明确—减少系统运行时的功耗;内核文档链接文件目录:apps_proc\kernel\include\linux \pm.hRPM状态/** * Device run-time power management status. * * These status labels are used internally...原创 2021-09-23 11:31:05 · 686 阅读 · 0 评论 -
1.11.4、低功耗-休眠唤醒流程
向/sys/ power/state写入命令后再到唤醒,将进行以下流程:源码分析原创 2021-09-23 11:22:41 · 115 阅读 · 0 评论 -
1.11.3、低功耗-休眠唤醒基本概念
一、休眠唤醒基本概念PM相关的代码路径如下:.linux_soruce/kernel/power/main.c. linux_soruce/kernel/power/suspend.c.linux_source/driver/base/power/main.c可以看到linux中,休眠主要分为以下三个主要步骤:1.冻结用户态进程和内核态任务;2.调用注册的设备的suspend 的回调函数;3.按照注册顺序休眠核心设备和使CPU进入休眠态。其中冻结进程是内核把进程列表中所有的进程的状态都原创 2021-09-23 11:20:15 · 402 阅读 · 0 评论 -
1.11.1、低功耗-wakeup events framework
1、SYSFS接口终端目录:/sys/kernel/debug/wakeup_sources调试可以参考:休眠调试篇为了方便查看系统的wakeup sources,此文件记录了系统的唤醒源的详细信息。name active_count event_count wakeup_count expire_count active_since total_time max_time .原创 2021-09-23 11:14:26 · 175 阅读 · 0 评论 -
1.9.3内核调试-休眠唤醒standby调试指南
休眠状态指的是一种系统低功耗运行状态。在此状态下,各种支持休眠模式的外围设备也都全部进入休眠模式,CPU挂起,所有用户态应用程序和内核态进程全部被冻结,内存处于自刷新模式。系统处于休眠状态会屏蔽所有除唤醒之外的所有命令,直到系统被某种原因唤醒才会解除此种状态。1、休眠锁节点/sys/kernel/debug/wakeup_sources打印出系统的锁,并可以看到其当前所处的状态:新增操作释放2、休眠唤醒次数查看节点/sys/kernel/debug/...原创 2021-09-23 10:53:38 · 378 阅读 · 0 评论 -
1.1.17、系统修改-Android系统永不休眠修改步骤
方式1frameworks/base/packages/SettingsProvider/res/values/defaults.xml<resources> <bool name="def_dim_screen">true</bool> <integer name="def_screen_off_timeout">2147483647</integer> <integer name="def_sleep..原创 2021-09-22 17:51:25 · 414 阅读 · 0 评论 -
2.12、系统修改-隐藏安卓系统的导航栏和状态栏
1.导航栏与状态栏首先看一下导航栏和状态栏位置:最上面是状态栏statusBar最下面是导航栏`'NavagationBar一、隐藏导航栏目录:frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java注释掉内容: // For small-screen devices (read: phones) that lack hardware na.原创 2021-09-22 17:17:13 · 888 阅读 · 0 评论 -
1.1.4内核入门—指针
1.指针对于内存,我们可以简单地认为它就是大小相同、连续排布的格子,每一个格子的大小为一字节。为了更方便地找到某一个格子,我们通过对内存进行编号,通过编号来找到某一个具体的内存格子。这样的编号通常称之为内存地址,如果程序想要获取某一块内存存放的数据,必须通过内存地址定位,再取出对应内存的数据。 这样的编号通常称之为内存地址,如果程序想要获取某一块内存存放的数据,必须通过内存地址定位,再取出对应内存的数据.一个指针变量存储着另一块内存的起始地址,相较于直接寻址的方式,如果想要通过一个指针获取指...原创 2021-09-22 10:47:08 · 106 阅读 · 0 评论 -
2.1.7-2.1.8、系统修改-安卓系统去掉ADB打开时的确认框去除USB权限弹窗
Android默认开启USB调试且不弹授权对话框如下图所示,修改persist.sys.usb.config=mtp,adb,修改ro.adb.secure=0这里修改的是device目录下对应厂家和产品的脚本,如果需要统一修改可以去build/core/main.mk中对应修改。修改ro.adb.secure=1,就会打开USB调试确认弹框以下是参考参考RK3399去除USB权限弹窗现象:方法文件目录:frameworks/base/packages/..原创 2021-09-18 09:55:18 · 1381 阅读 · 0 评论 -
2.1.3系统修改-开机动画代码的添加
仅供常考开机动画添加frameworks/base/cmds/bootanimation/BootAnimation.hframeworks/base/cmds/bootanimation/BootAnimation.cpp1、threadLoop修改用来显示第三个开机画面的线程的初始化工作就执行完成后接下来,就会执行这个线程的主体函数,即BootAnimation类的成员函数threadLoop 。bool BootAnimation::threadLoop()...原创 2021-09-15 17:56:28 · 175 阅读 · 0 评论 -
1.1.3、内核入门-从内核的角度看外设芯片的驱动
1.芯片基本功能模块在驱动开发过程中我们最常接触的就是寄存器。内核与硬件联系紧密,但它本身属于软件,可以说是与硬件联系最紧密的软件。作为软件,与硬件沟通很多情况下都是通过寄存器实现的。寄存器按照功能不同一般可以分为三类:控制寄存器:可写,用来控制芯片的行为、工作方式等;。状态寄存器:可读,用来反映芯片当前的统计、异常等状态;数据寄存器:数据寄存器,可读,读取它们可以获得芯片产生的数据;每一份芯片数据手册中都应该有完整的寄存器列表和它们的描述,这是人们开发驱动过程中关心的重点。2.复位原创 2021-09-15 17:34:53 · 288 阅读 · 0 评论 -
1.1.2内核入门-高效的阅读Linux内核设备驱动
内核开发在很大程度上并不是重新造“轮子"的过程,而是深入理解并尽量复用现有的内核设计框架,然后参照相似的功能模块去添加或改写某项需要的功能。在对内核整体框架以及某些子系统融会贯通以后,我们才有可能站在巨人的肩膀上去改进框架本身,实现自主创新。如果过分强调不必要的“自主创新”,可能会让内核的可维护性变差,最终结果反而得不偿失。1.设备驱动入口模块的入口函数一般会使用module_init(modname_init)进行声明。#define module_init(x) __ini..原创 2021-09-15 17:09:28 · 103 阅读 · 0 评论 -
1.1.1内核入门-通过sysfs清楚了解设备的系统状况
1.sysfs的目的通过sysfs下面的文件和目录清楚的了解跑linux的嵌入式设备的系统状况2.sysfs目录介绍sysfs把连接在系统上的设备和总线组织成为一个分级的文件,他们可以由用户空间存取,向用户空间导出内核的数据结构以及他们的属性。sysfs的一个目的就是展示设备驱动模型中各组件的层次关系。其目录有:3.sysfs中要素的关系sysfs提供一种机制,是的可以显示的描述内核对象,对象属性及对象间关系。sysfs有两组接口,一组针对内核,用于将设备映射到文...原创 2021-09-15 16:00:11 · 132 阅读 · 0 评论 -
2.1.2系统修改-修改安卓系统的浏览器默认主页
android7.1:可以参考一下packages/apps/Browser2/res/values/strings.xml<!-- The default homepage. --> <string name="homepage_base" translatable="false"> https://www.google.com/webhp?client={CID}&source=android-home</string> 修改原创 2021-09-15 14:59:43 · 306 阅读 · 0 评论 -
2.1.1系统修改-去掉顶部谷歌搜索栏
源码删除:QuickSearchBox源码:packages/apps/QuickSearchBox正确改法:不同android版本改动不一样,所以可以搜索一下build/target/product$ grep "QuickSearchBox" . -nr例如android7.1发现还是有,这说明不够干净文件:packages/apps/Launcher3/src/com/android/launcher3/Launcher.java--- a/src/...原创 2021-09-15 13:40:29 · 267 阅读 · 0 评论 -
1.RK3399平台学习前的一些简介
1.需要具备的基础知识和工具C++面向对象的思想:linux内核设备管理的核心思想就是面向对象思想,设备管理的基石是Kobject(对象)结构体,故我们只需要了解这个对象的思想即可2.学习顺序1.linux应用开发寄出篇:内核驱动开发,首先要了解各个驱动自己的属性和方法;2.内核设备树:掌握内核硬件HW配置;3.内核调试:掌握内核的调试手段;4.内核入门:了解内核中的一些基础知识;5.内核子系统篇:子系统相关学习;6.内核驱动外设篇:实战3.常用工具1.远..原创 2021-09-15 11:08:09 · 106 阅读 · 0 评论 -
Android Ninja编译系统介绍
Platform: rk3399OS: Android 7.1Kernel: v4.4.83Android7.0以后开始使用Ninja替代GNU make编译系统。概念:Ninja:用于提高编译速度的编译系统。可执行文件位于 prebuilts/ninja/linux-x86/ninjaKati:用于把Makefiel转成成ninja file,自身没有编译能力,转换后使用Ninja编译。源代码位于: build/kati可执行文件会被生成到: out/host/li...原创 2020-06-17 14:24:37 · 889 阅读 · 0 评论 -
3399接口介绍
接口使用king3399镜像烧写King3399 开发板安装示意图屏文档没有及时更新7寸屏淘宝上:7寸1024x600摄像头1300W 摄像头 OV13850 MIPI(MIPI 接口) 同时接 2 路摄像头(前后切换)接 4G 模块接 4G 卡、TF 卡喇叭 SPK(标有 SPK)调试串口(TTL)、OTG 烧写(注:单独升级可不接串口)...原创 2020-06-15 15:22:38 · 1345 阅读 · 0 评论