本节主要是讲述并且实践示范驱动开发的环境搭建、构建内核源码树、常用模块安装卸载命令等
5.2.1.1、驱动开发的准备工作
* 正常运行linux系统的开发板。要求开发板中的linux的zImage必须是自己编译的,不能是别人编译的。
* 经过配置编译的内核源码树
* nfs挂载的rootfs
主机ubuntu中必须搭建一个nfs服务器。
5.2.1.2、驱动开发的步骤
* 驱动源码编写,makefile编写,编译
* insmod装载模块,测试,rmmod卸载
5.2.1.3、实践
3.1 编译得到内核源码树和zImage(可以fastboot烧录zImage)
F:\朱有鹏嵌入式物联网\课件&代码\课件\2.uboot和linux内核移植\2.15.内核的配置和编译原理\x210kernel.tar.bz2
cd /root/driver/kernel
配置内核支持nfs方式启动(开发板中运行kernel做nfs客户端)
make distclean
make x210ii_qt_defconfig
make menuconfig
Networking support
Networking options
[] TCP/IP networking
[]IP: kernel level autoconfiguration
[] IP: DHCP support
[] IP: BOOTP support
File systems --->
Network File Systems --->
<> NFS client support
[] NFS client support for NFS version 3
[] NFS client support for the NFSv3 ACL protocol extension
[] NFS client support for NFS version 4 (EXPERIMENTAL)
[ ] NFS client support for NFSv4.1 (DEVELOPER ONLY)
[*] Root file system on NFS (关键的)
make -j2
cp arch/arm/boot/zImage /tftpboot/ -f
3.2 fastboot/tftp烧录zImage到开发板
编写驱动分下面几步:
a -- 查看原理图、数据手册,了解设备的操作方法;
b -- 在内核中找到相近的驱动程序,以它为模板进行开发,有时候需要从零开始;
c -- 实现驱动程序的初始化:比如向内核注册这个驱动程序,这样应用程序传入文件名,内核才能找到相应的驱动程序;
d -- 设计所要实现的操作,比如 open、close、read、write 等函数;
e -- 实现中断服务(中断不是每个设备驱动所必须的);
f -- 编译该驱动程序到内核中,或者用 insmod 命令加载;
g-- 测试驱动程序;