摘要:
[TOC] 1. 抽象定义 Google为Sensor提供了统一的HAL接口,不同的硬件厂商需要根据该接口来实现并完成具体的硬件抽象层,Android中Sensor的HAL接口定义在:hardware/libhardware/include/hardware/sensors.h, 其中定义了几个数据 阅读全文
摘要:
编译测试程序通常需要解析命令行参数,linux提供了比较方便的api来解析这些命令行参数。 linux手册 这里有3个api函数,先从第一个开始看 getopt 编写测试代码 编译并执行,查看下面执行的情况,其中a参数可选,b参数固定,c和d没有参数。 getopt_long 测试代码 测试结果,使 阅读全文
摘要:
在Android系统开发过程中,经常会要去分析进程的内存的使用情况,简单介绍下Android内存分析的相关工具。 文章参考: "1.dumpsys" "2.memory analysis command" 1.内存的指标 | Item | 全称 | 描述 | 类型 | |: |: |: |: | | 阅读全文
摘要:
Linux 内核执行 start_kernel 函数时会调用 kernel_init 来启动 init 进程,流程如下图: kernel_init 部分代码如下: 接着分析 openwrt 中 package/system/procd/Makefile ,这里将 procd 源码编译生成的可执行文件 阅读全文
摘要:
[TOC] 说在前面 从最开始接触Android系统开始,每次进行代码编译都需要网上搜索编译指令。后来大致熟悉了Android的编译体系,加深了对Android编译的理解。 编译流程 编译 android 系统的流程,首先执行 source build/envsetup.sh ,然后执行 lunch 阅读全文
摘要:
[TOC] 1.写在前面 最近在调试时需要在用户层访问物理内存,发现应用层可以使用 devmem 工具访问物理地址。查看源码,实际上是对 /dev/mem 操作,通过 mmap 可以将物理地址映射到用户空间的虚拟地址上,在用户空间完成对设备寄存器的读写。藉由此原因,想深入理解下 mmap 的具体实现 阅读全文
摘要:
linux驱动有基本的接口进行注册和卸载,这里不再做详细说明,本文主要关注linux字符设备驱动框架实现的细节。 [TOC] 1.字符设备驱动抽象结构 字符设备驱动管理的核心对象是字符设备,从字符设备驱动程序的设计框架出发,内核为字符设备抽象出数据结构struct cdev,定义如下: 设备驱动程序 阅读全文
摘要:
[TOC] 1.什么是系统调用 系统调用,指的是操作系统提供给用户程序调用的一组特殊接口,用户程序可以根据这组接口获得操作系统内核的服务。它规定了用户进程陷入内核的具体位置,或者说规划了用户访问内核的路径,只能从固定位置进入内核。 2.linux的系统调用 对于现代操作系统来说,系统调用是用户空间和 阅读全文
摘要:
最近无意中看到一篇关于s3c6410 RomCode的介绍,结合自己的经验,做个总结。 首先贴张图,具体描述下该芯片的启动方式及具体流程。 因为s3c6410的板子多数是从SD或者Nand方式启动,重点就先放在Nand启动上。 启动基本流程: 上图中的IROM为芯片固化程序,被称为BL0,开机后最先 阅读全文
摘要:
本文转载自 http://www.wowotech.net/linux_kenrel/11.html [TOC] 1.前言 本文是“Linux内核分析”系列文章的第一篇,会以内核的核心功能为出发点,描述Linux内核的整体架构,以及架构之下主要的软件子系统。之后,会介绍Linux内核源文件的目录结构 阅读全文