Linux中的驱动开发的初学者感受
好多年前北京linux培训,心中就存下这样一个心愿。就是把Linux的驱动开发认清楚。
然而一开始上上这样的开发难度天大了,对着一堆的寄存器苦恼。
于是就从简单的STM8,PIC16FXXX,51等板子入手开发一些单片机类库。一路上上做做小电器,而后从开发STM32下的开发。现在总算可以大跨步的学习Linux的驱动开发了。
虽然Linux的驱动开发并没有想像的这么难,就是要耐心,耐心,再耐心。
51或则STM32等。单片机开发很难接触到
更高层次的系统方面的知识,单片机开发因为工业上成本控制的缘由,基本能跑裸机就裸机,上系统的,通常都是项目比较庞大,在通讯领域的模组通常还会用到RTOS。
例如UCOS、FreeRTOS等等,这种
操作系统都是一个kernel,假如须要网路、文件系统、GUI等这种就须要开发者自行移植。而
移植又是十分苦闷的一件事情,但是移植完成之后的稳定性也难以保证。虽然移植成功之后后
续的开发工作也比较冗长,由于不同的组件其API操作函数都不同。
然而FREERTOS等操作系统相比Liunx开支少多了。多以对资源不丰富的硬件设备,还是须要用到FREERTOS的。
Linux就是这样一个系统:具有统一的标
准;提供建立的多任务管理、存储管理、设备管理、文件管理和网路等。
强烈建议在学习嵌入式Linux驱动开发之前一定要学一下STM32这些Cortex-M内核的MCU,由于STM32这样的MCU其内部资源基本和可以运行Linux的CPU差不多,假如会STM32的话上手Linux驱动开发都会容易好多。
STM32学习者顺利的转到Linux驱动
开发的学习路径:
1、选取合适的CPU
一款外设和STM3232HH7这样的MCU差不多的
CPU就十分适宜Linux入门,三星的2440就十分合适,而且2440已经停产了,学了之后工作上肯定又用不到了,又得学习其他的CPU,有点浪费时间。作者花了不少时间总算找到了一款合适的CPU,那就是NXP的I.MX6UL!
2、开发环境讲解
是嵌入式Linux驱动开发须要的主机是Linux平台的,也就是你必须先在自己的笔记本上安装
Linux系统,Linux系统发行版有Ubuntu、CentOS、Fdeora、Debian等等linux驱动开发详解,选择一种一款如Ubuntu操作系统就可。
3、合理的裸机类库
Linux驱动开发特别庞大、繁琐。要想进行Linux驱动开发,必需要先移植Uboot、然后移植Linux系统和根文件系统到你的开发平台上。而Uboot又是一个超大的裸机综合类库,因而假如你没有学习过裸机类库这么Uboot移植将会有点困难,尤其是当要更改Uboot代码的时侯。
4、Uboot、Linux和根文件系统移植
学习完裸机类库之后就是Linux驱动开发了,并且在进行Linux驱动开发之前要先在使用
的开发板平台上移植好Uboot,Linux和根文件系统。这是Linux驱动开发的第一个绊脚石。
5、嵌入式Linux驱动开发
当我们把Uboot,Linux和根文件系统都在开发板上移植好了之后就可以开始Linux驱动
开发了。Linux驱动有三大类:字符设备驱动、块设备驱动和网路设备驱动。
其实,学习是一件痛楚地事情,尤其是找不到学习路径地时侯linux 虚拟主机,这时侯有三点个人感觉很重要:
1、做好学习的规划
2、构建一个学习环境linux驱动开发详解,软件开发环境+硬件(开发板)+学习资料。
3、做好阶段性的过程总结。