实验(15)LED字符型驱动设备

实验目的:通过本实验理解内核中如何控制字符型设备

实验步骤:本实验有三大步骤,每个步骤再细分若干小步骤:

第一步:编译内核,编译驱动程序为模块,具体分解为下列5小步:

(1)编写驱动程序,一般需包含以下重要元素:第一,加载函数和卸载函数;第二,file_operations作为设备操作行为的描述;第三,驱动设备的设备名,这个设备名将作为第三大步中,cat /proc/devices后找到设备名,查找设备号,设备号可以先写为0,由内核自动分配

(2)编写Kconfig文件,修改对应的makefile

(3)通过make menuconfig配置内核,选中第(2)小步增加的配置单,然后make SUBDIR=drivers/char/ modules,编译出驱动模块

下面三小步就是实验(10):

(4)根据实验10生成对应的配置文件,如s3c2440_defconfig

(5)然后覆盖.config文件,可以直接将上面一步的配置文件另存,也可以先把上面一步的文件放到内核根目录下,cp s3c2440_defconfig .config

(6)最后make zImage

下面是各个步骤的详细截图:

编写hello驱动:

1.在drivers/char/下新建EmbedSky_hello.c,发现经过之前步骤已有EmbedSky_hello.c生成

故修改代码如下,其余未变。

2.在相同目录下通过“gedit Kconfig”对Kconfig进行修改,添加内容如图:

3.配置内核,通过make menuconfig配置

再通过命令make SUBDIR=drivers/char/ modules,编译出EmbedSky_hello.ko驱动模块,

将其置于drivers/char/下

将上面生成的EmbedSky_hello.ko复制到lib目录下,如下图:

GPIO口控制驱动的编写:

类似于EmbedSky_hello.ko,生成led驱动的应用程序和模块,生成leds及leds.ko文件

第二步:将配置好的内核zImage.bin和Yaffs文件系统烧写到NandFlash中

1.DNW串口复位后进入下载模式3,烧入之前由虚拟机编译产生的zImage.bin

2.烧写成功后进入下载模式6,烧入云盘提供的Yaffs文件系统镜像:

root_qtopia_2.2.0_2.6.30.4_256MB_20130330.bin

下载完成界面:

3.选择下载模式8进入系统并按enter可出现如下界面:

此时开发板的界面:

第三步:通过SecureCRT启动系统:

1.打开secureCRT串口工具,右键sessions选择quick connect配置信息,串口选择开发板USB端口号:

2.连接串口,输入8进入系统并按Enter键,后输入指令cd tmp进入tmp文件夹,再输入rz回车传输文件,传入如下图所示4个文件add并ok:

修改三个文件权限可读可写可修改:

3.输入insmod EmbedSky_hello.ko加载模块;

输入rmmod EmbedSky_hello.ko卸载模块;

输入insmod leds.ko加载模块。

4.输入cat /proc/devices查看设备号并创建设备节点mknod /dev/leds c 252 0

最后输入应用程序命令:./leds led 1 0 ./leds led 1 1 ./leds led 2 1 ./leds led 2 0

./leds led 3 0 ./leds led 3 1 ./leds led 4 1 ./leds led 4 0

输完上述最后一句最后led灯亮情况:

��验��ы)�F

results matching ""

    No results matching ""

    results matching ""

      No results matching ""