自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(144)
  • 资源 (1)
  • 收藏
  • 关注

原创 RockChip Android12 Launcher3启动与布局分析

Launcher本质上是一个系统应用,当Android启动到最后时需要一个用来显示应用的应用程序,这个应用程序就是Launcher,它是被ActivityManagerService启动。

2024-06-25 18:22:25 188 2

原创 RockChip Android12 System之MultipleUsers

System中的MultipleUsers不同于其他Preference采用system_dashboard_fragment.xml文件进行加载,而是采用自身独立的xml文件user_settings.xml加载。

2024-06-19 14:07:28 224

原创 RockChip Android12 System之Date&time

本文将针对Android12 Settings二级菜单System中的Date&time进行说明。

2024-06-18 18:10:09 164

原创 RockChip Android12 Settings二级菜单

本文将针对Android12 Settings的二级菜单System进行说明。

2024-06-18 16:55:20 149

原创 RockChip Android12 Settings一级菜单

在之前的文章中对Android8.1 Settings的流程进行了说明,本章将针对Android12 Settings一级菜单的加载逻辑进行详细说明,Settings版本之间的差异不是很大,有兴趣的同学可自行学习,本文不在做赘述。

2024-06-17 17:47:37 157 1

原创 RockChip Android8.1 EthernetService分析

本篇文章将围绕RK Android8.1 SDK对Ethernet做一次框架分析,包含Framework层和APP层。

2024-05-14 15:18:38 78

原创 RockChip Android13 添加/删除ListPreference方法

本章将讲述在Android添加或删除ListPreference的几种方法,并以EthernetSettingsActivity为例,添加/删除一项ListPreference:默认效果图:添加后效果图:在Activity类中使用addPreferencesFromResource()方法解析XML文件并添加Preference资源到PreferenceScreen中,因此我们可以直接在xml文件中静态添加Preference资源。 (1)静态设置ListPreference通过在ethernet

2024-05-09 17:14:52 152

原创 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 607

原创 RockChip Android13 NFC SL6320移植

环境:RK3568 Android13。

2024-05-06 18:02:39 226

原创 Rockchip Android13 Vold(三):App层

通过前面两章,Vold框架存储设备挂载事件已经梳理了Native和Framework层的程序执行流程,接下来就开始梳理存储设备挂载事件在App层的程序执行流程。

2024-04-13 21:15:01 195

原创 Rockchip Android13 Vold(二):Framework层

书接上回,在上一章Native层分析vold框架的最后我们使用setState接口将doMount的返回结果通过binder机制调用了Framework层StorageManagerService的onVolumeStateChanged接口,所以本章将围绕vold框架在Framework层的代码进行梳理。

2024-04-13 19:23:26 170

原创 Rockchip Android13 Vold(一):Native层

Vold全称Volume Daemon是用于管理存储类设备的守护进程,负责接收驱动层设备挂载和卸载消息以及与Framework层之间的通信。Vold作为一个守护进程位于Android的Native Daemons层。

2024-04-12 17:45:17 264 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 172

原创 RockChip Android13 修改U盘挂载目录

将stableName修改为需求路径比如usbdiskX。环境:Android13。

2024-03-14 15:32:52 353

原创 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 351

原创 U-Boot MMC:env之partitions

env地址取自default_environment:uboot_dev/include/env_default.h。

2024-01-05 16:12:25 474

原创 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 260

原创 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 205

原创 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 345

原创 Rockchip Clock

本章节所指的时钟是给SOC各个组件提供时钟的树状框架,而非内核使用的时钟。和其他模块一样,CLOCK也有框架,用以适配不同的平台。适配层之上是客户代码和接口,也就是各模块(如需要时钟信号的外设)的驱动。适配层之下是具体的SOC的时钟操作细节。

2023-11-21 16:01:47 137

原创 Linux Alsa声卡驱动(2):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 344

原创 NanoPC-T4 RK3399:DTS之io-domain,FAN

之后所有改动均是基于rk3399-evb.dts修改以满足NanoPC-T4功能正常。NanoPC-T4开发板上有一片散热风扇,本章将讲述使风扇正常工作起来的多种方法。

2023-10-24 18:33:58 557

原创 NanoPC-T4 RK3399:DTS之EMMC,PMIC,GMAC

之后所有改动均是基于rk3399-evb.dts修改以满足NanoPC-T4功能正常。

2023-10-19 18:38:42 352

原创 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 195

原创 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 212

原创 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 443

原创 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 193

原创 Linux Kernel:调度器scheduler

内核针对若干连接起来的进程任务能公平地共享CPU时间,创造并行执行的错觉,并且需要考虑到不同任务的优先级问题提供了一种方法即schedule(调度器),调度器的一般原理是,按所能分配的计算能力,向系统中的每个进程提供最大的公正性,例如有N个进程,那么每个进程会得到总计算能力的1/N,所有的进程在物理上真实的并行执行。每次调用调度器时,都会挑选具有最高等待时间的进程,这些按照等待时间排队的结构称之为就绪队列。

2023-09-11 16:08:24 311

原创 Linux Kernel:syscall之fork与exec

上一节我们提到了进程的产生方式fork,exec与clone,本节将详细分析fork和exec族系统调用的具体实现。通常这些调用不是由应用程序直接发出的,而是通过一个中间层调用,即负责与内核通信的C标准库。定义了预处理常数,将所有系统调用的描述符关联到符号常数,诸如__NR_chdir,__NR_fchmod等。定义了内核内部调用系统调用所有的函数。

2023-08-29 11:17:40 383

原创 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 263

原创 Linux Kernel:栈指针sp与进程切换

在上一节《Linux Kernel:thread_info与task_struct》末尾我们分析出指向task_struct是sp_el0堆栈指针。本章将围sp以及与它密切关联的系统调用进行分析。

2023-07-07 15:45:01 488

原创 Linux Kernel:目录

1、Linux Kernel:thread_info与task_struct2、Linux Kernel:栈指针sp与进程切换

2023-06-13 09:18:40 881

原创 Linux Kernel:thread_info与task_struct

其他Exception level下,可以使用SP_EL0或者当前Exception level所对应的SP_ELn寄存器;具体使用SP_EL0还是SP_EL1是由PSTATE.SP决定,对应的寄存器是Spsel。若Spsel==0,那么强制使用SP_EL0,否则使用用SP_ELn。,每当切换开始时首先需要做的是保存当前进程上下文到内核栈中,准备next进程环境之后切到next进程堆栈。内核栈中的最低地址中,相较之前的版本避免了栈溢出的问题。用来描述进程的通用数据,而针对不同架构的数据则存储在。

2023-06-12 17:42:48 866

原创 RockChip:Boot Mode(二)

每当烧录完misc.img文件后,设备都会默认进入recovery模式,之后重置misc分区数据为。在无usb接入情况下,通过按压volume-up键再上电进入recovery模式。由于loader mode的优先级高于recovery模式,故需要断开usb连接。env_set("reboot_mode", "recovery-key"),设置。设备进入normal系统后通过reboot带参数指令将其传递给重启uboot阶段的。监测usb的接入情况进入loader模式或者recovery模式。

2023-06-06 15:29:52 652

原创 RockChip:Boot Mode(一)

平台介绍:RK3399,U-Boot 2017.09(next-dev版本),Kernel 4.4.194Uboot在启动阶段会根据cmd,misc以及key键入情况设置不同的Boot Mode,从而引导不同Boot。/**/常见boot模式:None,watchdog,panic,recovery,normal,loader,bootloader等。recovery模式又可细分不同触发条件:recovery (misc),recovery (cmd),recovery (key)/**/

2023-06-05 17:58:50 1111

原创 RK3588-EDGE Ethernet驱动(二)

根据RK3588规格其具备双路原生千兆以太网接口即RGMII。snps,tso;queue0 {};queue1 {};queue0 {};queue1 {};snps,tso;queue0 {};queue1 {};queue0 {};queue1 {};

2023-05-29 20:29:25 591

原创 RK3588-EDGE Ethernet驱动(一)

以太网从硬件层来讲大致可分为三部分:CPU,MAC,PHY。上述三部分有以下几种组成方式,而非封装在一颗IC种。CPU内部集成了MAC和PHY,难度较高CPU内部集成MAC,PHY采用独立芯片(主流方案)CPU不集成MAC和PHY,MAC和PHY采用独立芯片或者集成芯片(高端采用)其中常说的GMAC通常是由MAC跟PHY组成,MAC位于数据链路层,而PHY位于物理层。物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和电路等,并向数据链路层设备提供标准接口。

2023-05-26 18:08:03 1259

原创 NanoPC-T4 RK3399:(三)Kernel编译框架

位置:cache/sources/linux-mainline/d60c95efffe84428e3611431bf688f50bfc13f4e。位置:output/debs/linux-source-current-media_23.02.2_all.deb。(3)创建打补丁之后的源码包。(2)配置config。(4)编译kernel。

2023-04-13 17:31:37 423 1

原创 NanoPC-T4 RK3399:(二)U-boot编译框架

目标文件:output/debs/linux-u-boot-current-nanopct4_23.02.2_arm64.deb。目标文件:idbloader.bin trust.bin uboot.img。位置:cache/sources/u-boot/v2022.04。位置:cache/sources/rkbin-tools。(2)配置config。

2023-04-13 14:42:40 203

原创 NanoPC-T4 RK3399:(一)平台与框架介绍

NanoPC-T4不仅是世界上最小的全功能接口RK3399一体化主板, 而且是一款完全开源的高性能计算平台。它的尺寸只有100x64mm,标配4GB LPDDR3内存和16GB闪存, 板载2.4G & 5G双频WiFi模组, 带有标准完整的M.2 PCIe接口, 可直接安装使用NVME SSD高速固态硬盘。NanoPC-T4支持运行Android 7.1和Lubuntu Desktop两种系统,它们均带有GPU和VPU加速处理。

2023-04-12 16:14:07 878

TC358764_5_774_5XBG初始化工具

TC358764_5_774_5XBG初始化工具

2021-03-19

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除