- 博客(26)
- 资源 (5)
- 收藏
- 关注
原创 Linux下IIO子系统的使用与源码分析
本文主要介绍Linux下的IIO子系统使用,包括应用层访问,驱动层使用IIO子系统开发对应的驱动,同时对IIO子系统的配置含义以及IIO子系统源码框架进行分析。
2025-04-24 11:13:24
883
原创 Linux 下kref、idr、notifier使用与原理
本文介绍kref、idr和notifier的使用,三者互不联系可跳到对应章节阅读,没有对三者的源码深入分析。
2025-04-17 09:40:14
1038
原创 Linux dma的使用与理解
本文描述Linux下的dma子系统,包括上层驱动调用方式(consumer),硬件驱动接入(provider)和dma子系统框架。如下框架大致描述了Linux下的dma子系统软件层次关系,Linux内核提供了dma子系统,向上驱动层提供DMA consumer,驱动开发者只需调用从summer的接口传入对应的dma通道需求信息;向下硬件层提供DMA Provider,该层主要由芯片厂商实现,向dma子系统注册一个chan_device;DMA核心层包括dmaengine、virt-dma和of-dma。启用
2025-03-26 14:43:59
915
原创 Linux cma预留内存使用与理解
本节主要介绍驱动如何使用Linux的cam来预留内存方法,分别有预留内存给专门的设备驱动、通过DMA的API来预留内存、使用CAM内存池预留内存。CMA内存声明预留内存大小和基地址,都要进行页内存对齐,否则将预留失败,一般页大小为4K,也有4M的页大小,根据具体平台而定,VP平台是4M空间,所以如果配置的内存没有4M对齐会失败。通过启动参数也可以为CMA预留内存,该方式预留的内存,将和系统公用,即在预留内存空闲时,将被系统使用,与上一节“使用CMA内存池”效果一样。最终都调用了cam_alloc接口。
2025-03-26 14:23:15
908
原创 使用qemu搭建armv7嵌入式开发环境
本文介绍如何使用qemu搭建一个嵌入式开发环境,从uboot依次启动kernel和文件系统,使用Vexpress系列开发板的Express A9x4板子。
2024-12-18 15:55:53
2045
原创 Linux USB开发整理和随笔
本文主要介绍USB一些基础硬件理论原理和Linux下软件框架分析。其中硬件理论部分的介绍大多摘自网络(笔者是个整理者),主要针对影响理解源码和基本的流程而介绍。软件源码介绍部分是笔者分析源码而来。
2024-12-13 09:28:22
1349
原创 linux下的spi开发与框架源码分析
本书主要描述spi的框架,应用层使用、驱动层对spi子系统的使用、spi子系统框架和增加spi硬件适配驱动的方法以及源码分析,建立在读者具有理解spi基本工作原理和一定的Linux基础。
2024-11-22 17:22:03
906
原创 Linux下pwm开发与框架源码分析
需要注意的是,如果硬件驱动层将每个pwm(最后解析成一个pwm_device)分开,向pwm子系统添加的一个pwm_chip时只用一个pwm(最后解析成一个pwm_device),则of_xlate一般交给pwm子系统实现,该回调处理了pwm在chip的维护顺序,默认偏移值是0。如果将多个pwm(最后解析成一个pwm_device)一起维护成一个pwm_chip,这里的回调用户可以选择实现来维护pwm_device在pwm_chip中的关系。设备树配置的pwm节点。在驱动中,使用pwm子系统提供的接口。
2024-11-22 17:09:42
1091
原创 linux下i2c开发与框架源码分析
从分层角度上看,i2c子系统大致分为设备驱动层client、i2c核心层和i2c适配器层,如下图大致描述了整个i2c应用和内核框架的关系逻辑,从上到下,用户可通过底层提供的总线设备或者外设设备来访问挂载在总线上的i2c设备。以上便是一个i2c adapter的注册过程,比较简单,需要注意的是,在设备树定义了多个i2c节点是,这个driver将被调用多次,即将申请多个adapter,这里一个硬件i2c就申请一个adapter。来看此时i2c子系统是如何解析这个层级关系,以及client如何生成。
2024-11-22 17:01:37
998
原创 Linux下mmc开发与子系统源码分析
sdio_bus_type不仅针对mmc,还支持其他种类设备例如网卡等,不在本文分析范围内,mmc_rpmb_bus_type为emmc里的一个rpmb分区注册所需,rpmb生成时将注册到该总线。本文目的是从软件角度,帮助读者理解mmc分区的建立以及使用、mmc的bsp开发流程和帮助读者理解mmc的基础概念,对于mmc深入的硬件知识,以及bsp硬件驱动没有深入,mmc涉及的知识较多,希望本文能带读者理解Linux mmc子系统的使用,为有意深入研究和开发emmc的读者建立初步的认识。
2024-11-18 17:21:47
1071
原创 Linux下的gpio使用与pinctrl/gpio子系统源码分析
该文档描述Linux下,对新平台芯片适配gpio框架即bsp层,驱动层的使用方式以及应用层如何访问gpio;其中bsp分为gpio子系统和pinctrl子系统两方面介绍。
2024-11-15 09:15:30
1252
原创 Linux下的mtd子系统与源码分析
本文主要介绍mtd子系统,包括mtd子系统框架、spi flash、nor flash和nand flash注册流程,mtd子系统注册设备过程、分区建立过程以及应用试过程等。本文不对flash本身的硬件和上层文件系统做深入介绍描述,读者须有一定的flash硬件认识和文件系统知识。
2024-11-13 14:49:15
1434
原创 Linux下uart开发与core框架源码分析
主要介绍了uart在kernel中相关的代码和使用,包括uart8250 IP硬件驱动框架,serial 串口驱动框架、line desc行规则内核代码逻辑和tty内核软件框架,同时简单介绍了控制台的注册与使用过程,没有深入到console框架。
2024-11-08 14:11:08
937
原创 uboot启动kernel使用命令过程分析
为了让读者知道本文介绍的知识点在uboot所在位置,在介绍之前,先简单回顾下uboot的启动流程。.......SECTIONS#endif.text :*(.text*)........_start:/**/#elseb reset#endif分析该文件,做了一些列初始化,包括为C环境做的准备等,主要跳转了两个函数:board_init_f 和 board_init_r。
2024-03-11 20:03:13
2697
原创 Android多线程编程
Android多线程编程在进行Android界面操作时经常会遇到ANR等直接在子线程更新界面的错误,需要在ui线程中更新或者将耗时的逻辑放到子线程中更新,执行完返回结果即可。 在Android中,从Ui角度,可分为Ui线程和非Ui线程,Android一启动便创建了一个主线程,该线程即Ui线程,用于更新界面,这意味着所有耗时的动作如果在这个Ui线程中执行将造成界面卡顿现象,不时Android将退出程
2017-07-27 16:20:56
447
原创 Android数据存储之数据库(SQLite和litepal)
Android数据存储之数据库(SQlite和litepal)1、SQLite: Android提供了SQLiteOpenHelper来连接数据库,通过SQLiteDatabase来操作数据库,SQLiteDatabase类下由许多操作数据库的方法,最常见的有添加、删除和查询等操作。 SQLite提供了两种操作数据库的方法: 方法一:使用原生的数据库语句,关于数据库语句可以复习Java的SQL
2017-07-18 23:51:06
1551
原创 Android的EventBus和butterknife基本使用
Android的EventBus和butterknife基本使用使用AndroidEventBus和butterknife能够提高项目的解耦性和执行性能,是比较常用的工具。 1、Android 的EventBus基本使用 配置环境: 1、在module的配置文件加入:compile ‘org.greenrobot:eventbus:3.0.0’ 同步即可使用eventbus。 2、或者到ht
2017-07-17 15:03:38
667
原创 Android的数据存储之SharedPreference与文件File
Android的数据存储之SharedPreference与文件File的基本使用Android的数据存储方式大概分为5种:文件File、网络、SharedPreference、SQLite(数据库)和内容提供者。本节介绍SharedPreference与文件File的基本使用。 1、SharedPreference的基本使用: sharedPreference是一种轻量级的数据储存方式,使用比
2017-07-16 14:57:57
1000
原创 Android三种动画(属性、视图、帧动画)介绍基本使用
Android三种动画介绍与属性动画的基本使用Android动画基本可以分为三类: View Animation(视图动画)、Property Animation:(属性动画)和Drawable Animation(帧动画)。其中视图动画早在Android老版本就已经支持了,只能对view控件编辑动画。属性动画是Android在3.0版本后推出的API,是Google为了解决视图动画推出的,可以对
2017-07-13 18:47:00
513
原创 Android的selector和shape基本使用和color颜色列表
如题,利用Android的selector和shape可以实现自定义的界面显示效果,是美化界面的重要工具,同时可提高项目的解耦性。 1、Android的selector基本使用:(Android studio)选中res文件夹,右击选择new—>android resource file,在resource type选择drawable,在Root element选择selector新建即可。
2017-07-12 17:20:50
2035
原创 Android样式与主题
Android样式与主题1、样式: 目的:为了项目解耦度高,有时许多界面用到同一个插件或者效果时,可利用样式实现重复利用。 基本使用:样式风格可以运行在不同的view的实例中。(以Android studio为平台)在res–>values–>styles.xml下定义如下代码。样式是以style为标签定义一个样式,以item为标签定义一个条目。如下所示 name="radiobu
2017-07-12 16:29:05
408
原创 Android中的PopupWindow基本使用
如题,有时业务需要,需要在界面任意位置随机弹出窗口,可以用PopupWindow。与dialog的区别是,dialog只能显示在界面的中间,PopupWindow可以显示在对应ui控件的下面。 下面以EditText点击触发窗口弹出为例子,可以做成EditText的模糊搜索结果。直接上代码://MainActivity中的全局成员 private PopupWindow popupWin
2017-07-02 14:40:06
655
原创 Android四大组件之广播
Android四大组件之广播(四大组件:广播、活动、服务、内容提供者)分类:广播主要有有序广播、标准广播 标准广播:广播一发出,所有广播接收者同时能够收到。 有序广播:广播由优先级高到低一级级接收,高优先级的广播接收者可以截断广播信号,不再发送到第一级的广播的接收者。 系统广播(有序广播):系统自带的广播,例如无网络链接时会发出一条无网络链接信号,电量低系统会发出一条电量低的广播信号等。基本使
2017-06-29 21:05:37
426
原创 Android四大组件之一的服务
主要复习Android四大组件之一的服务(Android四大组件:活动、服务、内容提供者、广播)。作用:服务主要运行在后台,为应用程序提供数据和逻辑操作支持。 Android提供的服务主要有两种方式:startService和bindService。 startService主要特征是:“不求同年同月同日生,不求同年同月同日死”,即不要求同时创建运行,应用程序退出也不会随程序退出而终止,需
2017-06-28 17:45:21
387
rpmsg、remoteproc、mailbox框架图,收发调用栈过程
2024-10-20
Android多线程
2017-07-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人