在阅读本书,了解驱动开发前,应该对操作系统要有一定的基础知识储备,linux系统差不多就相当于Windows系统:
Windows系统的运行流程为:BIOS===》Windows===》C盘===》APP
Linux系统的运行流程为:bootloader===》Linux内核===》根文件系统rootfs===》APP
而我们所学的驱动开发即Linux内核的内容之一,内核本身就有了许多驱动程序,我们要学的无非是我们想要实现某种功能,且需要加载(probe)可能甚至需要编译进内核,而应用程序会在根文件中。驱动程序就可以理解为应用程序与硬件资源之间的桥梁,应用程序不能直接操作硬件资源,这是出于安全着想的。所以这就要求我们要对软件编程和硬件电路知识都有一定要求,这也是嵌入式的要求。
进行阅读书籍进行驱动开发前,要学会linux的一些基本常用命令,搭建好开发环境等,能够大大提高学习效率,不管是Ubuntu,红帽等其实常用命令都一样,学会其一就好,但是推荐Ubuntu,毕竟和书本上推荐的一致,可以尽量少一些问题。
会了这些还需要学会如何进行linux的系统移植,才能够进行驱动和与应用程序开发,这一部分原子也有教程的,这要展开说就太多了。
最后便是搭建实验平台,很多教程都会有教程,但是基本都是在电脑虚拟机的linux系统中进行开发后,再挂载根文件系统,实现快速开发与测试,我有个建议:直接使用window的vscode进行远程开发,使用网线连接即可,虚拟机只需挂着就行了。而且Windows的输入习惯比较适应。
因为我之前看过原子的教程,也玩过157开发板,所以有点经验,但是不多。就是:快速入门再精通,祝大家学习冲高高!!
|