5.2.1.开启驱动开发之路

本节主要是讲述并且实践示范驱动开发的环境搭建、构建内核源码树、常用模块安装卸载命令等

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-- 测试驱动程序;

原文地址:https://www.cnblogs.com/Ocean-Star/p/9250223.html