蚂蚁S9矿板PS 将驱动编译到内核

mydrv.c

这个驱动需要匹配到设备树才会加载

c 复制代码
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/of.h>

static int my_probe(struct platform_device *pdev)
{
    printk(KERN_INFO "mydrv: probe success!\n");
    return 0;
}

static int my_remove(struct platform_device *pdev)
{
    printk(KERN_INFO "mydrv: remove\n");
    return 0;
}

/* 设备树匹配表 */
static const struct of_device_id my_of_match[] = {
    { .compatible = "ming,mydrv" },
    { }
};

MODULE_DEVICE_TABLE(of, my_of_match);

/* Platform Driver */
static struct platform_driver my_driver = {
    .probe  = my_probe,
    .remove = my_remove,
    .driver = {
        .name = "mydrv",
        .of_match_table = my_of_match,
    },
};

module_platform_driver(my_driver);

MODULE_LICENSE("GPL");
MODULE_AUTHOR("ming");
MODULE_DESCRIPTION("Minimal Platform Driver");

my_key.c

这个驱动没用probe ,不需要匹配设备树

c 复制代码
#include <linux/types.h>
#include <linux/kernel.h>
#include <linux/delay.h>
#include <linux/ide.h>
#include <linux/init.h>
#include <linux/module.h>

static int __init mykey_init(void)
{
    printk("============= do mykey_init===================");
    return 0;
}

static void __exit mykey_exit(void)
{
 
}

/* 驱动模块入口和出口函数注册 */
module_init(mykey_init);
module_exit(mykey_exit);
MODULE_AUTHOR("mykey");
MODULE_DESCRIPTION("ming Key Driver");
MODULE_LICENSE("GPL");

拷贝驱动源码

bash 复制代码
将 my_key.c 拷贝到
linux-xlnx-xlnx_rebase_v5.4_2020.2/drivers/char/

修改MakeFile

linux-xlnx-xlnx_rebase_v5.4_2020.2/drivers/char/Makefile的最下方追加

bash 复制代码
obj-y		+= my_key.o

测试

bash 复制代码
zynq-pinctrl 700.pinctrl: zynq pinctrl initialized
dma-pl330 f8003000.dmac: Loaded driver for PL330 DMAC-241330
dma-pl330 f8003000.dmac:        DBUFF-128x8bytes Num_Chans-8 Num_Peri-4 Num_Events-16
============= do mykey_init===================
brd: module loaded
loop: module loaded
相关推荐
外收内放11 小时前
面向对象高级(实战案例)
开发语言·python·学习
薛定e的猫咪12 小时前
(ICLR 2020)MAML 靠的不是快速学习,而是特征复用
人工智能·深度学习·学习·算法·机器学习
薛定e的猫咪12 小时前
(ICLR 2026)DF-META:面向 FJSP 的无导数元学习实例自适应调度
人工智能·深度学习·学习·算法·机器学习
别动我齐刘海16 小时前
机器人 C++ / 系统联调补强2——异常处理、Protobuf
linux·c++·人工智能·学习·算法·机器学习·机器人
一直C16 小时前
嵌入式 Linux 驱动开发学习笔记:内核定时器、platform 总线与 I²C 驱动
linux·驱动开发·嵌入式硬件·学习·imx6ull
承渊政道16 小时前
Linux网络学习【传输层协议UDP】
linux·网络·网络协议·学习·ubuntu·udp
andrsted16 小时前
练题簿免费刷题小程序:和学习搭子共用一份题库,一起刷题复习
学习·面试·微信小程序·小程序·学习方法·刷题
fqbqrr17 小时前
2610学习,ahk学习技巧
学习
fengci.17 小时前
BUUCTF(困难部分)
android·开发语言·前端·学习·php
有Li17 小时前
基于超高分辨率CT智能分割与测量的单侧梅尼埃病内耳解剖特征定量研究文献速递/医学智能体前沿
大数据·人工智能·学习·文献·医学生