
Android底层学习
文章平均质量分 78
以linux内核源码为基础,探索Android底层,并对其进行总结。
Alexander的鸭梨山大
偶尔分享一些乱七八糟的操作。。。。。。。。
展开
-
【Android底层学习总结】5. init进程的启动
1. 前言前面我们已经了解了内核的初始化,还是比较复杂的,具体的三言两语也解释不清,只能好好分析源码;这节我们该往上层走了,这一节我们来研究ini进程的初始化和启动,事实上前面的内核初始化已经进入init初始化了,这节我们来仔细研究,这个pid为1的进程。2. 源码解析注:本系列源码都是基于kernel4.9的前面我们已经讲到rest_init函数很重要,我们init进程的初始化启动也在这里面。下面我们依次进入以下文件夹或函数:kernel4.9->init->main.c->原创 2021-04-06 15:57:04 · 527 阅读 · 0 评论 -
【Android底层学习总结】4. 内核中do_initcalls函数源码解析
1 前言本节内容主要对do_initcalls函数进行总结,老实说这个函数有点复杂,需要了解汇编知识以及C语言里面对宏、函数指针的高级用法的理解。我在总结这篇文章时候都有点云里雾里,参考了网上很多老前辈的博客。如果本篇有什么错误,还请大家积极指正,谢谢大家。2 源码解析注:本篇代码取自kernel4.9/*做初始化工作,代码路径:init/main.c */static void __init do_initcalls(void){ int level; // 按照级别调用初始化函数,le原创 2021-03-30 17:32:46 · 404 阅读 · 0 评论 -
【Android底层学习总结】3. 内核中driver_init函数源码解析
1 前言前面我们已经总结了从硬件上电到内核启动初始化的过程,但由于篇幅原因,对于一些比较重要的函数只是进行了简单介绍。本节我们来研究关于driver_init函数的研究,从单词上的意思来讲,这个函数用于初始化驱动设备模型,也就是/sys目录下的一些初始化工作,对于驱动开发工程师比较重要。2 源码解析注:本节代码取自Kernel 4.9,位置:driver/base/init.c/sys目录下面目录的解析参考链接1(简易)/sys目录下面目录的解析参考链接2(详细)/** *driver_ini原创 2021-03-30 10:45:11 · 1334 阅读 · 0 评论 -
【Android底层学习总结】2. 安卓系统内核的Bring Up
0 目录1 前言2 简介3 启动流程3.1 上电3.2 Boot Loader3.3 Kernel的初始化4 总结1 前言上节我们学习了驱动开发基础,这节我们继续学习,这节我们主要来了解安卓系统是怎么启动的,以及内核的初始化工作。2 简介Android采用分层的架构设计,从高到低分别是应用层,Java API 框架层,系统运行层(包括Android Runtime和原生态的C/C++库)、硬件抽象层、Linux内核层。而我们这篇文章将从上电讲到Kernel的启动,大致流程如下。#mermaid-s原创 2021-03-29 17:11:23 · 2526 阅读 · 2 评论 -
【Android底层学习总结】1. 驱动开发基础
0 目录1 前言2 驱动开发认识2.1 驱动2.1.1 设备驱动程序的主要功能2.1.2 驱动程序的主要类型2.1.3 设备文件2.1.4 sys文件系统:3 基础编程3.1 内核模块3.1.1 设备驱动的编译和加载方式3.1.2 一个模块被插入时的主要工作3.2 内核编程3.2.1 内核模块编程模板3.3 字符驱动程序模板4 总结1 前言已经有段时间没好好地写博客了,最近在研究安卓底层,所以想写写我对安卓底层的认识和总结。本篇是安卓底层学习总结系列的第一篇,驱动开发基础。2 驱动开发认识安卓系统,原创 2021-03-29 16:26:49 · 6022 阅读 · 1 评论