RK3399平台入门到精通系列讲解(导读篇)前言
Posted 内核笔记
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RK3399平台入门到精通系列讲解(导读篇)前言相关的知识,希望对你有一定的参考价值。
点击蓝字即可跳转界面:
=>返回总目录<=
文章目录
一、关于作者
博主从事Linux
内核和驱动开发五年多,是Linux
内核的爱好者,在智能汽车行业上市公司从事Linux
底层软件开发工作。
撰写博文是博主多年来一直坚持的事情,一是为了沉淀自己,二是只有不断的向前奔跑才能赶上Linux
内核发展的步伐,故博主依靠RK3399
此平台进行相关Linux
内核驱动,android
框架的研究。
1、博主的联系方式
由于博主知识水平有限,博文中难免存在纰漏和理解错误之处,敬请各位读者朋友批评指正。大家可以扫描下方的二维码,添加博主的微信。
2、支持
- 若读者有比较感兴趣的
Linux
内核板块,可以联系博主,博主会尽力去研读代码输出博文。
二、需要具备的知识和工具
RK3399
平台上进行内核驱动开发,并非像C
语言开发一样简单,需要我们付出一定的学习成本和时间成本,还要求我们有一定的基础知识,有的是需要掌握的,有的是只需要了解即可。
1、需掌握知识点
C
语言:Linux
内核的语言基石就是C
语言,故我们必须掌握。- 数据结构:内核中遍布了链表等数据结构。
- 硬件基础:我们开发驱动过程中会接触到形形色色的硬件,这个时候就需要你可以看懂硬件原理图。
- 英文阅读技巧:我们还需要经常通过芯片的数据手册查找相关寄存器地址等信息,故需要看懂英文芯片手册。
2、需了解的知识点
C++
面向对象的思想:Linux
内核设备管理的核心思想就是面向对象思想,设备管理的基石是Kobject
(对象)结构体,故我们只需要了解这个面向对象的思想即可。git
代码管理工具:现在主流的代码管理使用git,我们只需要了解几个简单的命令即可- 硬件调试工具:虽然公司中有硬件工程师的帮助,但身为驱动工程师了解常见的万用表、示波器、逻辑分析仪等工具的使用,必不可少。
三、通过系列博客可以学到什么
1、本系列博文特色
- 图文并茂:
Linux
内核庞大而复杂,任何一本厚厚的的Linux
内核书籍都可能让人看得昏昏欲睡。因此博主在博客中都会插入思维导图的形式,让错综复杂的Linux
内核子系统结构体关系明了。
- 以实战为出发角度:博主大部分博文中都会对应一个使用例子,这样才能学以致用。
2、博文学习顺序建议
现有博文是2017到2021
所输出的博文,下面我根据自身经验,介绍下前期的学习顺序。
- Linux应用开发基础篇:熟悉一个人,首先第一眼看的是其外表,内核驱动开发也一样,首先要了解各个驱动自己的属性,和方法。
- 内核开发篇 4、内核设备树篇:掌握内核硬件
HW
配置。 - 内核开发篇 9、内核调试篇:掌握内核的调试手段。
- 内核开发篇 1、内核入门篇:了解内核中的一些基础知识。
- 内核开发篇 2、内核子系统篇:进行子系统相关学习。
- 内核开发篇 3、内核驱动外设篇:实战
- 前面学习以后后面几个篇章即可根据喜好进行挑选学习。
3、后期博文计划
Linux
内核涉及的内容包罗万象,但系列博文不想成为大而全的博文,因此后期会选取最基本最常用的内存管理、进程管理、并发与同步和中断管理这几个方面内核模块进行讲述,力求把我所理解的东西完整记录下来,2021
下半年、2022
未来这两年每周都将不断输出。
- 处理器体系结构:
cache
一致性管理、MMU
、内存屏障等 - 内存管理:
slub
分配器、mmap
系统调用、物理页面page
结构等 - 进程管理:fork系统调用、
CFS
调度器 - 并发与同步:
Mutex
、信号量、原子变量 - 中断管理:硬件中断处理、软中断、
Tasklet
、workqueue
等
四、一些经验
1、学习时间
- 平时周内工作一定要做好记录,然后周末进行汇总总结。
- 早上可以去阅读代码,整理代码框架。
只要肯愿意去积累,两个月入门,两年精通,五年大成
2、学习方法
- 自己闭门造车不好,不如将自己的总结发出来,这样会更好的激励自己。
- dump_stack分析函数调用关系,这个手段掌握了,分析代码框架就是如鱼得水。
以上是关于RK3399平台入门到精通系列讲解(导读篇)前言的主要内容,如果未能解决你的问题,请参考以下文章
RK3399平台入门到精通系列讲解(导读篇)21天学习挑战介绍