为了用内核驱动程序点亮一个LED灯,真是费尽周折,参考了韦东山的《嵌入式linux驱动开发完全手册》(以下简称《完全手册》)和网上很多人的blog,最终在@Carlos·Wei的指引下,终于点亮了LED灯,见下图!
其中的一些弯路主要是没严格按照韦东山的linux版本和其编译器来编译内核和驱动程序,二来是因为韦东山这本书当时写的不是那么详细,在理解上有些许偏差。
本文地址:https://blog.csdn.net/multimicro/article/details/82288373
作者:multimicro
下面在写这篇博客时列出我的开发环境等信息
开发环境
- linux Ubuntu 16.04
- arm-linux-gcc-3.4.5-glibc-2.3.6 版本(用《完全手册》指定的编译器,我当时用的arm-linux-gcc4.4.3版本,结果编译出的程序在JZ2440开发板上无法运行)
- 开发板中u-boot为板载资料提供
- 开发板中linux内核版本为linux-2.6.22.6
- 开发板中yaffs文件系统为板载资料提供
P.S. 为了获取图片,我没在同一个内核文件中操作,所以,读者在操作使用时,一定要在同一个内核文件中!
** 实测Ubuntu 18.04 LTS同样可用,在上面一定要配置好编译器! **
#一、点亮一个LED灯需要做的准备工作
首先引用宋宝华《linux设备驱动开发详解》中P66的一段话
在linux内核中增加程序需要完成以下3项工作。
- 将编写的源代码复制到linux内核源代码的相应目录中。
- 在目录的Kconfig文件中增加关于新源代码对应项目的编译配置选项。
- 在目录的Makefile文件中增加对新源代码的编译条目。
确保按照韦东山的那个PDF对内核文件进行打补丁在进行后续工作哦!
先不要执行下面图片中的make uImage
当然你要是执行了,缺少那个mkimage文件,就要按照图片中的要求操作了哦