当前位置: 首页 > news >正文

Linux 驱动编写框架 并编译导入开发板

向内核新加文件:例如 demo1.c
1. 创建并编辑新的文件
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/types.h>
#include <linux/fs.h>
#include <linux/module.h>
#include <linux/kdev_t.h>
#include <linux/cdev.h>#define MAJOR_NUM 255
#define MINOR_NUM 0
#define DEV_NAME "demo1"static int open(struct inode * node, struct file * file)
{printk("demo open...\n");return 0;
}static ssize_t read(struct file * file, char __user * buf, size_t len, loff_t * offset)
{printk("demo read...\n");return 0;
}static ssize_t write(struct file * file, const char __user * buf, size_t len, loff_t * offset)
{printk("demo write...\n");return 0;
}static int close(struct inode * node, struct file * file)
{printk("demo close...\n");return 0;
}static dev_t dev_num;
static struct file_operations fops = 
{.owner = THIS_MODULE,.open = open,.read = read,.write = write,.release = close
};
static struct cdev dev;static int __init demo_init(void)
{dev_num = MKDEV(MAJOR_NUM, MINOR_NUM);cdev_init(&dev, &fops);cdev_add(&dev, dev_num, 1);register_chrdev_region(dev_num, 1, DEV_NAME);printk("demo_init  ##########################\n");return 0;
}static void __exit demo_exit(void)
{unregister_chrdev_region(dev_num, 1);cdev_del(&dev);printk("demo_exit  ##########################\n");
}module_init(demo_init);
module_exit(demo_exit);
2. 修改同层目录下的Makefile,增加一句
obj-$(CONFIG_XXX) += xxx.o
3. 修改同层目录下的Kconfig 增加一个新的配置
4. make menuconfig
5. make uImage
此时生成内核,按照我之前的编译文章实现板子启动Linux
6.手动创建设备节点:
mknod /dev/demo1 c 255 0

http://www.mrgr.cn/news/25657.html

相关文章:

  • Leetcode 第 138 场双周赛题解
  • 分类预测|基于改进的灰狼IGWO优化支持向量机SVM的数据分类预测matlab程序 改进策略:Cat混沌与高斯变异
  • 阿里达摩院:FunASR - onnxruntime 部署
  • 单链表的建立
  • Httplib库源码粗度
  • 三折手机可能面临的问题
  • 如何在 Vue 3 中使用 Element Plus
  • 开源免费的工贸一体行业ERP管理系统
  • 【学习笔记】手写 Tomcat 三
  • android 14.0 USB连接模式默认设为MTP
  • MySql:赋权限
  • OLED显示屏应用(STM32)
  • 从0到1!本地部署一个大语言模型!完整方法!
  • 英飞凌motor电机方案
  • velero v1.14.1迁移kubernetes集群
  • B2064 斐波那契数列
  • 【oj刷题】滑动窗口篇:滑动窗口的应用场景和注意事项
  • 【ShuQiHere】深入浅出栈(Stack)数据结构:从基本操作到实现
  • b√最大矩阵和
  • 【python】OpenCV—Augmented Reality Using Aruco Markers