关闭

linux驱动由浅入深系列:显示子系统之二(高通平台lcd驱动代码分析)

在上一篇文章中我们初步了解了lcd对应用层提供的接口-framebuffer,以及应用层通过fb在lcd上画图的示例。本文我们来看一下驱动层的相关逻辑,主要介绍几个核心数据结构fb_info, fb_var_screeninfo, fb_fix_screeninfo,以及framebuffer设备注册的过程,framebuffer大小的确定。 我们从kernel中lcd最核心的一个文件看起 k...
阅读(70) 评论(0)

高通平台启动log概述(PBL log、sbl1 log、kernel log)

高通平台启动log概述(PBL log、sbl1 log、kernel log) 在嵌入式linux的调试过程中log有着至关重要的地位,等同于医生的CT报告。能够熟悉启动各个阶段的log,如PBL阶段,sbl1阶段,kernel阶段,android阶段,对于分析定位问题有着重要的作用。本文以高通msm8937平台android启动的串口log为例简要介绍一下log相关的技巧和对log的概要介绍...
阅读(90) 评论(0)

LK(little kernel)第一行代码链接位置分析及lk启动过程

LK是(L)ittle (K)ernel的缩写,是一个功能及其强大的bootloader开源项目,但现在只支持arm和x86平台。 LK的一个显著的特点就是它实现了一个简单的线程机制(thread),和对高通处理器的深度定制和使用。因此高通平台android普遍采用LK作为其bootloader。但是,LK只是整个系统的引导部分。 1,lk的代码链接方式以及第一行代码的位置 本文以高通平台为...
阅读(65) 评论(0)

android编译系统解析,执行make bootimage后mk文件的调用顺序详解

android编译系统解析,执行make bootimage后mk文件的调用顺序详解 构成android编译系统的有make文件(makefile,xxxxx.mk),shell脚本,python脚本等 make文件针对三个层次 1,整个编译系统的核心 android/build/core/下,如其中的main.mk文件 2,针对不同厂商不同产品的make文件位于android/devic...
阅读(153) 评论(0)

linux中新增一个shell命令最简单的方法

linux中新增一个shell命令最简单的方法 结论:运行shell脚本之后,其中的function就自动成为了当前shell中的新增命令了。 android编译时会运行. build/envsetup.sh脚本,运行后就为当前shell新增了一些命令,如:croot,lunch,mm,mmm,mma,cgrep等等。这些命令十分好用,为开发带来了极大的便利。 一直以为envsetup.sh...
阅读(76) 评论(0)

linux移植过程概述(linux移植的全局认识并非step by step的教程)

本文简述一下对linux移植过程的全局认识并非step by step的教程 想让linux在一个板子上跑起来需要做什么? 需要做三件事 1.移植uboot适配板子 2.调试kernel中各类驱动 3.构建根文件系统。 为什么需要uboot? 内核虽然强大,但是不能开机自动完全从零开始启动的,内核启动还是需要别人帮忙的。 uboot为kernel启动创造各种条件,帮助内核实现重定位...
阅读(56) 评论(0)

linux启动第一个应用程序init && init启动android过程解析 && init.rc与inittab的关系 && android property和linux 环境变量

linux启动第一个应用程序init linux的运行顺序为uboot传递参数到内核,内核的第一个c编写的函数为start_kernel(),start_kernel来启动内核,最后到到rest_init()函数处完成内核启动过程。 rest_init()中启动第一个应用程序init,init程序的进程号为1,Linux使用了init进程来对组成Linux的服务和应用程序进行初始化。 ini...
阅读(98) 评论(0)

linux驱动由浅入深系列:usb子系统之四(android平台鼠标驱动代码分析)

android上的usb口是支持OTG(on the go)的,USB OTG既可以作为Host又可以作为Device,我们本文来看一下android手机作为Host连接鼠标的情况。 OTG是如何做到既可以做Host又可以作为Device的呢 标准usb接头中有四根线:vbus,gnd,dp(d+),dm(d-),android手机上的usb为miniUSB接口增加了一根id线,用来区分Hos...
阅读(70) 评论(0)

linux/android代码中对于不同项目中conf、dts、defconfig文件的处理方法

本文以高通平台为例(代码 android oreo),介绍几种在不同项目公用一套代码时对于conf文件、dts、defconfig文件的处理方法 一、不同项目共用一套代码时,其中一些conf配置文件在项目间又有差异的处理方法 1,在device下给每个项目建一个单独文件夹存放不同的配置文件 2,在mk文件中根据不同的项目宏进行copy 例子: 1,在device\qcom\msm89...
阅读(76) 评论(0)

linux驱动由浅入深系列:usb子系统之三(usb系统中的设备、配置、接口、端点概念及代码解释)

一个usb设备对应一个或多个配置 一个配置包含一个或多个usb接口 一个usb接口可能存在一种或多种设置 一个设置会使用零个或多个usb端点 设备 设备就是一个usb物理设备,一个usb设备可以只包含一个简单功能的device,也可以包含一个由hub连接的多个设备,叫作复合设备。 接口与端点的概念较为清晰 端点 端点是host或device中具有独立控制usb总线能力的最小物理...
阅读(166) 评论(0)

linux设备驱动uevent详解,高通平台battery上报电量实例

本文以高通平台上的android系统为参照展开探讨。 1,uevent是什么呢? uevent是一种linux设备模型中的一个组成部分。kseg中包含的uevent_ops结构体拥有uevent的操作函数。 uevent可以在设备发生变化时主动通知应用层。是对普通先注册设备后注册驱动模式的一种补充。一般用作usb设备的自动驱动加载、电池电量上报等。 2,uevent主动通知应用层的...
阅读(494) 评论(0)

sys文件系统中文件、文件夹与kobject、kset、kobj_type的对应关系

网上对sys文件系统与kobject的文章很多,但对初学者的我越看越乱。几经辗转总结出如下结论,如有误恳请讨论指出,直接给出: 1,kobject,kset对应sysfs里面的文件夹,目录的名字就是结构体中的 name 2,kobj_type对应sysfs里面的文件,这些文件是kobject的属性的外在表现 3,kobject是linux设备树的核心结构体,整个设备树都是围绕kobject建...
阅读(195) 评论(0)

linux双向链表List结构分析

双向链表是linux内核中的一个核心数据结构,由于其运用场景众多如task列表、设备列表等等,因此内核将其操作逻辑独立了出来。下面我们以i2c的设备树列表为例来看一下List列表的使用方法。 如图所示,双向链表不包含任何数据,在使用时,将其嵌入到目标结构体中使用。且第一个list_head不与数据机构体关联,作为整个链表的起始。 List的实现代码在kernel\include\linux...
阅读(261) 评论(0)

linux中i2c子系统代码结构详解

本文介绍一下linux驱动代码中i2c子系统的驱动代码结构和使用方法,示例平台文件为高通msmXXXX平台 一,i2c子系统代码结构 i2c-core.c 1,使用bus_register进行总线注册 2,提供与具体硬件无关的操作逻辑供i2c-dev.c中使用 3,将操作逻辑通过EXPORT_SYMBOL导出到整个内核,供其他基于i2c的设备驱动调用 i2c-dev.c...
阅读(281) 评论(0)

linux模块(module_init)、子系统(subsys_initcall)入口函数详解

linux内核代码是以模块(module)和子系统(subsys)为单元的层次结构。在写模块代码时我们知道入口函数是module_init()或subsys_initcall(),在linux启动时会被调用,这其中更为详细的前因后果是什么呢,一起来了解一下。 一,linux模块程序示例 下面是一个linux模块的示例程序: #include #include MODUL...
阅读(214) 评论(0)
74条 共5页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:39075次
    • 积分:1179
    • 等级:
    • 排名:千里之外
    • 原创:73篇
    • 转载:0篇
    • 译文:1篇
    • 评论:13条
    最新评论
    关于