Radia的专栏

专注嵌入式系统开发。

排序:
默认
按更新时间
按访问量

linux驱动由浅入深系列:camera驱动之二(基于高通平台的V4L2结构及代码分析)

在上一篇文章中介绍了camera的基础知识和相关概念,我们一起来了解一下驱动相关的代码结构。本文以高通+android平台为示例,首先看一下整体框图:这张图是从整体上来看的1,图中最下面的是kernel层的驱动,其中按照V4L2架构实现了camera sensor等驱动,向用户空间提供/dev/v...

2018-03-11 13:53:05

阅读数:215

评论数:0

linux驱动由浅入深系列:块设备驱动之二(块设备驱动结构分析)

linux驱动由浅入深系列:块设备驱动之一(高通eMMC分区实例)linux驱动由浅入深系列:块设备驱动之二(块设备驱动结构分析)在第一篇文章中介绍了块设备在应用层的操作,本文一起了解一下块设备驱动的结构:1,用户空间使用统一的读写函数操作所有块设备2,虚拟文件系统屏蔽了磁盘上各种不同文件系统的差...

2018-03-07 00:33:16

阅读数:107

评论数:0

linux驱动由浅入深系列:显示子系统之二(基于android的分析)

上一篇文章中介绍了应用层对显示系统的使用,我们操作framebuffer在屏幕上画出了图形。这次我们一起来看一下android中显示子系统各个模块的功能。android系统音频系统在高通平台上的框图:HWUIUI硬件加速,从Androd 3.0(Honeycomb)开始,Android开始支持hw...

2018-03-04 22:30:20

阅读数:135

评论数:0

linux驱动由浅入深系列:ALSA框架详解 音频子系统之二

linux驱动由浅入深系列:tinyalsa(tinymix/tinycap/tinyplay/tinypcminfo)音频子系统之一linux驱动由浅入深系列:ALSA框架详解 音频子系统之二本文以高通平台为例,介绍一下android下的音频结构。android使用的是tinyALSA作为音频系...

2018-03-04 14:22:10

阅读数:321

评论数:0

文件系统系列之二:ext3/vfs文件系统的结构分析

在上一篇文章中,我们介绍了基本的文件系统概念和SD卡中常用的FAT32文件系统。在有了上文的基础,我们这次来学习一下linux中默认的ext文件系统。ext文件系统是为linux量身打造的,因此和linux的虚拟文件系统(VFS)在基础概念上基本是一致的,本文也顺带介绍一下vfs。vfs能适配十几...

2018-03-02 00:50:20

阅读数:88

评论数:0

文件系统系列之一:fat文件系统的结构分析

在这个系类的开篇还是先说一下文件系统是什么吧。首先来介绍一下对u盘的格式化这个操作,格式化不是仅仅删除了所有文件,还为接下的来文件存储约定了一种存放格式,这种约定的文件存放格式就叫做文件系统。再用最通俗的说法简要介绍一下,磁盘如sd卡只能存放0和1这两种二进制状态序列,数字文件本质上也是一串0和1...

2018-02-28 21:05:08

阅读数:84

评论数:0

内存管理分析之三:了解这些概念就了解了整个MMU机制

内存管理分析之一:Linux进程空间与虚拟地址的好处内存管理分析之二:MMU机制在进程中使用时的一些问题内存管理分析之三:了解这些概念就了解了整个MMU机制MMU的作用1,完成虚拟地址到物理地址的转换2,地址访问控制,地址保护页:最小的映射单位,32位系统一般为4k页帧:物理内存中的一页称为页帧页...

2018-02-25 17:17:01

阅读数:108

评论数:0

linux网络驱动分析

网络驱动与字符驱动和块驱动最大的区别在于没有设备节点,这也是linux中一切皆文件的一个例外。网络设备没有设备节点,那么给应用层提供的操作方式是怎么的呢?答案是-系统调用。如我们在网络编程中经常用到的socket(),bind(),listen(),accept()。 下面这张图展示了从应用层发...

2017-12-08 18:11:50

阅读数:85

评论数:0

linux系统调用实现的介绍

操作系统负责资源管理,当应用层需要使用资源时就需要向内核发起系统调用。如读取问题时发起syscall_read系统调用,建立socket时发起syscall_socket等等 内核完成引导后,就处于等待处理各种中断的状态下,以实现对硬件资源的管理,对上层请求的相应。 能够触发内核相应的有三类 1,...

2017-12-08 14:24:51

阅读数:124

评论数:0

linux内核panic/oops/crash分析(addr2line,objdump,gdb)

panic、oops、crash都是指linux kernel层发生了内核无法处理的异常。 应用层编程只会造成该进程的崩溃,内核层的编程如驱动代码中的异常最严重的情况会导致内核panic。 那怎样处理呢? 内核panic后有dump机制会打印出目前的所有寄存器,以便于分析异常原因。 我们经常用到的...

2017-12-01 16:23:57

阅读数:433

评论数:0

linux中netlink机制的实例讲解

netlink作为内核层与用户层双向通信的交互机制广泛的应用在网络驱动及字符驱动的uevent机制中。 Netlink 相对于系统调用,ioctl 以及 /proc文件系统而言具有以下优点: 1,netlink使用简单,只需要在include/linux/netlink.h中增加一个新类型的 ne...

2017-11-28 17:52:14

阅读数:137

评论数:0

网络协议实例讲解(配抓包图)

网络七层协议模型在实际使用中并没有完全实现,事实证明有了如下部分,网络就可以完美运行了: 应用层 http ftp 传输层 tcp udp 网络层 ip icmp igmp 链路层 arp rarp 物理层 wifi 以太网 上面的一层一层的协议在最终传输的网络包上表现为,每经过网络的一层就会在...

2017-11-20 14:01:15

阅读数:198

评论数:1

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

在上一篇文章中我们初步了解了lcd对应用层提供的接口-framebuffer,以及应用层通过fb在lcd上画图的示例。本文我们来看一下驱动层的相关逻辑,主要介绍几个核心数据结构fb_info, fb_var_screeninfo, fb_fix_screeninfo,以及framebuffer设备...

2017-11-06 15:30:29

阅读数:314

评论数:0

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

高通平台启动log概述(PBL log、sbl1 log、kernel log) 在嵌入式linux的调试过程中log有着至关重要的地位,等同于医生的CT报告。能够熟悉启动各个阶段的log,如PBL阶段,sbl1阶段,kernel阶段,android阶段,对于分析定位问题有着重要的作用。本文以高...

2017-11-01 18:02:09

阅读数:1400

评论数:0

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

LK是(L)ittle (K)ernel的缩写,是一个功能及其强大的bootloader开源项目,但现在只支持arm和x86平台。 LK的一个显著的特点就是它实现了一个简单的线程机制(thread),和对高通处理器的深度定制和使用。因此高通平台android普遍采用LK作为其bootloader...

2017-10-30 15:02:53

阅读数:574

评论数:0

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

android编译系统解析,执行make bootimage后mk文件的调用顺序详解 构成android编译系统的有make文件(makefile,xxxxx.mk),shell脚本,python脚本等 make文件针对三个层次 1,整个编译系统的核心 android/build/core/下,如...

2017-10-27 10:52:59

阅读数:1045

评论数:0

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

linux中新增一个shell命令最简单的方法 结论:运行shell脚本之后,其中的function就自动成为了当前shell中的新增命令了。 android编译时会运行. build/envsetup.sh脚本,运行后就为当前shell新增了一些命令,如:croot,lunch,mm,mmm...

2017-10-25 20:02:14

阅读数:241

评论数:0

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

本文简述一下对linux移植过程的全局认识并非step by step的教程 想让linux在一个板子上跑起来需要做什么? 需要做三件事 1.移植uboot适配板子 2.调试kernel中各类驱动 3.构建根文件系统。 为什么需要uboot? 内核虽然强大,但是不能开机自动完全从零开始启动的,内...

2017-10-24 20:11:36

阅读数:173

评论数: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程序...

2017-10-24 16:36:34

阅读数:612

评论数:0

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

android上的usb口是支持OTG(on the go)的,USB OTG既可以作为Host又可以作为Device,我们本文来看一下android手机作为Host连接鼠标的情况。 OTG是如何做到既可以做Host又可以作为Device的呢 标准usb接头中有四根线:vbus,gnd,dp(...

2017-10-18 17:30:25

阅读数:322

评论数:0

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