- 博客(154)
- 资源 (1)
- 收藏
- 关注
原创 Android SeLinux:设置led设备节点读写权限
在Android中由于Selinux的存在,所有应用去调用底层设备节点时都需要授权,本章将围绕如何在应用中直接读写底层设备节点并为其配置读写权限进行简单说明。
2025-03-29 10:49:37
106
原创 RK3568专题(3)Audio
在早期博主写过几篇关于声卡驱动的文章,可供参考。本文将围绕RK3568 Android14平台对Audio进行说明,主要体现不同硬件的配置,和Android部分的差异。Linux Alsa声卡驱动(1):简介_linux声卡驱动调试-优快云博客Linux Alsa声卡驱动(2):代码分析_linxu alsa 声卡 编程-优快云博客Linux Alsa声卡驱动(3):Machine驱动_linux声卡驱动-优快云博客。
2025-03-26 11:30:28
21
原创 Mediatek Android13 移除Hotseat
Hotseat是位于Android系统屏幕最下方的一种布局,会放置一些常用的APP,但是在定制开发中,会将其取消以达到全屏的效果。本文将讲述Android定制需求开发中移除Hotseat的几种方法。
2025-03-21 17:06:39
140
原创 Mediatek Android13 增加Ethernet配置功能
在MTK Android13的Setting中默认是没有Ethernet配置功能,如DHCP和StaticIP。因此我们需要再Setting中增加Ethernet配置选项。Ethernet相关的文章之前写过一篇,不过是针对Android8.1的,虽然与Android13框架差距有点大,但可以略作参考,主要是将Framework层的内容移动至packages/modules/Connectivity中。
2025-01-11 09:53:43
317
原创 Mediatek Android13 ROM定制
每个密钥对包含一个私钥(.pk8)和一个公钥(.x509.pem)。私钥用于对APK进行签名,而公钥用于验证签名的有效性。在Android系统构建过程中,可以根据需要选择不同的密钥对APK进行签名,以满足不同的安全和权限需求。
2024-12-31 18:37:36
388
原创 RK3568专题(2)GMAC
关于RockChip系列CPU的GMAC配置说明在之前的多个文章中均有提及,本次不在追述,只对需要注意的问题点和RGMIIDelayline进行说明。NanoPC-T4 RK3399:DTS之EMMC,PMIC,GMAC -优快云博客RK3588-EDGE Ethernet驱动(一)-优快云博客RK3588-EDGE Ethernet驱动(二)-优快云博客。
2024-11-11 15:09:14
262
1
原创 RK3568专题(1)电源管理
本章将围绕RK3568平台两种商业方案的电源设计和管理进行说明,对应的模块包含powervdd_cpupmic和io-domain其中pmic有商显方案rk809和平板方案中带充电功能的rk817。
2024-11-11 10:39:48
260
原创 OpenHarmony(2)内核态层
本章摘录自OpenHarmony开源社区,为了方便自己以后查阅。如需了解详细内容可自行前往阅读。OpenHarmony=OpenHarmony内核态层+OpenHarmony用户态层其中OpenHarmony内核层就是上图的紫色部分,可以看到,它主要由内核本身(如Linux Kernel,LiteOS),和一些运行在内核态的一些特性组成,比如HDF等。而OpenHarmony用户态层,在上图,就是紫色之外的部分。可以看到,由下往上看,它主要由系统服务层,框架层,应用层组成。
2024-10-24 17:08:35
329
原创 OpenHarmony(1)开发环境搭建
OpenHarmony是由开放原子开源基金会(OpenAtom Foundation)孵化及运营的开源项目,目标是面向全场景、全连接、全智能时代,基于开源的方式,搭建一个智能终端设备操作系统的框架和平台,促进万物互联产业的繁荣发展。编译所生成的文件都归档在out/{device_name}/目录下,结果镜像输出在out/{device_name}/packages/phone/images/ 目录下。1) 通过repo + ssh 下载(需注册公钥,请参考码云帮助中心)。(1)注册gitee,添加公钥。
2024-10-23 10:06:23
1174
原创 RockChip Android12 Launcher3启动与布局分析
Launcher本质上是一个系统应用,当Android启动到最后时需要一个用来显示应用的应用程序,这个应用程序就是Launcher,它是被ActivityManagerService启动。
2024-06-25 18:22:25
392
2
原创 RockChip Android12 System之MultipleUsers
System中的MultipleUsers不同于其他Preference采用system_dashboard_fragment.xml文件进行加载,而是采用自身独立的xml文件user_settings.xml加载。
2024-06-19 14:07:28
306
原创 RockChip Android12 System之Date&time
本文将针对Android12 Settings二级菜单System中的Date&time进行说明。
2024-06-18 18:10:09
241
原创 RockChip Android12 Settings一级菜单
在之前的文章中对Android8.1 Settings的流程进行了说明,本章将针对Android12 Settings一级菜单的加载逻辑进行详细说明,Settings版本之间的差异不是很大,有兴趣的同学可自行学习,本文不在做赘述。
2024-06-17 17:47:37
337
1
原创 RockChip Android8.1 EthernetService分析
本篇文章将围绕RK Android8.1 SDK对Ethernet做一次框架分析,包含Framework层和APP层。
2024-05-14 15:18:38
184
原创 RockChip Android13 添加/删除ListPreference方法
本章将讲述在Android添加或删除ListPreference的几种方法,并以EthernetSettingsActivity为例,添加/删除一项ListPreference:默认效果图:添加后效果图:在Activity类中使用addPreferencesFromResource()方法解析XML文件并添加Preference资源到PreferenceScreen中,因此我们可以直接在xml文件中静态添加Preference资源。 (1)静态设置ListPreference通过在ethernet
2024-05-09 17:14:52
257
原创 RockChip Uboot/Kernel开机LOGO和Android开机动画
uboot和kernel阶段的logo分别为开机显示的第一张和第二张图片,可通过替换logo文件,重新编译内核的方法修改uboot和kernel开机logo,编译后的logo文件位于boot.img中。uboot logo文件:kernel/logo.bmpkernel logo文件:kernel/logo_kernel.bmp说明:logo图片大小目前只支持8M以内的8,16,24,32位bmp格式图片(来源RK文档)
2024-05-08 16:07:53
1148
原创 Rockchip Android13 Vold(三):App层
通过前面两章,Vold框架存储设备挂载事件已经梳理了Native和Framework层的程序执行流程,接下来就开始梳理存储设备挂载事件在App层的程序执行流程。
2024-04-13 21:15:01
287
原创 Rockchip Android13 Vold(二):Framework层
书接上回,在上一章Native层分析vold框架的最后我们使用setState接口将doMount的返回结果通过binder机制调用了Framework层StorageManagerService的onVolumeStateChanged接口,所以本章将围绕vold框架在Framework层的代码进行梳理。
2024-04-13 19:23:26
289
原创 Rockchip Android13 Vold(一):Native层
Vold全称Volume Daemon是用于管理存储类设备的守护进程,负责接收驱动层设备挂载和卸载消息以及与Framework层之间的通信。Vold作为一个守护进程位于Android的Native Daemons层。
2024-04-12 17:45:17
485
1
原创 RockChip Android8.1 Settings
比较当前Activity类名是否与Settings,用于选择要要显示的layout,对于Settings的主界面mIsShowingDashboard为true即选择R.layout.settings_main_dashboard:第一个FrameLayout为显示顶部的搜索栏,第二个FrameLayout显示主要内容(一级菜单)step3:main_content是主菜单R.layout.settings_main_dashboard.xml的FrameLayout id。设置获取到的category。
2024-03-29 18:54:20
269
原创 RockChip DRM Display Driver
DRM(Direct Rendering Manager)直接渲染管理,buffer分配,帧缓冲。对应userspace库位libdrm,libdrm库提供了一系列友好的控制封装,使用户可以方便的进行显示的控制和buffer申请。DRM的设备节点为"/dev/dri/cardX",X为0~15的数值,默认使用card0。
2024-01-25 10:12:14
574
原创 U-Boot MMC:env之partitions
env地址取自default_environment:uboot_dev/include/env_default.h。
2024-01-05 16:12:25
600
原创 U-Boot DM(一):CMDLINE宏
->>parse_stream_outer:u-boot/common/cli_hush.c 解析指令。-->>setup_file_in_str:u-boot/common/cli_hush.c 获取输入指令。-->>cmd_process:最终cmd调用接口。
2023-12-25 17:36:28
323
原创 Linux Camera Driver(3):DEBUG
RKISP驱动如果加载成功,会有video及media设备存在于/dev/目录下,系统中可能存在多个/dev/vidio设备,通过/sys可以查询到RKISP注册的video节点。buildroot配置编译:buildroot/configs/rockchip/camera.config。buildroot配置编译:buildroot/configs/rockchip/debug.config。i2cdetect -y -a 1:显示i2c1挂载点下面所以地址情况,UU代表有设备成功连接。
2023-12-06 10:58:41
276
原创 Linux Camera Driver(2):CIS设备注册(DTS)
endpoint配置,必须指定data-lanes,否则无法识别为mipi类型。endpoint配置,必须指定data-lanes,否则无法识别为mipi类型。dphy需要链接到csi host节点。节点,否则会导致收不到数据;数,否则会导致收不到数据;(1)sensor节点配置。(1)sensor节点配置。(2)port节点配置。接口,导致链路建立失败。(2)port节点配置。
2023-12-04 18:36:13
461
原创 Rockchip Clock
本章节所指的时钟是给SOC各个组件提供时钟的树状框架,而非内核使用的时钟。和其他模块一样,CLOCK也有框架,用以适配不同的平台。适配层之上是客户代码和接口,也就是各模块(如需要时钟信号的外设)的驱动。适配层之下是具体的SOC的时钟操作细节。
2023-11-21 16:01:47
279
原创 Linux Alsa声卡驱动(3):Machine驱动
Simple Card是ASoC通用的machine driver,可支持大部分标准声卡。驱动:kernel/sound/soc/generic/simple-card.c。示例:cpu dai为i2s0_8ch,codec dai为rkacdc_dig。示例:DAI工作与slave模式,CODEC工作与master模式。示例:mclk为采样率的512倍。示例:bclk,lrck同时反向。I2S-TDM控制器,走。示例:i2s标准格式。
2023-11-07 16:58:36
549
原创 NanoPC-T4 RK3399:DTS之io-domain,FAN
之后所有改动均是基于rk3399-evb.dts修改以满足NanoPC-T4功能正常。NanoPC-T4开发板上有一片散热风扇,本章将讲述使风扇正常工作起来的多种方法。
2023-10-24 18:33:58
657
原创 NanoPC-T4 RK3399:DTS之EMMC,PMIC,GMAC
之后所有改动均是基于rk3399-evb.dts修改以满足NanoPC-T4功能正常。
2023-10-19 18:38:42
534
原创 NanoPC-T4 RK3399:uboot cmd与boot加载
方法scan_dev_for_extlinux:找到/extlinux/extlinux.conf后调用boot_extlinux作为启动方式,在上节移植kernel时就是采用的这种方式,方法 scan_dev_for_scripts与scan_dev_for_efi不在展开讲述,都是查找加载类似的脚本来引导boot。将extlinux.conf文件读取到内存0x00500000并启动,通过如上流程,如果一切正常那么程序将会离开uboot阶段从而转入内核阶段。
2023-10-18 16:58:39
262
原创 NanoPC-T4 RK3399:移植Kernel和rootfs
创建缺失文件,拷贝交叉编译工具lib/lib64至_install对应lib/lib64中。创建boot目录,将之前编译好的Image与dtb文件拷贝至boot目录下;最终生成文件默认在_install中。5、创建rootfs.img。1、修改Makefile。2、修改Makefile。1、busybox方式。
2023-10-10 18:12:46
322
原创 NanoPC-T4 RK3399:移植U-Boot
2、如果启用了trust, loader1需要同时加载trust和u-boot,然后在安全模式(armv8中的EL3)下运行trust,在非安全模式(armv8中的EL2)下进行初始化并运行u-boot。3、对于trust(in trust.img或u-boot.itb),armv7只有一个tee.bin不管有没有它,armv8有bl31.elf和可选bl32。1、完全开源方式:使用 U-Boot TPL/SPL,源码可来自主流U-boot开源代码或瑞芯微SDK(在主流源码上做针对性优化)
2023-10-09 17:23:31
665
原创 Linux Kernel:scheduler之cfs
目录环境:一:前言二:数据结构三:CFS操作1、虚拟时钟(1)确定就绪队列的当前执行进程curr(2)获取主调度器就绪队列的实际时钟值now,该值在每个调度周期都会更新(3)计算当前和上一次更新负荷统计量时两次的时间差delta_exec(4)更新当前进程完全公平调度开始时间exec_start(5)更新当前进程在CPU上执行花费的物理时间sum_exec_runtime和虚拟时间vruntime(6)更新就绪队列上最小虚拟运行时间min_vruntime,必须小心保证该值是单调递增的完全公平调度的真正关键
2023-09-22 14:42:52
292
原创 Linux Kernel:调度器scheduler
内核针对若干连接起来的进程任务能公平地共享CPU时间,创造并行执行的错觉,并且需要考虑到不同任务的优先级问题提供了一种方法即schedule(调度器),调度器的一般原理是,按所能分配的计算能力,向系统中的每个进程提供最大的公正性,例如有N个进程,那么每个进程会得到总计算能力的1/N,所有的进程在物理上真实的并行执行。每次调用调度器时,都会挑选具有最高等待时间的进程,这些按照等待时间排队的结构称之为就绪队列。
2023-09-11 16:08:24
505
原创 Linux Kernel:syscall之fork与exec
上一节我们提到了进程的产生方式fork,exec与clone,本节将详细分析fork和exec族系统调用的具体实现。通常这些调用不是由应用程序直接发出的,而是通过一个中间层调用,即负责与内核通信的C标准库。定义了预处理常数,将所有系统调用的描述符关联到符号常数,诸如__NR_chdir,__NR_fchmod等。定义了内核内部调用系统调用所有的函数。
2023-08-29 11:17:40
502
原创 Linux Kernel:pid与namespace
Linux内核涉及进程和程序的所有算法都围绕Linux Kernel:thread_info与task_struct同时Linux提供了资源限制(resource limit, rlimit)机制,对进程使用系统资源施加某些限制,数据类型为:struct rlimit和struct rlimit64,该机制后续会新开一章详细分析。
2023-08-16 17:30:32
350
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人