- 博客(72)
- 收藏
- 关注
原创 RK3568 Android 11 驱动开发(五):串口驱动适配
本文讲述RK3568 Android 11 串口驱动的适配,包括TTL,RS232和RS485等。1、设备树pin引脚复用配置问题, 导致UART的串口驱动初始化失败;2、配置的uart的设备树节点是否status = "okay"的状态;3、RS232的测试中TX和RX的交叉问题导致收发都不起作用;4、测试工具波特率设置的不相同,导致的收发出现乱码或者根本收不到数据;5、RS485的测试中,在波特率匹配的情况下出现乱码的话,注意120R的匹配电阻;
2026-01-29 21:35:24
1279
原创 RK3568 Android 11 驱动开发(四):添加产品配置和内核设备树选择
本文描述了在RK3568 Android中创建新的产品配置文件和设备树选择。
2026-01-20 20:52:52
750
原创 Qemu-NUC980(十二):I2S Controller
本文描述了添加NUC980 I2S控制器功能代码的步骤,在描述过程中,为了清晰的描述添加框架步骤,部分代码的细节被删除,详细的代码,请参考文末的工程链接。本文概要描述了使用qemu模拟NUC980 I2S控制器的框架代码,详细的代码修改,请参考文末的工程连接。
2026-01-18 21:24:35
79
原创 Qemu-NUC980(十):I2C Controller
本文描述了添加980 I2C控制器功能代码的步骤,在描述过程中,为了清晰的描述添加框架步骤,部分代码的细节被删除,详细的代码,请参考文末的工程链接。本文概要描述了使用qemu模拟新塘980 I2C控制器的框架代码,详细的代码修改,请参考文末的工程连接。
2025-12-15 22:11:42
288
原创 Qemu-NUC980(九):Secure Digital Host Controller
本文描述了添加980 SDH控制器功能代码的步骤,在描述过程中,为了清晰的描述添加框架,部分代码的细节被删除,详细的代码,请参考文末的工程链接。本文概要描述了使用qemu模拟新塘980 sd控制器的框架代码,详细的代码修改,请参考文末的工程连接。
2025-11-22 19:48:54
394
原创 Qemu-NUC980(八):GPIO Controller
本文描述了添加980 GPIO控制器功能代码的步骤,在描述过程中,为了清晰的描述添加框架,部分代码的细节被删除,详细的代码,请参考文末的工程链接。本文描述了980平台上GPIO控制器的实现,这里主要描述的是框架代码,因为qemu模拟不了硬件的电气特性,只能模拟寄存器功能,因此GPIO的模拟中,仅仅添加了寄存器读写功能。
2025-10-18 18:21:39
219
原创 Qemu 嵌入式Linux驱动开发
本文主要描述作者自己搭建的一个嵌入式Linux驱动开发的环境,感兴趣的同学,可以参考文末的工程链接。目前qemu versitle平台支持pci和drm fb显示图形。未来为了便于学习Linux驱动。我会在基于versatile平台上定制各种外设接口的驱动.未来支持如下的驱动接口:1. Input I2C 触摸屏驱动;2. USB 2.0 Host和设备驱动;3. SPI设备驱动;4. IIO设备驱动;5. Audio设备驱动;
2025-10-13 23:38:53
331
原创 Qemu-NUC980(七):Timer定时器
本文描述了添加980 Timer定时器功能代码的步骤,在描述过程中,为了清晰的描述添加框架,部分代码的细节被删除,详细的代码,请参考文末的工程链接。
2025-10-10 19:50:27
218
原创 Qemu-NUC980(六):Advanced Interrupt Controller
本文描述了在qemu中添加NUC980中断控制器的步骤,在描述过程中,删除了很多实现的细节,感兴趣的同学可以查看文末的链接,阅读源码.本文描述了在qemu中实现NUC980中断控制器的代码步骤。
2025-09-21 19:25:43
370
原创 Qemu-NUC980(五):UART Interface Controller
本文描述了在qemu中添加NUC980串口控制器代码步骤。为了便于阅读方便,我在描述的过程中删除了代码的实现细节,目的是让大家能在5min以内可以快速掌握添加步骤,详细的代码,大家可在最后的工程链接的工程中去阅读源码。本文描述了在qemu添加NUC980 UART控制器的步骤。
2025-09-14 20:23:06
236
原创 Qemu-NUC980(四):SDRAM Interface Controller
本文描述了980 CPU下SDRAM 接口的qemu框架代码。为了便于阅读,我删除了部分代码,完整的代码请查看文后的工程链接。本文描述了添加980 CPU中SDRAM Interface Controller的qemu框架代码的添加步骤,在描述过程中,删除了部分代码。
2025-09-06 19:44:08
266
原创 Qemu-NUC980(三):system Manager
本文描述了NUC980 System Manager的控制的qemu模拟实现。本文描述了NUC980芯片中的system Manager控制器寄存器读写模拟框架。
2025-09-01 19:14:46
332
原创 Qemu-NUC980(二):时钟clock代码添加
本文描述了在qemu下模拟实现时钟框架的代码,在讲述过程中,为了便于阅读,删减了完成代码,感兴趣的同学可以去文末链接,查看工程链接。本文主要讲述的模拟980的时钟的框架步骤,不细节上讲述每一个实现的原理。本文描述了980时钟的模拟实现,在qemu模拟中,只能模拟寄存器的功能,不能模拟时序特性。
2025-08-02 17:48:12
325
原创 Qemu-NUC980(一):SOC框架代码添加
从这篇博文开始,作者开始连载NUC980 arm的qemu仿真实现,实现Nuc980 CPU上的大部分控制器的实现,并同时使用FreeRTOS和linux系统来验证qemu nuc980的仿真结果。本文主要描述了nuc980的qemu soc框架代码的添加,感兴趣的同学可以在ubuntu 20.04系统上进行下载和编译验证。
2025-07-20 12:45:06
408
原创 04-Linux驱动模块的自动加载
上一节,我们讲述了Linux驱动开发的基本的模块代码编写和手动执行模块加载的操作, 这一节,我们讲述嵌入式设备上使用Sysvint引导方式下如何开机自动加载模块的步骤。感兴趣的同学看下使用systemd引导方式的开启自动加载模块的步骤本文主要讲述了如何在嵌入式arm Linux系统中sysvinit引导方式的开机自动加载驱动模块的步骤。
2025-07-07 23:54:10
478
原创 03-Linux内核驱动模块加载
本文主要讲解Linux系统中的内核驱动模块编写和加载。本文主要讲述了如何在嵌入式arm Linux系统中编写驱动模块和加载的步骤。
2025-07-02 23:15:32
606
原创 02-Linux内核源码编译
本章,我们主要讲述linux内核编译的步骤。主要是面向想入门嵌入式linux开发的同学。本文主要讲述了如下下载Linux源码进行编译和运行。在讲述过程中提及到了git, shell脚本编写,和buildroot文件系统构建工具,这三个工具在日常开发中会经常提及,感兴趣的同学可以深入学习一下。注: 构建linux文件系统的工具非常多。我们这里只讲述buildroot, 因为他简单,适合新手学习,其他的文件系统构建还有busybox和yocto等。
2025-06-24 22:35:38
891
原创 01-驱动开发开篇
这个主题已经构思了很久,也犹豫了很久,网上讲述linux驱动开发的博主非常多,我在想,我能给我读者带来什么呢。现在嵌入式Linux的开发难度比以前降低了很多,特别是ai的出现,几乎不需要掌握很多的基础知识,也能完成日常工作。特别是从linux-3.10开始使用设备树开始,现在的嵌入式Linux驱动开发几乎就剩下了复制粘贴和调试一些GPIO引脚。这也是我很困惑地方,如果我讲述驱动开发的步骤,对于老兵来说,没有任何阅读的价值,直接可以跳过,而对于新手来说。虽然按照步骤能复制粘贴代码,也能让硬件工作起来。
2025-06-21 15:08:05
573
1
原创 Android13 增加产品配置文件
本文主要描述RK3568 Android13中添加产品配置文件的步骤,以下的描述以添加rk3568_taurus为例子进行讲述。
2025-06-19 23:23:08
412
原创 Android7 Input(十一)App View InputEvent事件分发
本文主要讲述App View中inputEvent事件分发的流程,我们这里不讲述关于Android View窗口管理系统。Android系统中View的事件分发的方向就是:当事件被处理完成后,根据事件处理的结果然,反向调用路径返回:从View-> ViewGroup->DecorView->PhoneWindow->Activity本文主要描述了,Android View事件分发被处理的流程,在讲述过程中,为了简化,我们删除了很多细节的东西。
2025-06-12 22:19:49
914
原创 Android7 Input(十)View 处理Input事件pipeline
本文主要描述View对InputEvent事件pipeline处理过程。本文描述了Android系统中View对输入事件的处理流程,也就是pipeline事件的处理过程。然后最终将处理结果通过跨进程传递给了InputDispatcher。下一章,我们讲述View UI的事件分发流程;
2025-06-05 23:34:51
1183
5
原创 Android7 Input(九)View 建立Input Pipeline
上一个章节,我们讲解了App通过注册InputEventReceiver获取从Input服务上报的输入事件的流程,在讲述App处理具体输入事件之前,我们讲述App处理输入事件的模型,也就是本章要讲述的InputState Pipeline。本文描述了View处理input事件的Pipeline模型的实现,下一个章节讲述App处理input事件的具体过程。
2025-05-25 15:54:58
603
原创 Android7 Input(八)App Input事件接收器InputEventReceiver
上一个章节,我们讲解了App如何使用InputChannel通道与input系统服务建立通信的桥梁的过程,本章我们讲述App如何从input系统服务中获取上报的输入事件,也就是我们本章讲述的InputEventReceiver。本文讲述了App通过注册输入事件接收器的方式,当InputDispacther上报输入事件时,通过Looper的回调机制App获取到了事件,并通过doProcessInputEvents接口,正式开启App对input事件的处理。
2025-05-20 23:10:58
1041
原创 Android7 Input(七)App与input系统服务建立连接
本文主要讲述Android 系统创建窗口时与输入相关管理系统服务通过InputChannel通道建立通信桥梁的过程。本文主要讲述了App初始化创建窗口时的与输入管理相关的处理流程,App为了能接收到系统上报的输入事件,通过InputChannel作为桥梁,将App和Input系统服务建立了通信桥梁,实现的核心原理就是创建socket对,并通过事件监听的方式,从socket中获取监听的信息,并进行处理,当App处理完信息也则通过socket对,告诉input系统服务的处理结果。后续章节我们会讲述这个处理流程。
2025-05-17 20:38:12
1025
原创 Qemu-STM32(十八):Qemu运行Keil编译出来的axf文件
本文档算是一个Qemu模拟STM32的一个阶段性的成果展示,之前博主成功在gcc下运行了qemu STM32F103模拟器,这次博主尝试运行Keil编译出来的axf文件,并成功运行起来,让博主不得不佩服qemu的强大之处。
2025-05-14 00:20:55
1017
原创 OpenMCU(七):STM32F103开发环境搭建
本文主要讲述了使用Keil软件搭建STM32F103嵌入式开发环境的步骤,主要面向想从事嵌入式行业的入门同学,如果下面的讲述过程中有不对的地方,欢迎大家给我留言。本文主要讲述了Keil 5.43的安装教程,主要用于学习交流,请勿用于商业开发。1、本文主要描述了搭建STM32F103开发环境,并详细说明了使用比较广泛的Keil的安装和破解过程;2、关于keil的破解,主要用于学习交流,请勿用于商业开发环境;3、讲述了离线安装STM32F103开发包的步骤;
2025-05-14 00:06:10
1249
原创 OpenMCU(六):STM32F103开发板功能介绍
博主开启这个OpenMCU系列博客的主要目的,就是源码分析我们在嵌入式开发中用到一些软件库。让嵌入式MCU学习非常容易入门
2025-05-12 23:19:36
1123
原创 OpenHarmony Linux内核本地管理
写这篇文章的初衷,其实也是作者从事多年Android系统开发中,根深蒂固的目录情节导致的,再开发Harmony系统中,总是想模拟Android系统的开发思路。对于OpenHarmony这个patch机制,其实我很讨厌它,虽然这样可以简化维护工作,不需要每个厂家都维护一个内核开发版本,但是这个patch,我讨厌它的地方就是严重制约了多人协作开发。如果一不小心修改了上游内核的文件,则如果用现有的机制,每一个协作开发的同学都需要重新再次生成patch ,不然无法patch到编译的内核。
2025-05-12 20:30:37
771
原创 RK3568-OpenHarmony(1) : OpenHarmony 5.1的编译
本文主要描述了,如何在ubuntu-20.04操作系统上,编译RK3568平台的OpenHarmony 5.1版本。
2025-05-10 13:35:02
1193
4
原创 Android7 Input(六)InputChannel
本文讲述Android Input输入框架中 InputChannel的功能。从前面的讲述,我们知道input系统服务最终将输入事件写入了InputChannel,而input属于system_server进程,App属于另外一个进程,当Input系统服务想要把事件传递给App进行处理时这里就涉及到了一个跨进程通信的问题。
2025-05-08 21:44:24
1161
1
原创 Qemu-STM32(十七):STM32F103加入AFIO控制器
本文主要描述了在Qemu平台中,如何添加STM32F103的AFIO控制器模拟代码,AFIO是属于GPIO引脚复用配置的功能。本文描述了如何在qemu中添加stm32f103平台上AFIO控制器实现步骤。
2025-04-29 20:00:14
745
原创 Android7 Input(五)InputDispatcher
本文主要描述了Android Input框架中的InputDispatcher的功能和数据处理流程。InputDispatcher的功能总结成一句话就是处理InputReader传递过来的事件并将事件进行再次封装为一个InputDispatcher事件然后传递给App进行处理,当App处理完成后,通知InputDispatcher模块清理InputDispatcher上报的事件,即完成整个输入事件的处理流程。
2025-04-26 14:27:08
1283
原创 Qemu-STM32(十六):STM32F103加入GPIO控制器
本文主要描述了在Qemu平台中,如何添加STM32F103的GPIO控制器模拟代码。本文描述了如何在qemu中添加stm32f103平台上GPIO控制器实现步骤。
2025-04-16 23:47:41
459
5
原创 Qemu-STM32(十五):STM32F103加入Flash控制器
本文主要描述了在Qemu平台中,如何添加STM32F103的Flash控制器模拟代码。本文描述了如何在qemu中添加stm32f103平台上FLASH控制器实现步骤。
2025-04-16 23:21:19
679
原创 Android7 Input(四)InputReader
本文主要描述了Android Input框架中的InputReader的功能,InputReader模块的功能,总结成一句话就是InputReader获取输入设备的事件并将事件进行加工处理,然后传递给QueuedInputListener,最终QueuedInputListener将事件传递给InputDispatcher模块处理,事件处理的方向就是:InputReader -> QueuedInputListener -> InputDispatcherframeworks/native/services
2025-04-12 15:25:09
753
原创 Qemu-STM32(十四):STM32F103加入USART控制器
本文主要描述了在Qemu平台中,如何添加STM32F103的USART控制器模拟代码。1、本文描述了如何在qemu中添加stm32f103平台上UASRT控制器实现;2、完成的提交记录,请查看代码库链接;
2025-04-06 18:07:31
656
原创 Qemu-STM32(十三):STM32F103加入RCC控制器
本文主要描述了在Qemu平台中,如何添加STM32F103的RCC控制器模拟代码。1、本文描述了如何在qemu中添加stm32f103平台上RCC控制器实现;2、RCC模块主要功能就是配置STM32103运行时的时钟频率;2、完成的提交记录,请查看代码库链接;
2025-04-06 18:01:58
667
原创 Android7 Input(三)EventHub
在Android Input框架中,EventHub主要作用就是读取输入设备上报的event事件, 并将收集的事件提交给InputReader进行处理。本文主要描述了EventHub如何管理系统中的输入设备以及系统上报输入事件的处理流程。本文并没有细节展开描述每一个EventHub类的实现方法和输入事件处理的代码细节,感兴趣的同学可以去分析一下Linux系统中input事件的获取和Linux input事件的组成等。1、本文主要描述了EventHub输入设备的管理和事件获取流程描述,并没有细节上去描述;
2025-04-01 23:44:51
994
原创 Android7 Input(二)Linux 驱动层输入事件管理
在Linux系统中,将按键,键盘,鼠标,触摸屏等这类交互设备交由Linux Input子系统进行管理,Linux Input驱动子系统由于具有良好的和用户空间交互的接口。因此Linux Input驱动子系统,不止于只管理输入类型的设备。也可以将其他类型的设备归纳于Linux Input进行管理, 比如Rockchip 的Android系统平台上,将传感器数据的处理,就归纳到Linux Input进行管理。
2025-03-29 22:22:54
1068
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅