无设备树platform设备驱动实验:驱动加载测试

一. 简介

前面几篇文章实现了 无设备树的 platform设备驱动实验。文章地址如下:

无设备树platform设备驱动实验:platform设备注册代码实现-CSDN博客

无设备树platform设备驱动实验:platform驱动注册代码框架实现-CSDN博客

无设备树platform设备驱动实验:platform驱动注册代码框架加入Led驱动代码-CSDN博客

经过一步步的实现,完成了针对 Led灯的platform框架(真正的 例如 Led灯的GPIO驱动不会使用 platform平台驱动模式开发,这里只是使用 Led灯进行举例)。

二. 无设备树platform设备驱动实验:驱动功能加载测试

1. 准备应用测试程序

测试代码使用前面点灯实验中使用的测试程序 led_app.c,并将其放在 16_platform工程目录下。

led_app.c文件代码实现如下:

复制代码
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
#include <string.h>

/*
* 打开/关闭 Led灯
* 参数:
* ./app_name /dev/platformled   0  //关闭Led灯
* ./app_name /dev/platformled  1  //打开Led灯
*/
int main(int argc, char* argv[])
{
    int fd = 0,count = 0;
    char * device_name = NULL;
    unsigned int led_value[1] = {0};

    if(argc != 3)
    {
        printf("main's param number error!\n");
        return -1;
    }

    device_name = argv[1];
    fd = open(device_name, O_RDWR);
    if(fd < 0)
    {
        printf("open led device failed!\n");
        return -1;
    }
    
    led_value[0] = atoi(argv[2]); //将字符转为数字
    count = write(fd, led_value, sizeof(led_value));
    if(count < 0)
    {
        printf("write data failed!\n");
        close(fd);

    }

    close(fd);
    return 0;
}

2. 编译测试程序

ubuntu终端进入 16_platform工程目录下,输入如下命令对测试程序进行编译:

复制代码
arm-linux-gnueabihf-gcc led_app.c -o led_app

三. platform驱动加载测试

1. 拷贝驱动模块 platform_leddriver.ko与应用程序 led_app到开发板

注意:开发板的系统是通过 nfs服务挂载方式访问 ubuntu系统的。即 系统文件存放在 ubuntu系统所设置的 nfs目录下!而开发板通过 nfs服务加载系统文件。

将驱动模块与 应用程序拷贝到 nfs服务相关目录下:

复制代码
wangtian@wangtian-virtual-machine:~/zhengdian_Linux/Linux_Drivers/16_platform$ sudo cp platform_leddriver.ko led_app /home/wangtian/linux/nfs_File/rootfs/lib/modules/4.1.15/ -f

2. platfom设备模块与platform驱动模块加载测试

(1) 加载 platform设备模块

开发板上电后,进入 系统 /lib/modules/4.1.15/目录下,加载platform设备模块:

(2) 加载platform驱动模块

加载platform驱动模块:

(3) 测试驱动功能

输入 如下命令测试驱动功能:

这时候可以查看 Led灯是否亮,这里我开发板上的 Led是亮了;

再执行如下命令关闭 Led灯:

这里正常情况下,开发板上的 Led灯会灭。

(4) 分别卸载设备模块与驱动模块

卸载设备模块
卸载驱动模块

可以看出,设备模块与驱动模块都已经正常卸载。

相关推荐
xh didida7 小时前
Linux -- 基础IO
linux·服务器·开发语言·c++
奋斗的阿狸_19867 小时前
ESP32-S3 + ES7210 四通道麦克风录音上传方案
c语言·开发语言·fpga开发
2401_862880828 小时前
iMX6ULL 驱动工程搭建 + LED 灯驱动
c语言·驱动开发·嵌入式硬件
zly35008 小时前
centos7 mount设备挂载 /dev/sda1/硬盘挂载
linux·运维·服务器
工业一体机老司机8 小时前
工业一体机选购后的系统部署:Ubuntu下Docker容器化运行与GPIO配置
linux·ubuntu·docker·人机交互
ACP广源盛139246256738 小时前
Type‑C 扩展坞方案选型笔记|国产 DP1.4 转 HDMI2.0 桥接芯片 GSV2201S @ACP评估
c语言·开发语言·笔记·硬件架构·硬件工程·国产芯片
沐欣工作室_lvyiyi8 小时前
超市智能货架系统设计与实现(论文+源码)
c语言·单片机·课程设计·电子信息工程毕业设计·黑龙江工商学院·广州工商学院·成都工业学院
C++ 老炮儿的技术栈8 小时前
static的作用
c语言·c++·人工智能·单片机·c
哎呦,帅小伙哦8 小时前
进程监控工具——htop
linux·运维·服务器
夏虫不可与之言冰9 小时前
Windows WSL2 (Ubuntu) 搭建 ESP‑IDF 6.1 开发环境全过程演示
linux·windows·ubuntu·esp32·乐鑫科技·乐鑫eim·乐鑫代理商