第1章 前言(iTOP-RK3568开发板驱动开发指南 )
磨刀不误砍柴工!在学习驱动之前先和同学们交流下学习方法和学习态度。
1.1 学习方法
在学习驱动的过程中,同学们难免会遇到很多问题,例如编译环境的问题造成内核编译不通过、交叉编译器或者架构类型没有设置导致驱动编译失败、内核版本和驱动版本不统一造成驱动加载不成功等多种问题。
在遇到问题的时候,同学们一定不要灰心,要敢于去尝试用自己的思路去解决问题。机遇与挑战往往是并存的。当同学们解决一个问题以后,自然就会前进一步。水滴石穿,才可以真正掌握linux驱动。
所以一定要养成独立思考的好习惯!遇到问题之后,同学们可以先自己根据问题的具体表现,来找到问题的源头,仔细分析问题产生的原因和解决的方法,自主思考无果之后可以尝试去谷歌、百度、CSDN等各大检索网站上寻求帮助,Linux已经发展了很多年,前辈们在之前进行了无数的探索,总有许多类似的经验,能解决绝大多数的问题。
并且在学习过程中千万不要好高骛远,比如对于一些有基础的同学来说,学习过相似的知识点就一目十行甚至直接跳过,这种行为是不可取的,学习一遍和学习两遍的知识点,在认知和运用程度上是完全不一样的。读书要从薄到厚,再厚到薄,学习亦是如此。
端正学习态度后还要有一个好的学习方法,迅为公司在多年培训和产品开发中总结出来了一套适合初学者的学习方式,具体含义解释为框架化学习,快速原型。运用到嵌入式Linux驱动学习上就是从一开始先看到Linux驱动知识领域的外貌,然后逐渐深入!以了解北京这座城市为例,如果在胡同里转来转去,可能几年都搞不清楚这个城市是什么情况,但是如果先通过北京地图学习一下,了解天安门在什么地方,鸟巢在什么地方,香山八达岭在哪里,然后到这些地方看一看,可能很快就能掌握这座城市的全貌。所以运用框架学习法,在对不同层次的框架进行学习过程中,逐渐了解和掌握整个系统。 如果不注意方法,每天在胡同里面来回转悠,肯定是事倍功半,很长时间将不得要领。
需要注意的是,即便有了地图,也需要一些基础,比如知道什么是天安门,知道鸟巢的来历,明白八达岭是怎么回事,实际上这些就是基础知识。也就是说在学习系统框架之前要具备一定的基础,否则这张地图也是看不懂的。学习驱动知识也是需要一定的基础的,所以驱动学习是有门槛的!
对于学习方法和学习态度就先说这样多,关于基础方面,下一节会专门讨论。
1.2 基础准备
首先,不要脱离硬件。就好比用仿真软件学习51单片机是永远掌握不了单片机的精髓的。所以有一块硬件开发板是学习驱动的前提。
第二,有了开发板之后,要掌握开发板的基本操作。如开发板的启动,烧写镜像等操作。
第三,能够成功编译开发板的系统源码。在驱动的学习过程中,是避免不了的要对内核的某些功能进行使能、修改设备树添加对应的设备,这些操作都需要进行源码编译。
第四,掌握C语言。驱动程序是由C语言编写的,而且内核源码中绝大多数的代码也都是由C语言编写的,在学习驱动的过程中,或多或少的要对源码进行阅读。所以C语言基础是学习驱动的必要条件之一。
第五,掌握Linux环境搭建以及shell命令的使用。
第六,驱动最后必然要落实到相应的硬件上,所以肯定要对底层电路有所了解,以驱动LED灯为例,必然要了解其控制电路,找到相应的控制引脚,要能读懂简单的硬件原理图。
【最新驱动资料(文档+例程)】
链接 https://pan.baidu.com/s/1M4smUG2vw_hnn0Hye-tkog
提取码:hbh6
【B 站配套视频】
https://b23.tv/XqYa6Hm
【RK3568 购买链接】
https://item.taobao.com/item.htm?spm=a1z10.5-c-s.w4002-2245
2452613.11.2fec74a6elWNeA&id=669939423234